Mysql主从同步原理和主从同步的作用
如果对运维课程感兴趣,可以在b站上、csdn或微信视频号 上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频
Mysql主从同步原理
Mysql的主从同步是异步的同步,从库需要两个线程来完成,其中一个线程叫sql线程,另外一个叫IO线程,在主库上由一个IO线程负责完成。要想完成主从同步,主库必须要开启bin-log,当用户请求主库时候,如果有增删改时,会把数据写入主库数据文件里,把更新的结果写到bin-log里面,主从同步是从库找主库同步,从库start slave后,由从库的IO向主库发起请求,主库接收到请求后,会通过用户名,密码,IP地址,端口验证请求是否合法,如果都正确就允许从库连接,从库同步时从change master处查出信息,会告诉主库,我要从你的哪个位置哪个点给我发bin-log。主库的IO线程收到请求后,会根据从库需求范围发送bin-log,当从库的IO线程收到bin-log后,会把bin-log日志写到自己的某个地点(中继日志),然后更新本地文件的master info位置点,接下来IO线程继续向主库请求,说把当前位置点以后的bin-log再发给我,然后把bin-log再放入中继日志,再更新本地的master info中位置点,如此循环的把主库的bin-log写入本地的中继日志。而本地的sql线程,时刻监控中继日志,一旦有bin-log,就把中继日志的bin-log语句,经过转换写到本地的数据文件中,这样,就是IO线程不断的从主库取得bin-log,放入本地的中继日志,sql线程不断的从本地中继日志中取bin-log,经转换存入本地数据文件中,实现了主从数据同步。
注意:从库开启start slave之前,要不位置点之前的主库上的数据先导到从库上,否则,只是在位置点之后主从数据同步,位置点之前的数据就不同步了,所以,要在开关开启之前,先把位置点之前的数据让主从一致,这样无论何时主从数据都会一致的。这个位置点就是从库上:master_log_file=”” ,master_log_pos=””这里的位置点。
主从同步的作用
Mysql主从同步部署可以使主从服务器互为备份,大大的加强了数据库架构的健壮性,解决数据库单点故障,当主服务器出现问题时,我们可以人工或自动切换到从服务器继续提供服务。
主从部署的同时加上读写分离,通过在从服务器上仅仅处理用户的查询请求,在主服务器上处理用户的写请求,分担数据库压力。
如果对运维课程感兴趣,可以在b站上、csdn或微信视频号 上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频