mysql 主从同步

同步过程:从服务器的IO线程从主服务器获取二进制日志,并在本地保存为中继日志,然后通过SQL线程来在从上执行中继日志中的内容,从而使从库和主库保持一致。主从同步的详细过程如下:

1.主服务器验证连接。

2.主服务器为从服务器开启一个线程。

3.从服务器将主服务器日志的偏移位告诉主服务器。

4.主服务器检查该值是否小于当前二进制日志偏移位。

5.如果小于,则通知从服务器来取数据。

6.从服务器持续从主服务器取数据,直至取完,这时,从服务器线程进入睡眠,主服务器线程同时进入睡眠。

7.当主服务器有更新时,主服务器线程被激活,并将二进制日志推送给从服务器,并通知从服务器线程进入工作状态。

8.从服务器SQL线程执行二进制日志,随后进入睡眠状态。


临时跳过MYSQL同步错误

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

   STOP SLAVE;

   SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

   START SLAVE;

从指定位置重新同步

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

     CHANGE MASTER TO MASTER_HOST=‘10.1.1.75‘,MASTER_USER=‘replication‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mysql-bin.000006‘, MASTER_LOG_POS=106;

START SLAVE;


不要乱使用SQL_SLAVE_SKIP_COUNTER命令。

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

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

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

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

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

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

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




mysql 主从同步,布布扣,bubuko.com

mysql 主从同步

上一篇:Oracle Savepoint


下一篇:sql server 修改字段大小