SaltStack常用组件使用 SaltStack配置文件说明 轻量级DNS、DHCP服务软件DNSMASQ 千万级PV(日)的移动应用架构如何实现 高效运维最佳实践-运维自动化之殇 Ubuntu 14.04 Linux如何配置静态IP地址和DNS服务器 ELK 常见错误与解决办法 Elasticsearch 集群配置管理常用操作 常用数字证书格式相互转换-OpenSSL/Keytool/Jks2pfx ELK 综合日志归档分析系统(2)-Logstash安装配置 Elasticsearch之Shield认证与权限管理 ELK 综合日志归档分析系统(1)-Elasticsearch-Redis安装配置 Redmine 3.2 安装配置指南 CentOS6 大型web系统数据缓存设计 Redis 集群方案 Linux 内核TCP优化详解 SaltStack初始化安装配置 OpenLDAP常用操作 OpenLDAP统一身份认证 [CentOS6/7] 构建Linux Skype Message消息推送API服务(Zabbix集成告警) Tomcat 生产服务器性能优化 Zabbix结合iptables监控网络流量 Linux操作系统环境配置与优先级问题 深入 NGINX: 我们如何设计性能和扩展 Windows SQL Server 性能计数器详细说明 Windows性能计数器说明 Ubuntu安装openntpd报错:Starting openntpd: /etc/openntpd/ntpd.conf: Permission denied locale: Cannot set LC_ALL to default locale: No such file or directory OpenSSL拆解p12证书公约和私钥 Linux sar 统计系统性能(网卡、内存和交换空间、CPU资源等) Linux Shell /dev/null 2>&1 含义 Windows 2003操作系统网络不通 构建私有yum安装源镜像站点(openstack) CentOS6/RedHat6新增网卡识别问题 Ubuntu 14.04 Server优化与使用问题解决 Redhat/CentOS6系统使用ntfs-3g挂载NTFS分区 Linux GPT挂载超过2TB磁盘 Linux系统性能优化、测试和监控工具梳理 修复WIN2003远程桌面服务无法访问 解决CentOS“Zabbix discoverer processes 75% busy”的问题 REHL/CentOS安装phpMyadmin

CentOS7.0/RHEL7.0Linux下MySQL5.6主从复制配置

2014年08月10日

MySQL_Master-Slave-Replication

今天折腾了一下CentOS 7.0 下MySQL 5.6主从复制技术,原理就不多说了。这里主要看我配置的过程。

一、配置MySQL运行环境

master1:192.168.1.25 CENTOS7.0 MySQL5.6.20
slave1:192.168.1.26 CENTOS7.0 MySQL5.6.20

安装MySQL数据库

wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum update
yum install mysql-community-server

配置开机启动

systemctl enable mysqld.service

配置防火墙,Centos7.0防火墙默认配置工具是firewalld,因此,可以通过firewall-cmd进行配置

firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl restart firewalld.service

查看防火墙配置是否生效

iptables -L |grep mysql
ACCEPT tcp -- anywhere anywhere tcp dpt:mysql ctstate NEW

二、配置Master1 (192.168.1.25)

Centos7.0 RPM安装MySQL默认配置文件在 /etc/my.cnf,因此:

vim /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=25
#enable log_bin
log_bin=mysql-bin
replicate-wild-ignore-table=mysql.%
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

重新启动MySQL服务

systemctl restart mysqld.service

接下来创建同步复制的用户及授权

mysql>grant replication slave,replication client on *.* to 'repl'@192.168.1.26 identified by '123456';
mysql>flush privileges;
mysql> show master status;
+--------------------+----------+-----------------+------------------+----------------+
|          File                 | Position  | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+--------------------+----------+-----------------+------------------+----------------+
| mysql-bin.000009   |   319      |     onethink       |                                |                          |
+--------------------+----------+-----------------+------------------+----------------+
1 row in set (0.00 sec)

锁定数据库表,禁止写入数据

mysql> flush tables with read lock;
Query OK, 0 rows affected (2.53 sec)

备份需要同步的MySQL数据库,导出成SQL脚本

mysqldump  -p3306 -uroot -p   onethink > /tmp/onethink.sql

解除MySQL数据库表锁定

mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

三、配置Slave1 (192.168.1.26)

编辑my.cnf

加入下面代码

server-id=26
replicate-wild-ignore-table=mysql.%

重新启动MySQL服务

systemctl restart mysqld.service

登录MySQL数据库

stop slave;
CHANGE MASTER TO MASTER_HOST = '192.168.1.25', MASTER_USER = 'repl', MASTER_PASSWORD = '123456', MASTER_LOG_FILE = 'mysql-bin.000009', MASTER_LOG_POS = 319;
start slave;

查看slave状态,主要查看下面两个参数

show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

由于我的虚拟机是直接复制的,Slave_IO_Running:No,通过查看/var/log/mysqld.log,发现如下错误:

master and slave have equal MySQL server UUIDs

通过排查,server_id是正确的,可能是由于复制导致MySQL UUID重复,将MySQL服务卸载重新安装即可。

四、my.cnf配置参数说明

#启用从库日志,这样可以进行链式复制
log-slave-updates
#从库是否只读,0表示可读写,1表示只读
read-only=1

#只复制某些表(可用匹配符)
replicate-wild-do-table=dbname.tablename%
#只复制某个库
replicate-do-db=dbname

#不复制某个表
replicate-ignore-table=dbname.tablename
#不复制某些表
replicate-wild-ignore-table=dbname.tablename%
#不复制某数据库所有表,通过真实修改的表进行过滤,更为准确
replicate-wild-ignore-table=dbname.%
#不复制某个库,使用use db来确定是否过滤
replicate-ignore-db=dbname

#复制完的sql语句是否立即从中继日志中清除,1表示立即清除
relay-log-purge=1
#从服务器主机,用于show slave hosts生成从库清单
report-host=hostname

转载请注明:自动化运维 » CentOS7.0/RHEL7.0Linux下MySQL5.6主从复制配置