报错、问题
主从不同步
没有开启Binary log
本例中,mysql的安装位置是:/usr/local/mysql/ ;如果不是新搭建的环境,则在从服务器上登陆MySQL运行show slave status \G
可以看到:Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Binary log is not open'
1.检查在从服务器能否用你指定的账户登录主服务器,确保有权限。
2.在主服务器上修改MySQL配置文件,开启log-bin=/usr/local/mysql/data/mysql-bin
3.删掉:/usr/local/mysql/data/mysql-bin.index(原来是同步的,某次修改好就出问题了,不删掉此文件重启MySQL会失败)
4.重启MySQL,进入MySQL,flush logs;show master status;
查看状态。记录日志名和偏移量
5.flush tables with read lock;
锁表,停止处理请求。
6.在从服务器登陆MySQL,
slave stop;
change master to master_host='192.168.10.92', master_Port=50100, master_user='user_nameXXX', master_password='123456XXX', master_log_file='mysql-bin.000001日志名', master_log_pos=6485243偏移量;
slave start;
SELECT MASTER_POS_WAIT('mysql-bin.000001日志名', 6485243偏移量); #可以不执行,某些时候需要;这条语句用于从主服务器同步到从服务器。
show slave status \G
7.在主服务器上解除锁表unlock tables;
参考:
MySQL 二进制日志(Binary Log):http://www.linuxidc.com/Linux/2014-10/107664.htm
mysql 数据同步 出现Slave_IO_Running:No问题的解决方法小结:http://www.jb51.net/article/27220.htm
MySQL主从失败 错误Got fatal error 1236:http://navyaijm.blog.51cto.com/4647068/1233404
http://www.cnblogs.com/charles1ee/p/6364448.html
Mysql配置为Master/Slave的常用维护命令:http://blog.csdn.net/wl_fln/article/details/7004980
MYSQL主、从服务器配置及错误处理:http://blog.csdn.net/ty_soft/article/details/7259154
mysql主从数据配置:http://blog.csdn.net/doupei2006/article/details/8004781
mysql模式:master/slave:http://blog.csdn.net/wyzxg/article/details/7333967
从服务器同步数比主服务器差很远
此种情况适用于有Redis做缓存,或者数据允许丢失的情况,大多数情况,主服务器是不允许MySQL重启的。
1.登陆主服务器
rm /usr/local/mysql/data/mysql-bin.index #删掉mysql-bin.index文件
systemctl resatrt mysql #重启MySQL
# 登陆MySQL
flush logs; #刷新二进制日志
flush tables with read lock; #锁表,停止处理请求。
show master status; #查看状态。记录日志名和偏移量
2.登陆从服务器
rm /usr/local/mysql/data/mysql-bin.index #删掉mysql-bin.index文件
systemctl resatrt mysql #重启MySQL
# 登陆MySQL
slave stop;
change master to master_host='192.168.10.92', master_Port=50100, master_user='user_nameXXX', master_password='123456XXX', master_log_file='mysql-bin.000001日志名', master_log_pos=6485243偏移量;
slave start;
SELECT MASTER_POS_WAIT('mysql-bin.000001日志名', 6485243偏移量); #可以不执行,某些时候需要;这条语句用于从主服务器同步到从服务器。
show slave status \G
3.在主服务器上解除锁表unlock tables;
这时两边的数据应该就是最新的了。
大量“hostname”-relay-bin.000xxx文件堆积
突然发现磁盘挤爆了;进入mysql的data目录,发现有大量“hostname”-relay-bin.000xxx文件堆积,有一个“hostname”-relay-bin.index和relay-log.info文件;文件一般是在mysql slave实例上存在。主要用途是记录主从同步的信息,正常情况下会自动删除的。
解决:
登陆mysql master数据库,执行:
reset master;
reset slave;
登陆mysql slave数据库,进入MySQL的data目录,删除“hostname”-relay-bin.index和relay-log.info和所有的“hostname”-relay-bin.000xxx文件;然后重启数据库(从数据库)systemctl restart mysqld
,现在重新生成了上述3个文件,“hostname”-relay-bin.000xxx文件占用空间也不会增大,也不会生成新的“hostname”-relay-bin.000xxx文件,说明恢复正常了。
如果还是会生成新的“hostname”-relay-bin.000xxx文件,就登陆主数据库,再次执行:reset master;reset slave;
并重启主数据库systemctl restart mysqld
,再删掉从数据库新生成的文件,重启数据库就行了。
参考:https://yq.aliyun.com/articles/46075
评论区