MySQL主从 问题
     分类:数据库     有: 1 条评论

MySQL主从 问题

     分类:数据库     有: 1 条评论

报错、问题

主从不同步

没有开启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



MySQL级联复制问题

https://www.cnblogs.com/itcomputer/articles/5004570.html

(●゚ω゚●)
  1. 没事过来学习一下。感谢博主的分享

    Reply