您的位置:首页 > 数据库 > MySQL

mysql集群实现-主主复制(另外一种主从复制只是比主主复制少一步配置)

2017-12-28 17:18 597 查看
主要实现功能:实现两台数据库服务之间数据同步
实现前准备:两台带数据库服务的linuxOS(此处使用centOS6 64位,ip分别是192.168.88.129和192.168.88.131,下文用192和131称呼,mysql5.7)防火墙和selinux都关闭

主主复制模式是指两台mysql服务都是master,同时又都是slave,这样的话在其中一台做数据操作,另外一台的数据库服务也会执行同样的操作

还有一种是主从复制:
其中一台作为master,另外一台作为slave,在slave服务器修改数据库的话是不会同步到master服务器的,而master服务器修改数据库会同步到slave服务器,
因此这种模式要进行读写分离的话,写的操作必须是在 master服务

1、更改两台主机的mysql配置文件/etc/my.cnf

在129的my.cnf添加

server-id=1

log-bin=mysqlmaster-bin.log

auto-increment-increment=2

auto-increment-offset=1

在131的my.cnf添加

server-id=2

log-bin=mysqlmaster-bin.log

auto-increment-increment=2

auto-increment-offset=2

说明:

server-id:在集群时本机服务的唯一标志,因此不能相同

auto-increment-increment:整个结构中服务器的总数,此实验为两台服务器,所以值为2

auto-increment-offset:数据库中自动增长的起点的,因为服务器都设定了一次自动增长的值为2,所以他们的起点必须得不同,这样才能避免两台服务器数据同步时出现主键冲突

注意:可能在etc下没有my.cnf文件,解决方法是复制mysql的安装路径下my.cnf(cp /usr/local/mysql/my.cnf /etc/my.cnf)

2.root登陆MySQL,创建同步数据所需要的用户

129 

GRANT REPLICATION SLAVE ON *.* TO 'synuser1'@'192.168.88.%' IDENTIFIED BY '123456';

131

GRANT REPLICATION SLAVE ON *.* TO 'synuser2'@'192.168.88.%' IDENTIFIED BY '123456';

3.查看两台服务器的master状态

129

mysql>show master status;

+------------------------+----------+--------------+------------------+-------------------+

| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------------+----------+--------------+------------------+-------------------+

| mysqlmaster-bin.000002 |      120 |              |                  |                   |

执行(主从模式下,若此机作为master,则不需要再执行,因为本文是使用主主模式,因此两台服务器都要指明对应的master)

CHANGE MASTER TO MASTER_HOST='192.168.88.131',MASTER_USER='synuser2',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=336;

131:

mysql>show master status;

+------------------------+----------+--------------+------------------+-------------------+

| File                   | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------------+----------+--------------+------------------+-------------------+

| mysqlmaster-bin.000001 |      336 |              |                  |                   |

执行

CHANGE MASTER TO MASTER_HOST='192.168.88.129',MASTER_USER='synuser1',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=120;

4.两台服务器都执行mysql>start slave;从而开启同步功能

分别输入show slave status;查看结果中的以下两个属性值是否为yes,若是则成功

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

注意:通常做集群实验的时候都是在一台虚拟机上安装mysql之后复制一台作为另外一台,这样会出现两台mysql服务的server-uuid相同,解决方法是修改其中一台的uuid

vim /usr/local/mysql/data/auto.cnf 改成与另外一台不一样即可,修改之后重启两台服务器的MySQL服务
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: