1. 主从复制
箭头顺序依次从左到右
注:slave端也有 binlog
延迟分析
读写:
Data changes: 顺序的写操作,比较快,不太会发生延迟。一个大文件和多个小文件相比,大文件读取更快(顺序读写),因为小文件需要频繁多次寻址(随机读写)。kafka消息队列,数据放在磁盘上,只支持append操作(append的大多数是顺序读写),包括大数据分布式的也是,不支持Insert和update
I/O Thread读操作:顺序读取,几乎不延迟。(异地,不在同一个局域网,用专用光纤传输,此处不要省钱)
I/O Thread 顺序写入 Relay log,无延迟
SQL Thread读取Relay log: 顺序读
SQL Thread 写的时候(找到对应的sql语句进行修改)是随机的,可能会延迟
- 例如:update table set name=zhiang where id=1
- update table set name lsi where id=200
注:append是顺序的,update和insert是随机的
-
整体流程分析:
- 前面都是顺序的,不延迟
- 只在SQL Thread写时延迟,因为是随机读写的
- 可能会造成relay log堆积
怎么解决延迟问题
MTS:multi-thread salve
SQL Thread并行复制,多线程
并行复制的粒度:库、表、行