CentOS7搭建MySQL5.7主从复制
MySQL主从复制的优点:
1、 如果主服务器出现问题, 可以快速切换到从服务器提供的服务,保证高可用性
2、 可以在从服务器上执行查询操作, 降低主服务器的访问压力
3、 可以在从服务器上执行备份, 以避免备份期间影响主服务器的服务
注意事项:
1、server-id必须唯一,一般使用ip的后三位
2、从库Slave_IO_Running:NO 可能原因:帐号无权限操作
3、Can't execute the query because you have a conflicting read lock,解锁下即可 unlock tables;
4、一般只有更新不频繁的数据或者对实时性要求不高的数据可以通过从服务器查询, 实时性要求高的数据仍然需要从主数据库获得
5、修改完主从服务器的配置需要重启mysql:service mysqld restart
主机A: 192.168.230.129
从机B: 192.168.230.130
请先分别安装mysql,版本需一致,装了即可跳过
yum install mysql mysql-server #输入y即可自动安装,直到安装完成
1、先登录主机 A,在主服务器上,设置一个从数据库的账户,使用REPLICATION SLAVE(从复制)赋予权限,如:
mysql>GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.10.124' IDENTIFIED BY '123456'
赋予从机权限,有多台从机,就执行多次。
mysql>flush privileges;
编辑/etc/my.cnf文件:
log-bin = mysql-bin #slave会基于此log-bin来做replication server-id = 129 #master的标示,唯一ID,一般采用IP最后一段 innodb_flush_log_at_trx_commit = 1 #默认为1,事务提交,日志缓冲刷盘 sync_binlog = 1 #当每进行n次事务提交之后刷盘,安全但性能低
Slave配置:
编辑/etc/my.cnf文件:
server-id = 130
重启MySQL服务:
systemctl restart mysqld.service
在Master服务器上创建备份账号:
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.%.%' IDENTIFIED BY '密码';
在Master库中查看master状态:
show master status;
查看结果:
配置从库:进入mysql,
stop slave; change master to master_user='backup',master_password='密码',master_host='192.168.1.129',master_port=3306,master_log_file='mysql-bin.000003',master_log_pos=154; start slave;
参数说明:
master_user:Master服务器上创建的备份账号名称
master_password:备份账号密码
master_host:Master服务器IP
master_log_file:查询Master服务器状态得到的File列的值
master_log_pos:查询Master服务器状态得到的Position列的值
在Slave库查询复制状态:
show slave status\G;
如果Slave_IO及Slave_SQL的状态为Yes表明同步成功。
最后,如果Master重启后Slave也必须重启,否则会出现同步失败。