主从同步的原理:
1、主库上面有一个IO线程,从库上有一个IO线程和一个SQL线程,从库中的IO线程负责从主库读取binlog,并写入从库的中继日志;SQL线程负责读取并执行中继日志中的binlog,转换sql语句后应用数据库汇总
2、通信是:
- 从库的IO线程给主库发送同步请求,请求中包含用户名密码和binlog的文件名,pos点
- 主库验证成功后,发送从库需要的binlog日志文件,和binlog文件中pos点
- 从库的IO线程接收后,把binlog文件转存到中继日志的relay-log文件,并把binlog文件名和pos点记录到master.info文件中,方便下次通信使用
- 从库的SQl线程监测出relay-log文件后,把relay-log文件转换为binlog文件在本地执行,并把relay-log文件名和pos点记录到relay-log.info文件中
- 从库再次发送下一轮的请求~~~
如果slave后面还挂有从库则也要开启binlog,并添加一个参数log-slave-updates