mysql的复制

1、复制介绍:

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

2、复制实施

MySQL使用3个线程来执行复制功能(其中1个在主服务器上,另两个在从服务器上。

2.1 当发出START SLAVE时,从服务器创建一个I/O线程,以连接主服务器并让它发送记录在其二进制日志中的语句。

2.2 主服务器创建一个线程将二进制日志中的内容发送到从服务器。该线程可以识别为主服务器上SHOW PROCESSLIST的输出中的Binlog Dump线程。

2.3 从服务器I/O线程读取主服务器Binlog Dump线程发送的内容并将该数据拷贝到从服务器数据目录中的本地文件中,即中继日志

2.4 第3个线程是SQL线程,是从服务器创建用于读取中继日志并执行日志中包含的更新。

3、设置复制

3.1 为从服务器创建账号和密码

grant replication slave on *.* to 'repl'@'127.0.0.3' identify by '123456'

3.2 配置mysql的配置文件

4、多服务器复制中的auto_increment的解决方案

当将多个服务器配置为复制主服务器时,使用auto_increment时应采取特殊步骤以防止键值冲突,否则插入行时多个主服务器会试图使用相同的auto_increment值。

服务器变量auto_increment_increment和auto_increment_offset可以帮助协调多主服务器复制和AUTO_INCREMENT列。每个变量有一个默认的(并且是最小的)值1,最大值为65,535。

将这些变量设置为非冲突的值,当在同一个表主插入新行时,多主服务器配置主的服务器将不会与AUTO_INCREMENT值冲突。

 

posted @ 2019-07-30 17:03  liuwengui  阅读(97)  评论(0编辑  收藏  举报