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服务
实现前准备:两台带数据库服务的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服务
相关文章推荐
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
- MySQL主从复制原理及配置详细过程以及主从复制集群自动化部署的实现
- mysql5.6下主主复制的配置实现
- MySQL主从复制配置与实现
- MySQL集群:主从数据库配置 实现查询负载
- 引用 MySQL集群:主从数据库配置 实现查询负载
- 配置MYSQL服务器实现主主复制
- mysql主主复制、主从复制、半同步的实现
- mysql主从复制概述以及配置mysql5.7.10实现简单主从复制
- mysql主从复制配置操作以及主主配置宕机切换演练
- mysql集群:主从数据库配置 实现查询负载
- MySQL集群:主从数据库配置 实现查询负载
- MySQL集群:主从数据库配置 实现查询负载
- linux上使用amoeba实现MySql集群,以及读写分离,主从复制
- MySQL集群:主从数据库配置 实现查询负载
- MySQL集群:主从数据库配置 实现查询负载
- MySQL集群:主从数据库配置 实现查询负载
- mysql主从复制的原理及配置实现
- MySQL主从复制、半同步和主主复制的实现
- 引用 MySQL集群:主从数据库配置 实现查询负载