配置业务端与容灾端之间的容灾
为了保证MySQL数据的一致,在业务端与容灾端也需要配置数据同步机制,在业务端的Master和Slave2同时故障时,可以将业务切换到灾备端的Slave1上。同时,当生产数据中心恢复时,能够将业务切回。
步骤一:配置Master到Slave1的容灾
- 修改Slave1数据库配置文件。
- 打开MySQL的配置文件。
- 修改内容。
按照如下字段对配置文件中[mysqld]之下的内容进行增加或修改。
参数说明请参见配置业务端内部的容灾。
示例如下:
[mysqld] server-id=0105 log_bin=slave-bin sync_binlog=1 binlog-do-db=xinhu replicate-do-db=xinhu binlog_format=mixed log_slave_updates=1
- 在Master为Slave1创建复制帐户。
在Master数据库中创建一个拥有“REPLICATION SLAVE”权限,能使Slave1数据库远程登录Master并复制数据的帐户,请根据实际需要定义有利于区分的帐户和密码,IP为Slave1数据库的管理IP。
创建的命令如下,其中“account”和“Password”应更换成实际规划的帐号密码。
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'account'@'192.168.1.5'IDENTIFIED BY 'Password';
- 查看Master状态。
在Master数据库中使用如下命令查看当前Master状态,并记录日志文件名,日志文件位置,以便在配置Slave1数据库的时候使用。
mysql> SHOW MASTER STATUS\G ************************** 1. row *************************** File: master-bin.000001 //当前master日志文件名称 Position: 154 //当前master日志文件中的位置 Binlog_Do_DB: xinhu //所要同步的数据库名 Binlog_Ignore_DB: //不同步的数据库名 Executed_Gtid_Set:
- 在Slave1同步Master的数据。
参数说明如下:
因为是Slave1从Master同步数据,因此本步骤中的master,是指Master。
- “master_host”是Master的IP。
- “master_user”是2中在Master数据库中创建的同步帐户名。
- “master_password”是2节中在Master数据库中创建的同步帐户的密码。
- “master_log_file”是3中查得的Master日志文件名称。
- “master_log_pos”是3中查得的Master日志文件中的位置。
mysql> change master to master_host='10.1.1.2', master_user='account', master_password='Password', master_log_file='master-bin.000001', master_log_pos=154;
- 在Slave1查看同步状态。
- 在Slave1数据库中,使用如下命令开启slave模式,用来同步Master的数据。
- 在Slave1数据库中使用如下命令查看当前slave的状态信息。
“Slave_IO_Running”为“Yes”且“Slave_SQL_Running”为“Yes”,则表示同步成功,Master与Slave1的主备关系就配置完成。
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.1.1.2 Master_User: account Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000040 Read_Master_Log_Pos: 154 Relay_Log_File: mysql-slave1-relay-bin.000092 Relay_Log_Pos: 369 Relay_Master_Log_File: master-bin.000040 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: xinhu
步骤二:配置Slave1到Master的容灾
- 在Slave1为Master创建复制帐户。
在Slave1数据库中创建一个拥有“REPLICATION SLAVE”权限,能使Master数据库远程登录Slave1并复制数据的帐户,请根据实际需要定义有利于区分的帐户和密码,IP为Master数据库的管理IP。
创建的命令如下,其中“account”和“Password”应更换成实际规划的帐号密码。
mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'account'@'10.1.1.2'IDENTIFIED BY 'Password';
- 查看Slave1状态。
在Slave1数据库中使用如下命令查看当前Slave1状态,并记录日志文件名,日志文件位置,以便在配置Master数据库的时候使用。
mysql> SHOW MASTER STATUS\G ************************** 1. row *************************** File: slave-bin.000001 //当前master日志文件名称 Position: 154 //当前master日志文件中的位置 Binlog_Do_DB: xinhu //所要同步的数据库名 Binlog_Ignore_DB: //不同步的数据库名 Executed_Gtid_Set:
- 在Master同步Slave1的数据。
参数说明如下:
因为是Master从Slave1同步数据,因此本步骤中的master,是指Slave1。
- “master_host”是Slave1的IP。
- “master_user”是2中在Slave1数据库中创建的同步帐户名。
- “master_password”是2中在Slave1数据库中创建的同步帐户的密码。
- “master_log_file”是2中查得的Slave1日志文件名称。
- “master_log_pos”是2中查得的Slave1日志文件中的位置。
mysql> change master to master_host='192.168.1.5', master_user='account', master_password='Password', master_log_file='slave-bin.000001', master_log_pos=154;
- 在Master查看同步状态。
- 在Master数据库中,使用如下命令开启slave模式,用来同步Slave1的数据。
- 在Master数据库中使用如下命令查看当前slave的状态信息。
“Slave_IO_Running”为“Yes”且“Slave_SQL_Running”为“Yes”,则表示同步成功,Slave1与Master的主备关系就配置完成。
mysql> show slave status\G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.1.5 Master_User: account Master_Port: 3306 Connect_Retry: 60 Master_Log_File: slave-bin.000001 Read_Master_Log_Pos: 154 Relay_Log_File: mysql-master-relay-bin.000092 Relay_Log_Pos: 369 Relay_Master_Log_File: slave-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: xinhu