---
title: 主备切换
description: "在完成了先前的数据一致性校验并确保所有从库数据准确无误后，接下来将执行主备切换操作，以调整现有的主从复制部署结构，并在完成主备切换后进行新主库和新从库的一致性校验。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengdbs_mysql_bestpractices_21_0017.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengdbs_mysql_bestpractices_21_0017.html
indexId: 025f90048be1c5baa7cbf6c2e87623281d77c1394ef913851f3f59fb8318412f87
---
# 主备切换

在完成了先前的数据一致性校验并确保所有从库数据准确无误后，接下来将执行主备切换操作，以调整现有的主从复制部署结构，并在完成主备切换后进行新主库和新从库的一致性校验。

- 主备切换之前的结构包括一个主库和两个从库，其中主库和从库1是x86服务器，而从库2是鲲鹏服务器。
- 主备切换之后的最终目标是将鲲鹏服务器提升为主库，同时将原有的主库降级为x86架构的新从库。

主备切换部署规划变化如图1所示。

图1 主备切换架构变化示意图

以下内容为主备切换的详细操作步骤，以下所有步骤执行完成后，新从库便能够成功连接到新的鲲鹏主库，并保持数据同步状态。

1. 鲲鹏从库2升级为主库。

  a. 登录到即将成为新主库的鲲鹏服务器（原从库2）。
  b. 停止从库服务并删除所有从库配置信息，准备将其提升为主库。
    1 2 stop slave; reset slave all;

  c. 确认新主库的“log_bin”的值为“ON”。
    1 show variables like 'log_bin';

    如果“log_bin”的值为“OFF”，则执行以下操作开启“log_bin”。 打开配置文件“/etc/my.cnf”。 1 vim /etc/my.cnf 按“i”进入编辑模式，在配置文件中找到[mysqld]部分（如果不存在，请自行添加）。在该部分下，确保添加或修改以下内容。 log-error=/data/mysql/log/mysql.log pid-file=/data/mysql/run/mysqld.pid [mysqldump] quick [mysql] no-auto-rehash [client] default-character-set=utf8 [mysqld] basedir=/usr/local/mysql socket=/data/mysql/run/mysql.sock tmpdir=/data/mysql/tmp datadir=/data/mysql/data default_authentication_plugin=caching_sha2_password port=3306 user=mysql server-id=3 #新主库服务器的server-id为3 log-bin=/data/mysql/data/mysql-bin relay_log=/data/mysql/relaylog/relay-bin report_host=192.168.0.3 #192.168.0.3为新主库服务器的IP地址，请根据实际情况修改 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。 重启MySQL服务使配置生效。重启MySQL服务的命令请参见3。

2. x86从库1连接到新主库。

  a. 登录x86服务器的从库1。
  b. 停止从库服务并删除所有从库配置信息。
    1 2 stop slave; reset slave all;

  c. 配置从库1连接到新主库。
    1 change master to master_host='192.168.0.3',master_port=3306,master_user='replicate',master_password='123456',master_auto_position=1, get_master_public_key=1;

    192.168.0.3为新主库服务器的IP地址，请根据实际情况修改。

  d. 启动并验证从库状态。
    1 2 start slave; show slave status \G;

    “Slave_IO_Running”和“Slave_SQL_Running”均为“Yes”，表示从库1已成功连接到新主库。

3. 旧主库连接到新主库。

  a. 登录旧主库（当前已经是从库）。
  b. 停止从库服务并删除所有从库配置信息。
    1 2 stop slave; reset slave all;

  c. 配置旧主库连接新主库。
    1 change master to master_host='192.168.0.3',master_port=3306,master_user='replicate',master_password='123456',master_auto_position=1, get_master_public_key=1;

    192.168.0.3为新主库服务器的IP地址，请根据实际情况修改。

  d. 启动并验证从库状态。
    1 2 start slave; show slave status \G;

    “Slave_IO_Running”和“Slave_SQL_Running”均为“Yes”，表示旧主库已成功连接到新主库。

4. 再次进行主从一致性校验。
  1 pt-table-checksum h=192.168.0.3,u=checksums,p=123456,P=3306 --databases=tpcc --no-check-binlog-format --replicate=pt.checksums --max-lag=3 --recursion-method=hosts

  192.168.0.3为新主库服务器的IP地址，请根据实际情况修改。
