MySQL 主从复制
主从复制是指将主数据库( Master )中的 DDL 和 DML 操作通过二进制日志传输到从数据库( Slave ) 上,然后将这些日志重新执行(重做),从而使得从数据库的数据与主数据库保持一致。MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。
主从复制的作用有:
- 当主数据库出现问题时,可以切换到从数据库;
- 可以进行数据库层面的读写分离,实现负载均衡;
- 可以在从数据库上进行实时数据备份。

基本原理流程:
MySQL 的主从复制是一个 异步 的复制过程(一般情况下感觉是实时的),数据将从一个 MySQL 数据库( Master )复制到另外一个 MySQL 数据库( Slave ),在 Master 与 Slave 之间实现整个主从复制的过程是由三个线程参与完成的,其中有两个线程( SQL 线程和 I/O 线程)在 Slave 端,另外一个线程( I/O 线程)在 Master 端。
Master 端:打开二进制日志(binlog )记录功能 —— 记录下所有改变了数据库数据的语句,放进 Master 的 binlog 中;
Slave 端:开启一个 I/O 线程 —— 负责从 Master上拉取 binlog 内容,放进自己的中继日志( Relay log )中;
Slave 端:SQL 执行线程 —— 读取 Relay log,并顺序执行该日志中的 SQL 事件。
三种主从复制的方式:
1)同步复制:所有从机接收到 Binlog ,才认为事务提交成功;最安全,但性能差,一般不用。
2)异步复制:只要主机事务提交成功,就对客户端返回成功;后台线程异步把 Binlog 同步给从机,然后从机回放。最快,但可能丢失数据。
3)半同步复制:部分从机接收到 Binlog ,才对客户端返回成功。
一般做法是牺牲一致性换取高可用;数据丢失后,人工修复。
为了解决主从复制延迟太大,切换到从机后数据丢失太多的问题,采用了并行回放策略(1.按数据维度并行——两个事务没有操作交集可以并行;2.按事务提交顺序并行——同时提交成功的事务是可以并行的)。

1479

被折叠的 条评论
为什么被折叠?



