码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-05-24 22:25:28      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:数据库   记录   sql语句   change   master   

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主从复制原理深入解析与练习

标签:数据库   记录   sql语句   change   master   

原文地址:http://qinbin.blog.51cto.com/11773640/1929063

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!