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
    评论
MySQL主从同步是一种数据备份和复制机制。它允许从一个主要的MySQL服务器复制一个或多个数据库到一个或多个备用服务器,称为“从MySQL服务器”,以便在主MySQL服务器出现故障时保护数据。主从复制需要在主服务器上配置二进制日志文件,并在从服务器上启用复制进程以读取和重演这些日志文件。 MySQL主从同步原理是主服务器上的日志文件记录插入,更新或删除操作,从服务器通过连接到主服务器并请求这些日志文件,并将这些操作重新应用到从服务器上的数据库。主从同步有两种复制方式:基于语句的复制和基于行的复制。基于语句的复制是通过将主服务器上的SQL语句记录到二进制日志文件中来实现的。对于每个在主数据库上执行的SQL语句,从数据库执行相同的语句。这导致所有从服务的数据与主数据库中的数据具有相同的逻辑内容,但存储可能会不同。 而基于行的复制则是记录被更改的行的数据,而不是SQL语句。这种方法在保证数据一致性和精确性时减少了存储空间和网络带宽。 主从同步还存在一些问题,如网络延迟和主服务器的负载等问题。为了解决这些问题,可以使用多个从服务器来分担主服务器的负载并提高读取性能。此外,可采用双层主从同步,其中从服务器是另一组更高级别的主服务器的从服务器,这有助于避免从服务器成为数据孤岛。 总之,MySQL主从同步提供了一种强大和可靠的备份和故障保护机制,无论是对于小型企业还是大型组织都非常有用。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值