MySQL主从复制原理深入解析与练习

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从复制原理深入解析与练习相关的知识,希望对你有一定的参考价值。

mysql主从复制原理深入解析与练习


MySQL主从复制画图描述:


技术分享


MySQL主从复制原理上图详解:

① 用户做crud操作,写入数据库,更新结果记录到binlog中;

② 主从同步是主找从的,从库IO发起请求,主库的主进程看从库的master change中给的参数是否合法,如果合法主进程交给IO进程进行3操作,否则拒绝;

③ 主库根据master的位置点,从这个位置点的binlog日志一直到binlog最后,将其准备发送给从库;

④ 将找到的binlog日志发给从库,并且还会发送新的日志点;

⑤ 从库收到binlog日志,将其写入relay-log(中继日志)中;

⑥ 从库IO进程再向master info保存主库传过来的最后的binlog日志的位置点;

⑦ 从库IO是循环发起请求的,发了再要,不会顾及SQL读取中继的操作。

   从库IO根据新的日志点,向主库发起请求,主库执行3操作再,再发送新的binlog给从库,从库再执行5操作;

⑧ 其实当第一次向relay-log中放数据时,SQL进程就已经知道,SQL进程将relay-log中的sql语句转换成数据,写入从库,从而实现同步;(relay-log和master info也不会交互)

⑨ SQL读取中继日志,并不会一次性全部读完,会把读取到的日志点存放到relay-log.info中。


主从同步实现之前应该具备的条件和做的准备:


① 从库有IO和SQL两个线程,主库有IO一个线程

② 开启主从同步之前,主从库相对与一个日志点之前的数据是一致的;

(即先要将主库全备,并且记录全备的binlog:show master status;然后将全备的内容放入从库,即可完成)

③ 开启主从同步之前,要在主库建立从库进行同步的账号;

(3306mysql>grant replication slave on *.* to rep@192.168.168.101 identified by 123;

④ 主库要打开binlog开关;

⑤ 从库要与主库进行主从同步,要做一下配置

3307mysql>CHANGE MASTER TO

MASTER_HOST=192.168.168.101

MASTER_PORT=3306

MASTER_USER=rep

MASTER_PASSWORD=123,

MASTER_LOG_FILE=mysql-bin.000002,

MASTER_LOG_POS=238;

注:master_host参数里面最好不要是域名或者localhost,最好是IP;对于最后两个参数,如果主库做全备的时候加了参数--master-data=1,最后两条就不用指定了,如果没有,主库做全备之前之后要mysql>show master status;查看日志点,并保证之前之后一致

⑥ 在从库mysql>start slave;开启从库的IOSQL进程,并且查看mysql>show slave status\G;查看(slave_IO_Running:yes slave_SQL_Rnning:yes scends_behind_master:0)如果这三个参数是这样,基本上,主从复制配置完成。



本文出自 “qb的博客” 博客,谢绝转载!

以上是关于MySQL主从复制原理深入解析与练习的主要内容,如果未能解决你的问题,请参考以下文章

深入了解MySQL主从复制的原理

MySQL的Binlog与主从复制

MySQL主从复制原理深入讲解

运维必懂的MySQL主从复制与读写分离解析和图文详细步骤!

深入挖崛:mysql主从复制原理

MySQL主从复制与读写分离解析和图文详细步骤