Master Slave Replication
系统设计中Replica是必不可少的,主从复制是常用的一种实现replica的方式。
一句话概括什么是Master Slave Replication: Master数据源的数据异步的备份到Slaves数据源。
无论在Mysql, Redis, MongoDB 等类型数据存储中都是存在直接可使用的主从复制,通过配置就可以直接使用,这里不提。
MySQL Master-Slave Replication Architecture
- 所有Master的数据库的操作,都会记录在二进制日志中
- Slave的IO Thread连接Master数据库查看Binary Log
- Slave 不断添加Binary Log 到Relay Log
- SQL Thread 从Relay log读取操作并执行对应的操作,也会写到自己的Binary Log
这个Replication 可以是Asynchronous or Semi-Synchronous的。
Use Case
Master数据库down了,我们还有Slave数据库
此时我们可以通过预先定义好的Master Slave Election 算法,在Slaves里面选择一个new Master
读写分离 Read/Write Splitting
一般来说,我们Write Request是远远少于 << Read Request, 所以我们可以做读写分离来scale up. 这在系统设计中的面试中几乎都可以扯上。