一、Master主服务器配置(192.168.30.201)
找到mysql配置文件my.cnf在末尾加上:
find / -name my.cnf
log-bin=mysql-bin #slave会基于此log-bin来做replication
server-id=1 #master的标示
innodb_flush_log_at_trx_commit=1
sync_binlog=1
重启
systemctl restart mysqld
mysql -u root -p
mysql>grant replication slave on . to ‘admin’ @’192.168.30.%’ identified by ‘Abc123///’; #创建从服务器用到的账户和权限:
重启
systemctl restart mysqld
mysql -u root -p
show master status;
二、Slave从服务器配置(192.168.30.202)
找到mysql配置文件my.cnf在末尾加上:
server-id=2 #slave的标示 ,192.168.30.202配置
Slave从服务器,连接Master主服务器:
change master to master_host='192.168.30.201',master_port=3306,master_user='admin',master_password='Abc123///',master_log_file='master-bin.000001',master_log_pos=351;
备注:master_host对应主服务器的IP地址,master_port对应主服务器的端口,master_log_file对应show master status显示的File列:master-bin.000001,master_log_pos对应Position列:351,否则有可能出现同步失败。
重启
systemctl restart mysqld
start slave;
show slave status\G;
备注:Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。
同步成功。
遇到问题:Slave_IO_Running为 NO
这时可通过以下方法来处理:
方法一:(重置slave)
slave stop;
reset slave;
slave start;
方法二:(重设同步日志文件及位置)
1、查看slave状态
show slave status\G
Master_Log_File: mysql-bin.000040
Read_Master_Log_Pos: 4
Relay_Log_File: mysqld-relay-bin.000001
Relay_Log_Pos: 98
Relay_Master_Log_File: mysql-bin.000040
Slave_IO_Running: No
Slave_SQL_Running: Yes
目前已同步到mysql-bin.000040这个日志文件,98的位置;
2、暂停slave
slave stop;
3、修改同步日志文件及位置;
日志文件及位置都改小;(之前是同步正常,最近才出现问题的,一般改小一个值就好)
如:
change master to master_log_file=’mysql-bin.000039’, master_log_pos=1;
4、启动slave
slave start;
5、再次确认slave状态
show slave status\G
这时会发现:
Slave_IO_Running: Yes
且下述两个值一直在不断变化中:
Relay_Log_Pos: 998875
Relay_Master_Log_File: mysql-bin.000048
如果Slave_IO_Running: No,则继续第2、3、4步,把3步中的值再改小;如此反复。。。