为啥mysql主从复制,从刚开始能复制一会就不行了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥mysql主从复制,从刚开始能复制一会就不行了相关的知识,希望对你有一定的参考价值。

1. 在有主键或者唯一键的情况下,Slave 重放 Binlog 并不会去比较检索到的记录的每一列是否和BI相同,因此如果 Slave 和 Master 存在数据不一致,会直接覆盖 Slave 的数据而不会报错。
2. 在没有主键或者唯一键的情况下,Hash Scan / Hash Scan Over Index 的执行效率 在理论上分析高于 Table Scan 和Index Scan 。
3. 在没有主键或者唯一键的情况下,Slave 选择的二级索引是第一个所有的列都在 BI 中存在的索引,不一定是 Master 执行计划所选择的索引。
参考技术A 1,通过mysqldump进行全备份,使主从数据同步,slave重新changemaster到最新的pos2,你使用php写数据的时候是否有报错,开启下通用日志,监测下slave是否有是接收到这个insert语句本回答被提问者采纳 参考技术B 主从复制卡住的是时候,看看show slave status\G;
是不是卡在了报错上,比如主机插入一张表的数据库,从库上那张表没有被复制。
可以在my.cnf里设置忽略错误级别:slave-skip-errors=all

MySQL主从延时复制

    MySQL的主从复制是实现MySQL大规模集群的基础,其在日常生产环境中被广泛的被应用,而在MySQL5.6开始对MySQL的底层代码不断的重构完善后在MySQL的主从复制取得极大的进步,且在5.7版本引入主从多线程复制(http://blog.51cto.com/jim123/1961241),而在5.6版本开始MySQL的主从复制就支持slave上延时复制master而不需要借助第三方工具实现,主从复制延时可以在master误删除数据后在slave中延时一定时间后快速找回误删除数据,至于设置也很简单就是在从库设置连接主库时添加一个参数即可:

CHANGE MASTER TO MASTER_DELAY = 3600;
#这里的单位是秒3600秒即一个小时

此时在开启slave,此时再看下slave的状态,会有2个参数:

SQL_Delay: 显示已设置的主备延迟的时间,单位秒;
SQL_Remaining_Delay: 显示剩余的主备延迟时间,单位秒;

技术分享图片

以上是关于为啥mysql主从复制,从刚开始能复制一会就不行了的主要内容,如果未能解决你的问题,请参考以下文章

MySQL主从复制实现

mysql 主从复制重新启用 需要注意啥

MySQL主从延时复制

mysql主从复制,要主库和从库表结构一致才能复制吗

262期面试官:谈谈MySQL主从复制的原理

一文读懂mysql主从复制机制