主从复制
主要涉及三个线程
- binlog 线程 :负责将主服务器上的数据更改写入二进制日志(Binary log)中。
- I/O 线程 :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。
- SQL 线程 :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。
MySQL 复制过程
- master 将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events
- slave 将master 的binary log events 拷贝到它的中继日志(relay log)
- slave 重做中继日志中的事件,将改变应用到自己的数据库中
MySQL 复制是异步的且串行化的
复制的基本原则
- 每个slave 只有一个master
- 每个slave 只能有一个唯一的服务器ID
- 每个master 可以有多个salve
读写分离
主服务器处理写操作以及实时性要求比较高的读操作,而从服务器处理读操作
读写分离能提高性能的原因在于:
- 主从服务器负责各自的读和写,极大程度缓解了锁的争用
- 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销
- 增加冗余,提高可用性


