
# 配置业务端内部的容灾
在本容灾方案中，线下的生产数据中心有两台MySQL，需要配置为主备关系，以确保线下仅MySQL故障时，可直接在线下切换到备节点，因此，需要先配置业务端内部的容灾。
1. 修改Master数据库配置文件。 
   1. 打开MySQL的配置文件。 **#vi /etc/my.cnf**
      
   
   2. 修改内容。 按照如下字段对配置文件中\[mysqld\]之下的内容进行增加或修改。
      参数说明如下：
      - "server-id"是业务系统与容灾系统集群中的唯一值，例如，以IP地址中的数字来作为取值进行配置。
      
      - "log_bin=master-bin"表示生成的日志文件名为"master-bin"。
      
      - "sync_binlog"是设置每更新多少次事务进行日志提交，"1"是每次都提交。
      
      - "binlog-do-db"指定生成的本地日志记录所对应的数据库名。
      
      - "replicate-do-db"指定日志异步复制到对端时，对端数据库的名称。
      
      - "binlog_format"指定binary log的日志格式。
      
      - "log_slave_updates"为"1"表示开启级联复制，可以使数据同步到间接连接的服务器中。
      
      
      示例如下：
      ```
      [mysqld]
      server-id=0102
      log_bin=master-bin
      sync_binlog=1
      binlog-do-db=xinhu
      replicate-do-db=xinhu
      binlog_format=mixed
      log_slave_updates=1
      ```
      
   
   
   
   3. 修改完配置后重启数据库服务。 **#systemctl restart mysqld**
      
   
   
   
   
2. 创建复制帐户。
   
   1. 执行下述命令并输入密码，进入MySQL。 **#mysql -u root -p**
      
   
   2. 创建帐号。 在Master数据库中创建一个拥有"REPLICATION SLAVE"权限，且能使Slave2数据库远程登录Master并复制数据的帐户。自行定义可以区分的帐户密码，IP地址为Slave2数据库的管理IP。
      ![](https://support.huaweicloud.com/bestpractice-hcdr/public_sys-resources/note_3.0-zh-cn.png)
      - MySQL的默认密码策略为"MEDIUM"，请根据实际需要使用相应的密码策略。
      
      - 配置的密码需要符合密码策略要求。
       
      创建的命令如下，其中"account"和"Password"应更换成实际规划的帐号密码。
      **mysql\> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON \*.\* TO '*account* '@'*10.1.1.3* 'IDENTIFIED BY '*Password*';**
      
   
   
   
   
3. 查看Master状态。
   
   在Master数据库中使用如下命令查看当前Master状态，并记录日志文件名，日志文件位置，供配置Slave2数据库的时候使用。
   ```
   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:
   ```
   
   
4. 修改Slave2数据库配置文件。 
   1. 打开MySQL的配置文件。 **#vi /etc/my.cnf**
      
   
   2. 修改内容。 按照如下字段对配置文件中\[mysqld\]之下的内容进行增添或修改。
      参数说明如下：
      - Slave2的配置文件和master大体相同，只有"server-id"和"log-bin"不同，其他相同。
      
      - "server-id"是业务系统与容灾系统集群中的唯一值，例如，以IP地址中的数字来作为取值进行配置。
      
      - "log_bin=slave-bin"表示生成的日志文件名为"slave-bin"。
      
      - "sync_binlog"设置每更新多少次事务进行日志提交，"1"是每次都提交。
      
      - "binlog-do-db"指定生成的本地日志记录所对应的数据库名。
      
      - "replicate-do-db"指定日志异步复制到对端时，对端数据库的名称。
      
      - "binlog_format"指定binary log的日志格式。
      
      - "log_slave_updates"为"1"是开启级联复制，可以使数据同步到间接连接的服务器中。
      
      
      示例如下：
      ```
      [mysqld]
      server-id=0103
      log_bin=slave-bin
      sync_binlog=1
      binlog-do-db=xinhu
      replicate-do-db=xinhu
      binlog_format=mixed
      log_slave_updates=1
      ```
      
   
   
   
   3. 修改完配置后重启数据库服务。 **#systemctl restart mysqld**
      
   
   
   
   
5. 在Slave2上同步Master的数据。 
   在Slave2数据库中使用如下命令同步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;
   ```
   
   
   
6. 查看Slave2信息。 
   1. 在Slave2数据库中使用如下命令开启slave模式。 **mysql\> start slave;**
      
   
   2. 在Slave1数据库中使用如下命令查看当前Slave的状态信息。 slave状态中如果以下两个信息都为"yes"状态，则同步成功。
      - Slave_IO_Running
      
      - Slave_SQL_Running
      
      
      到此，业务服务器的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.000032
      Read_Master_Log_Pos: 154
      Relay_Log_File: mysql-slave2-relay-bin.000041
      Relay_Log_Pos: 321
      Relay_Master_Log_File: master-bin.000032
      Slave_IO_Running: Yes
      Slave_SQL_Running: Yes
      Replicate_Do_DB: xinhu
      ```
      
   
   
   
   
   
 
