MySQL主从同步原理
Posted pluto2charon
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从同步原理相关的知识,希望对你有一定的参考价值。
mysql主从复制用途
实时灾备,用于故障切换
读写分离,提供查询服务
备份,避免影响业务
主从部署必要条件
主库开启binlo日志(设置log-bin参数)
主从server-id不同
从库可以连同主库
主从复制原理图
从库的io线程
去请求主库的bin-log二进制,并将得到的binlog日志写到relay log(中继日志中)
主库的dump线程
用来给从库的I/O线程传送binlog二进制日志;
从库的SQL线程
会读取从库中得relay-log文件的日志,并且解析成具体的操作进行持久化,实现主从同步
该架构存在的问题
主库宕机可能存在数据的丢失;当然从库也可能宕机,我们可以部署双从; 从库只有一个SQL线程,当用户操作过多时。
主库生成大量的bin--log二进制日志,从库可能帮不过来
我们使用的是MHA软件
MHA可以运行在每台mysql服务器上,当MHA检测到master出现故障时,
会将记录到最新数据的slave提升为新的master。 并将其他所有的slave重新指向新的master。
整个故障转移对程序来说是完全透明的
MHA缺点
在MHA自动切换故障的过程中,MHA试图向宕机的主服务器上记录二进制日志。
最大程度的保证数据不丢失,但这并不总是可行的。 例如,如果主服务器硬件故障或无法通过ssh访问。
MHA没法保存二进制日志,只进行故障转移而丢失了最新的数据。
半同步复制
mysql半同步复制可以大大降低数据丢失的,MHA可以与半同步复制结合起来。
如果一台slave服务器接收到了最新的二进制日志。
HMA可以将最新的二进制日志同步给其他的slave。
因此可以保证所有节点数据的一致性
MHA工作原理总结为以下几条
•从宕机的master服务器上保存二进制事件
•识别含有最新数据的slave
•提升一个slave为新的master
•将其他的slave连接到新的maser进行复制
以上是关于MySQL主从同步原理的主要内容,如果未能解决你的问题,请参考以下文章