数据库主从复制和读写分离
- 主从复制
1.1 主从复制原理
- Master的更新事件(update、insert、delete)会按照顺序写入bin-log中。当Slave连接到Master的
后,Master机器会为Slave开启binlog dump线程,该线程会去读取bin-log日志
(2) Slave连接到Master后,Slave库有一个I/O线程,通过请求binlog dump thread读取bin-log日志,然
后写入从库的relay log日志中。
(3) Slave还有一个 SQL线程,实时监控 relay-log日志内容是否有更新,解析文件中的SQL语句,在Slave
数据库中去执行。
主从复制工作(过程)原理
1.从库执行change master to 命令(主库的连接信息+复制的起点)
2.从库会将以上信息,记录到master.info文件
3.从库执行 start slave 命令,立即开启IO_T和SQL_T
4.从库 IO_T,读取master.info文件中的信息,获取到IP,PORT,User,Pass,binlog的位置信息
5.从库IO_T请求连接主库,主库专门提供一个DUMP_T,负责和IO_T交互
6.IO_T根据binlog的位置信息(mysql-bin.000002 , 448),请求主库新的binlog
7.主库通过DUMP_T将最新的binlog,通过网络传输给从库的IO_T
8.IO_T接收到新的binlog日志,存储到TCP/IP缓存,立即返回ACK给主库,并更新master.info
9.IO_T将TCP/IP缓存中数据转储到磁盘relaylog中.
10.SQL_T读取relay.info中的信息,获取到上次已经应用过的relaylog的位置信息
11.SQL_T会按照上次的位置点回放最新的relaylog,再次更新relay.info信息12.从库会自动清理应用过的relay文件
补充说明:
一旦主从复制构建成功,主库当中发生了新的变化,都会通过dump_T发送信号给IO_T,增强了主从复
制的实时性
__EOF__

本文链接:https://www.cnblogs.com/Crushz-2024/p/18390306.html
关于博主:Crushz
版权声明:转载请注明来源哟~ QAQ
声援博主:UP UP UP !!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了