天天看点

mysql的主主复制模型

演示mysql的双主复制的模型:

物理机为win7,虚拟机是2台centos7

节点1:192.168.255.2

节点2:192.168.255.3

yum安装mariadb-server5.5

配置节点1:

]# vim /etc/my.cnf

<a href="http://s1.51cto.com/wyfs02/M00/82/8B/wKiom1dYT6bwzlf4AABqi3ptfsM606.png" target="_blank"></a>

配置节点2

<a href="http://s5.51cto.com/wyfs02/M00/82/89/wKioL1dYULmj_A4lAACHhhBi1yA503.png" target="_blank"></a>

分别启动mysql服务:

]# systemctl start mariadb.service

分别在两节点上:设置复制权限的账号:

&gt; GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'repluser'@'192.168.255.%' IDENTIFIED BY 'replpass';

&gt; FLUSH PRIVILEGES;

注意:在实际工作中,只能授权单个IP,不能是通配符的形式授权;如果有多个ip,就每个ip单独执行一遍授权语句;

然后,设置两个节点都指向对方为主节点;

提前记录好对方的二进制日志文件事务所处的位置;然后就从这个位置开始复制:

节点1:查看并记录二进制日志文件事务所处的位置

<a href="http://s4.51cto.com/wyfs02/M00/82/89/wKioL1dYUePBK28sAAAWJnmsvdM967.png" target="_blank"></a>

记录位置为499,将在节点2设置时使用;

节点2:查看并记录二进制日志文件事务所处的位置

<a href="http://s4.51cto.com/wyfs02/M01/82/89/wKioL1dYUrKCaIzRAAAVaGiFhss174.png" target="_blank"></a>

记录位置为509,将在节点1设置时使用;

设置节点1:

&gt; CHANGE MASTER TO MASTER_HOST='192.168.255.3',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000003',MASTER_LOG_POS=509;

设置节点2:

&gt; CHANGE MASTER TO MASTER_HOST='192.168.255.2',MASTER_USER='repluser',MASTER_PASSWORD='replpass',MASTER_LOG_FILE='master-bin.000003',MASTER_LOG_POS=499;

分别在两节点上:设置

&gt; START SLAVE;

此时,在两节点均可查看:

<a href="http://s5.51cto.com/wyfs02/M02/82/8B/wKiom1dYU9vTDLX5AACti_E5HSU330.png" target="_blank"></a>

<a href="http://s2.51cto.com/wyfs02/M01/82/89/wKioL1dYVOWgch3oAACqfz3JpNY161.png" target="_blank"></a>

显示内容和主从复制基本相同,只不过都是互为双主的模型;

此时,双主模型配置完成,双方都可以通过对方复制了;

验证双主:

例如在节点1,创建一个新库:

&gt; CREATE DATABASE mydb;

并查看节点1的状态:

<a href="http://s4.51cto.com/wyfs02/M02/82/8B/wKiom1dYVhHjEA5gAACv04w4Mw8149.png" target="_blank"></a>

在节点2:

查看状态:

<a href="http://s1.51cto.com/wyfs02/M00/82/8B/wKiom1dYVq3AN-_tAACpO2DgCsE275.png" target="_blank"></a>

查看同步到的新库:

<a href="http://s3.51cto.com/wyfs02/M02/82/89/wKioL1dYWAHTE23fAAArFLBL5DQ790.png" target="_blank"></a>

此时,已经验证了节点1写操作后,节点2同步节点1后完成数据备份;

再验证节点2发生写操作后,节点1同步节点2后完成数备份;

在新库中创建表:

&gt; use mydb

&gt; CREATE TABLE tb1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,name CHAR(30));

<a href="http://s3.51cto.com/wyfs02/M00/82/8B/wKiom1dYWKrAhGiGAAAcobYn8TU126.png" target="_blank"></a>

查看节点2状态:

<a href="http://s4.51cto.com/wyfs02/M00/82/89/wKioL1dYWjzTQYMnAAAWN7ziynI710.png" target="_blank"></a>

到节点1上查看同步后的结果:

<a href="http://s4.51cto.com/wyfs02/M00/82/89/wKioL1dYWrjRALKgAACbrWPghRg939.png" target="_blank"></a>

查看同步到的表:

<a href="http://s2.51cto.com/wyfs02/M01/82/8B/wKiom1dYWk7Cywf5AABMssuS_R4421.png" target="_blank"></a>

继续验证自动增长偏移量:

继续在节点1:给字段插入新值

&gt; INSERT INTO tb1 (name) VALUES ('Kobe Byrant'),('Michael Jordan'),('Yao Ming');

<a href="http://s1.51cto.com/wyfs02/M01/82/89/wKioL1dYXJmy8dStAAActmBY8gA472.png" target="_blank"></a>

也给字段插入新值,验证自动增长偏移量不会出现重复的id

&gt; INSERT INTO tb1 (name) VALUES ('Zhu Uuanzhang'),('Zhu Di'),('Zhu Yue');

<a href="http://s4.51cto.com/wyfs02/M01/82/8B/wKiom1dYXA7BZlNCAAAZIJGFfCY509.png" target="_blank"></a>

可验证,自动增长偏移量实现当两边分别插入新值后,id不会重复;

以上就是mysql主主复制模型的配置实现完成。

本文转自 crystaleone 51CTO博客,原文链接:http://blog.51cto.com/linsj/1787600,如需转载请自行联系原作者

继续阅读