---
title: 正常切换
description: "1. 停止客户端应用（即停止客户端对主库的操作）。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0044.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0044.html
indexId: 327bb3a754840b27358d0d3f01b4de52798d6e4f64f78ed0970306b903ab3e1c80
---
# 正常切换

1. 停止客户端应用（即停止客户端对主库的操作）。
2. 确认所有从库同步完成，参考2。
3. 获取主库状态值，参考3。
4. 获取从库状态值，参考4。
5. 对比前面获取的主库状态值和从库状态值，确认从库是否完成所有relay log的回放，参考5。
6. 从库1升级为主库。

  a. 登录从库1。
    1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock

  b. 从库1升级为主库。
    停止slave，删除slave的所有信息，查看slave状态。

    1 2 3 stop slave; reset slave all; show slave status \G;

    查看master状态，记录File参数值（binlog日志文件）和Position参数值（binlog中最新操作的位置），8.4会用到这2个参数值。

    1 show master status;

    如果主库想重置File（binlog日志文件）和Position（binlog中最新操作的位置），则执行： 1 2 reset master; show master status;

  c. 确认新主库（从库1）的log_bin值为ON。
    1 show variables like 'log_bin';

    若log_bin值为OFF，执行下面的操作： 打开配置文件。 1 vim /etc/my.cnf 按“i”进入编辑模式，修改以下内容。 [mysqld] log-bin=mysql-bin 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。 重启MySQL服务，如果成功则没问题。 1 service mysql restart 或者 1 2 /usr/local/mysql/bin/mysqladmin -uroot -p123456 shutdown -S /data/mysql/run/mysql.sock /usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf &

7. 从库2指向新主库。

  a. 登录从库2。
    1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock

  b. 停止slave，删除slave的所有信息，查看slave状态。
    1 2 3 stop slave; reset slave all; show slave status \G;

  c. 配置同步方式，参考    4
。
  d. 从库2指向新主库（根据3的同步方式选择）。

    - 传统方式（master_log_file和master_log_pos是      6.b
新主库查询到的，根据实际情况修改）：
      1 change master to master_host='192.168.220.72',master_port=3306,master_user='replicate',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=155;


    - GTID方式：
      1 change master to master_host='192.168.220.72',master_port=3306,master_user='replicate',master_password='123456',master_auto_position=1;

  e. 启动从库。
    1 start slave;

  f. 查看从库状态。
    1 show slave status \G;

    下面两项值均为Yes，即表示设置从库成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

8. 旧主库指向新主库。

  a. 登录旧主库（当前已经是从库）。
    1 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock

  b. 停止slave，删除slave的所有信息，查看slave状态。
    1 2 3 stop slave; reset slave all; show slave status \G;

  c. 配置同步方式，参考    4
。
  d. 旧主库指向新主库（根据3的同步方式选择）。

    - 传统模式（master_log_file和master_log_pos是      6.b
新主库查询到的，根据实际情况修改）：
      1 change master to master_host='192.168.220.72',master_port=3306,master_user='replicate',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=155;


    - GTID模式：
      1 change master to master_host='192.168.220.72',master_port=3306,master_user='replicate',master_password='123456',master_auto_position=1;

  e. 启动从库。
    1 start slave;

  f. 查看从库状态。
    1 show slave status \G;

    下面两项值均为Yes，即表示设置从库成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes
