本文已参与「新人创作礼」活动,一起开启掘金创作之路。
概念、实现原理
主从复制(Replication)是指数据可以从数据库主服务器复制到一个或多个从服务器。默认采用异步模式。可复制的数据有:所有数据库、特定数据库、特定表。
实现原理:
- 主服务器 binlog dump 线程:将主服务器中的数据更改(增删改)操作写入 Binlog 日志中;
- 从服务器 I/O 线程:从主服务器读取binlog日志,并写入本地的 Relay log;
- 从服务器 SQL 线程:读取 Relay log,解析出主服务器执行过的操作,并在从服务器中重新执行,保证主从数据的一致性。
为什么是分布式事务
主从一致:binlog 内容与redo log内容一致
因为redo log的更新是InnoDB引擎层面的行为,binlog的更新是MySQL数据库层面的行为,保证不同模块之间的行为同步就是分布式事务。
过程:
(1)对 redo log进行prepare的写入
(2)对bin log写入
(3)IO线程读取bin log并写入relay log
(4)对reldo log进行commit
为什么要主从复制?
-
数据实时备份,当系统中某个节点发生故障时,可以方便的故障切换
-
读写分离:主服务器负责写数据,从服务器负责供读取数据。
缓解锁竞争,即使主服务器中加了写锁,依然可以在从服务器进行读操作;降低磁盘I/O频率,提高单机的I/O性能;- 从服务器可以使用
MyISAM引擎,提升查询性能以及节约系统开销; 增加冗余,提高可用性。