mysql之master-master双主复制配置教程

发布时间:2020-01-02编辑:脚本学堂
有关mysql双主同步复制的配置教程,mysql双主多个slave架构,利用keepavlied实现自动切换master,具体配置方法见文中教程。

近期在测试mysql双主多个slave架构,利用keepavlied实现自动切换master。

主要工作:
1、mysql mater-maste工作(前期)

2、keepavlied搭建,还可以结合mysql proxy实现读写分离

3、处理master-mater-slave之间的同步关系

首先,先搭建Mater-Master的环境。

一、安装环境:
系统版本:RHEL5.4.x86_64
MySQL版本:mysql-5.0.45
Mysqlserver_1: 192.168.15.178
Mysqlserver_2: 192.168.15.185

二、正式安装:
在两台服务器中分别安装Mysql(略过)。
配置MySQL配置文件:
1)192.168.15.178的配置文件,如下红色标注是必须配置的,其他参数可以自行配置。
 

[mysqld]
server-id=1
auto_increment_offset=1
auto_increment_increment=2
log-bin=mysql-bin
log-error=/mysqldata/mysqld.log
pid-file=/mysqldata/mysqld.pid
master-host=192.168.15.185
master-user=backup
master-password=123456
master-port=3306
replicate-do-db=phpcmsv9
replicate-ignore-db=mysql
master-connect-retry=60

2)192.168.15.185的配置文件,如下红色标注是必须配置的,其他参数可以自行配置。
 

[mysqld]
server-id=2
auto_increment_offset=1
auto_increment_increment=2
log-bin=mysql-bin
log-error=/mysqldata/mysqld.log
pid-file=/mysqldata/mysqld.pid
master-host=192.168.15.178
master-user=backup
master-password=123456
master-port=3306
replicate-do-db=phpcmsv9
replicate-ignore-db=mysql
master-connect-retry=60
 

如上设置bin-log文件,并都设置对方为自己的主服务器,配置同步的数据库为map

三、配置MySQL:
导入要同步的数据库,先以一台作为主服务器,同步数据。我以phpcmsv9为例。
1)   在两台mysql数据库服务器里面设置权限,分别执行如下命令:
 

grant  replication  slave  on *.* to  'backup'@'192.168.15.%'  identified by  '123456';
 

在192.168.15.178查看master运行状态,获取binlog日志信息:
 

mysql> show master status;  
+------------------+-----------+--------------+------------------+
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000052 | 151744220 |              |                  |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)

2)在192.168.15.185上将192.168.15.178设为自己的主服务器执行如下命令:
 

change master to master_host='192.168.15.178',master_user='backup',master_password='123456',master_log_file='mysql-bin.000056',master_log_pos=151744220;  
 

然后,启动start slave;
注意这里写的bin-log参数是在178查看到的,即是对方的参数。

3)、然后在192.168.15.78执行:
 

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 |       98 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

4)在192.168.15.78上将192.168.15.185设为自己的主服务器执行如下命令:
 

change master to master_host='192.168.15.185',master_user='backup',master_password='123456',master_log_file='mysql-bin.000005',master_log_pos=98;  

然后启动start slave;
注意这里写的bin-log参数是在185查看到的,即是对方的参数。

5)MySQL同步测试配置完毕,我们会发现在任何一台mysql上更新同步的数据库里面的数据,都会同步到另一台mysql。

6)测试:
192.168.15.185建表:
 

mysql> create table UserState(UserStateId int auto_increment not null primary key, UseStateName varchar(50) not null);
Query OK, 0 rows affected (0.01 sec)
mysql> desc  UserState;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| UserStateId  | int(11)     | NO   | PRI | NULL    | auto_increment |
| UseStateName | varchar(50) | NO   |     |         |                |
+--------------+-------------+------+-----+---------+----------------+
2 rows in set (0.02 sec)

192.168.15.178查表:
 

mysql> desc UserState;
+--------------+-------------+------+-----+---------+----------------+
| Field        | Type        | Null | Key | Default | Extra          |
+--------------+-------------+------+-----+---------+----------------+
| UserStateId  | int(11)     | NO   | PRI | NULL    | auto_increment |
| UseStateName | varchar(50) | NO   |     |         |                |
+--------------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
ok