MySQL主从复制资料汇总



1,复制原理

官方参考文档:http://dev.MySQL.com/doc/refman/5.6/en/replication.html

创新互联建站成立以来不断整合自身及行业资源、不断突破观念以使企业策略得到完善和成熟,建立了一套“以技术为基点,以客户需求中心、市场为导向”的快速反应体系。对公司的主营项目,如中高端企业网站企划 / 设计、行业 / 企业门户设计推广、行业门户平台运营、重庆APP开发公司成都做手机网站、微信网站制作、软件开发、成都托管服务器等实行标准化操作,让客户可以直观的预知到从创新互联建站可以获得的服务效果。

博客地址1:http://blog.csdn.net/mchdba/article/details/11354771

博客地址2:http://blog.csdn.net/mchdba/article/details/8717513

 如下图1.png所示:

MySQL 主从复制资料汇总

8,常用的mysql主从拓扑结构

复制的体系结构有以下一些基本原则:

(1)   每个slave只能有一个master;

(2)   每个slave只能有一个唯一的服务器ID;

(3)   每个master可以有很多slave;

(4)   如果你设置log_slave_updates,slave可以是其它slave的master,从而扩散master的更新。

MySQL不支持多主服务器复制(MultimasterReplication)——即一个slave可以有多个master。但是,通过一些简单的组合,我们却可以建立灵活而强大的复制体系结构。

 

9,mysql主从同步之间的管理

介绍一下基本的mysql主从的管理操作命令:

9.1 停止mysql从服务

STOP SLAVE IO_THREAD;    #停止IO进程

STOP SLAVE SQL_THREAD;    #停止SQL进程

STOP SLAVE;                               #停止IO和SQL进程

 

9.2 开启mysql主从同步服务

START SLAVE IO_THREAD;    #启动IO进程

START SLAVE SQL_THREAD;  #启动SQL进程

START SLAVE;            #启动IO进程和SQL进程

 

9.3 重置mysql主从同步

RESET SLAVE;

#用于让从属服务器忘记其在主服务器的二进制日志中的复制位置, 它会删除master.info和relay-log.info文件,以及所有的中继日志,并启动一个新的中继日志,当你不需要主从的时候可以在从上执行这个操作。不然以后还会同步,可能会覆盖掉你的数据库。

9.4 查看主从同步状态

SHOW SLAVE STATUS;

#这个命令主要查看Slave_IO_Running、Slave_SQL_Running、Seconds_Behind_Master、Last_IO_Error、Last_SQL_Error这些值来把握复制的状态。

9.5 临时跳过MYSQL同步错误

#经常会朋友mysql主从同步遇到错误的时候,比如一个主键冲突等,那么我就需要在确保那一行数据一致的情况下临时的跳过这个错误,那就需要使用SQL_SLAVE_SKIP_COUNTER = n命令了,n是表示跳过后面的n个事件,比如我跳过一个事件的操作如下:

STOP SLAVE;

SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

START SLAVE;

9.6 从指定位置重新同步数据

#有的时候主从同步有问题了以后,需要从log位置的下一个位置进行同步,相当于跳过那个错误,这时候也可以使用CHANGE MASTER命令来处理,只要找到对应的LOG位置就可以,比如:

CHANGE MASTER TOMASTER_HOST='10.1.1.75',MASTER_USER='replication',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000006',MASTER_LOG_POS=106;

START SLAVE;

PS:生产环境中这种操作尽量能避免就避免。

 

10,线上维护mysql主从需要注意的事项

1.   不要乱使用SQL_SLAVE_SKIP_COUNTER命令。

这个命令跳过之后很可能会导致你的主从数据不一致,一定要先将指定的错误记录下来,然后再去检查数据是否一致,尤其是核心的业务数据。

 

2.   结合percona-toolkit工具pt-table-checksum定期查看数据是否一致。

这个是DBA必须要定期做的事情,呵呵,有合适的工具何乐而不为呢?另外percona-toolkit还提供了对数据库不一致的解决方案,可以采用pt-table-sync,这个工具不会更改主的数据。还可以使用pt-heartbeat来查看从服务器的复制落后情况。

 

3.   使用replicate-wild-ignore-table选项而不要使用replicate-do-db或者replicate-ignore-db。

原因已经在上面做了说明。

 

4.   将主服务器的日志模式调整成mixed。

 

5.   每个表都加上主键,主键对数据库的同步会有影响尤其是居于ROW复制模式。


6.   避免在master做批量更新操作,以免造成从库主从延时。

  ----------------------------------------------------------------------------------------------------------------
<版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!>
原博客地址:       http://blog.itpub.net/26230597/viewspace-1478126/
原作者:黄杉 (mchdba)
----------------------------------------------------------------------------------------------------------------

参考文章地址:

http://www.open-open.com/lib/view/open1373874692544.html

http://blog.chinaunix.net/uid-20639775-id-3254611.html

 



文章标题:MySQL主从复制资料汇总
文章链接:http://myzitong.com/article/gppicd.html