MySql主从同步原理

   其实数据库的主从同步,就是为了要保证多个数据库之间的数据保持一致。最简

单的方式就是使用数据库的导入导出工具,定时将主库的数据导出,再导入到从库

当中。这是一种很常见,也很简单易行的数据库集群方式。也有很多的工具帮助我

们来做这些事情。但是这种方式进行数据同步的实时性比较差。

而如果要保证数据能够实时同步,对于MySQL,通常就要用到他自身提供的一套

通过Binlog日志在多个MySQL服务之间进行同步的集群方案。基于这种集群方案,

一方面可以提高数据的安全性,另外也可以以此为基础,提供读写分离、故障转移

等其他高级的功能。

即在主库上打开Binlog日志,记录对数据的每一步操作。然后在从库上打开

RelayLog日志,用来记录跟主库一样的Binlog日志,并将RelayLog中的操作日志在

自己数据库中进行重演。这样就能够更加实时的保证主库与从库的数据一致。

MySQL的Binlog默认是不打开的。

   它的实现过程是在从库上启动一系列IO线程,负责与主库建立TCP连接,请求主

库在写入Binlog日志时,也往从库传输一份。这时,主库上会有一个IO Dump线

程,负责将Binlog日志通过这些TCP连接传输给从库的IO线程。而从库为了保证日

志接收的稳定性,并不会立即重演Binlog数据操作,而是先将接收到的Binlog日志

写入到自己的RelayLog日志当中。然后再异步的重演RelayLog中的数据操作。

MySQL的BinLog日志能够比较实时的记录主库上的所有日志操作,因此他也被

很多其他工具用来实时监控MySQL的数据变化。例如Canal框架,可以模拟一个

slave节点,同步MySQL的Binlog,然后将具体的数据操作按照定制的逻辑进行转

发。例如转发到Redis实现缓存一致,转发到Kafka实现数据实时流转等。而

ClickHouse也支持将自己模拟成一个MySQL的从节点,接收MySQL的Binlog日

志,实时同步MySQL的数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值