Mysql复制(Master/Slave实现)

1、Mysql复制方式:

              * 基于行的复制(5.1中引入)

              * 基于语句的复制

      注:都是通过在主库上记录binlog、在备库上重放日志的方式来实现异步的数据复制的。这意味着,在同一时间点备库上的数据可能与主库存在不一致性,并且无法保证主备之间的延迟。


2、应用场景:

               * 数据分布: Mysql复制通常不会对带宽造成很大的压力,但是基于行的复制会比传统的基于语句复制模式的带宽压力更大些。

               * 负载均衡: 通过Mysql复制可以装读操作分布到多个服务器上,实现对读密集型应用的优化,并且实现方便,通过简单的代码就可以实现基本的负载均衡。(如:对机器人名做硬编码或将一个机器名指向多个IP地址。等等)

               * 备份数据

               * 高可用性和故障切换

              * Mysql升级测试


3、复制工作流:

              1)在主库上把数据更改记录到二进制日志中。

                        每次准备提交事务完成数据更新前,主库将数据更新的事件记录到二进制日志中。Mysql会按事务提交的顺序而非每条语句的执行顺序来记录二进制日志。记录完  成后,主会告诉存储引擎可以提交事务;

               2)备库将主库上的日志复制到自己的中继日志中。

                            由备库启动一个工作线程,称为I/O线程, 跟主库建立一个连接,然后在主库上启动一个特殊的二进制转储(binlog dump)线程(该线程没有对应的sql命令),这个二进制转储线程会读取主库上二进制日志中的事件。它不会对事件进行轮询。如果该线程追赶上主库,将进入休眠状态,直到主库发送信号通知其有新的事件产生才会被唤醒,备库IO线程会将接收到的事件记录到中继日志中。

               3)备库读取中继日志中的事件,将其重放在备库数据之上。


4、XXOO:

              Mysql基于语句与行复制,感觉与Redis的RDB与AOF实现都差不多。 估计Master与Slave这样的架构都这么实现吧


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值