diff --git a/notes/MySQL.md b/notes/MySQL.md index 0805d38a2c544f99de3fdcac45f05e85f5d693c7..a51a9dd78d6afabb5cb54dd2778977e74308a336 100644 --- a/notes/MySQL.md +++ b/notes/MySQL.md @@ -22,6 +22,9 @@ * [垂直切分](#垂直切分) * [Sharding 策略](#sharding-策略) * [Sharding 存在的问题](#sharding-存在的问题) +* [六、复制](#六复制) + * [主从复制](#主从复制) + * [读写分离](#读写分离) * [参考资料](#参考资料) @@ -424,6 +427,32 @@ SELECT * FROM post WHERE post.id IN (123,456,567,9098,8904); - [How Sharding Works](https://medium.com/@jeeyoungk/how-sharding-works-b4dec46b3f6) - [大众点评订单系统分库分表实践](https://tech.meituan.com/dianping_order_db_sharding.html) +# 六、复制 + +## 主从复制 + +主要涉及三个线程:binlog 线程、I/O 线程和 SQL 线程。 + +- **binlog 线程** :负责将主服务器上的数据更改写入二进制文件(binlog)中。 +- **I/O 线程** :负责从主服务器上读取二进制日志文件,并写入中继日志中。 +- **SQL 线程** :负责读取中继日志并重放其中的 SQL 语句。 + +

+ +## 读写分离 + +主服务器用来处理写操作,而从服务器用来处理读操作。 + +读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。 + +MySQL 读写分离能提高性能的原因在于: + +- 主从服务器负责各自的读和写,极大程度缓解了锁的争用; +- 从服务器可以配置 MyISAM 引擎,提升查询技能以及节约系统开销; +- 增加冗余,提高可用性。 + +

+ # 参考资料 - BaronScbwartz, PeterZaitsev, VadimTkacbenko, 等. 高性能 MySQL[M]. 电子工业出版社, 2013. diff --git a/pics/master-slave-proxy.png b/pics/master-slave-proxy.png new file mode 100644 index 0000000000000000000000000000000000000000..66be0d61f5a24876c6da69d340f08eb6121608ad Binary files /dev/null and b/pics/master-slave-proxy.png differ diff --git a/pics/master-slave.png b/pics/master-slave.png new file mode 100644 index 0000000000000000000000000000000000000000..594a183a4c38822526c8e59db0129312c6cf5015 Binary files /dev/null and b/pics/master-slave.png differ