一,需求说明
保证现有业务在主机房网络中断的情况下,能迅速切至备用机房,切保证数据最小丢失。

二,环境需求
1,应用环境
现dxt和zw两个机房各有一套业务服务器,dxt为主机房,zw为备用机房,使用cdn取双源,当主节点网络异常的时候可以实现自动无缝切换。
弊端:
1,主节点异常后, 自动切至备用节点。当主节点恢复后,cdn会立即恢复到主节点,此时主节点的db数据不完整,不能存在修改和删除操作。
2,网络正常,db异常无法正常切换,需开发调整程序。
2,软件环境
主备机房服务器都使用msyql5.5.16,安装环境步骤忽略。

三,实施步骤
1,同步主备节点的数据
A,测试环境使用的是新安装的mysql数据库,直接将测试数据导入主备服务器的数据库
主服务器master1
1 # mysql -u root -p
mysql> show databases;
mysql> create database cdn;
mysql> use cdn;
mysql> source /opt/cdn.sql
主服务器master2 步骤同上

B, 如果是已经运行的线上服务器需要做双主,需保证使用的服务器master1 为只读模式后, 对该数据库做全备,将备份数据copy至master2服务器上, 同A一样对master进行数据导入。(当主主配置完成后,即可解除master1的只读模式)

2,添加db同步用帐号
1 Grant replication slave on . to reuser@'211.147.6.233' identified by 'repass'; ##master1
2 Grant replication slave on . to reuser@'103.227.81.14' identified by 'repass'; ##master2

3,测试连通可用性
1 mysql -u reuser -p -h 211.147.6.233 ##master1
2 mysql -u reuser -p -h 103.227.81.14 ##master2

4,修改mysql配置
1 #vi /etc/my.cnf ##master1
2 log-bin = mysql-bin
server-id = 6 ###此处两个主机的值不能相同
log-slave-updates
auto_increment_increment=2
auto_increment_offset=1 ###此处两个主机的值不能相同

1 #vi /etc/my.cnf ##master2
2 log-bin = mysql-bin
server-id = 7
log-slave-updates
auto_increment_increment=2
auto_increment_offset=2

5,重启master1和master2的数据库服务
1 #/usr/local/mysql55/scripts/my3306.sh restart #master2 and master1

6,查看各主机master状态
1 #show master status\G #master1
1. row
File: mysql-bin.000001
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.01 sec)

1 #show master status\G #master2
1. row
File: mysql-bin.000001
Position: 107
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.01 sec)

7,配置数据库参数
1 mysql> CHANGE MASTER TO MASTER_HOST="211.147.6.233",MASTER_USER="reuser",MASTER_PASSWORD="repass",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107 #master1

1 mysql> CHANGE MASTER TO MASTER_HOST="103.227.81.14",MASTER_USER="reuser",MASTER_PASSWORD="repass",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107 #master2

8,开启slave
1 mysql> slave start #master1

1 mysql> slave start #master2

9,查看slave状态
1 #show slave status\G #master1 (下面只截取部分信息)
1. row
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

1 #show slave status\G #master2 (下面只截取部分信息)
1. row
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

四,测试可用性
可通过创建表和插入数据来测试mysql双主的可用性,不详述。
五,注意事项
本实验使用的是默认3306端口, 所以change master时无需指定端口,如果使用非3306端口,请自行添加MASTER_PORT=31306 参数(此处假定自定义的数据库端口为31306)