---
title: 配置从库
description: "1. 创建同步用户（为主从切换做准备）。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0017.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0017.html
indexId: 4e22a177a04b35904cb73ae6a79c5baf2ad7fd8b3047c7acdf0c4475cd61ad6380
---
# 配置从库

1. 创建同步用户（为主从切换做准备）。

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

  b. 建立一个连接账号（用户名是replicate，密码是123456），为该连接账号授予replication slave权限，刷新权限。
    1 2 3 create user 'replicate'@'%' identified by '123456'; grant replication slave on *.* to 'replicate'@'%'; flush privileges;

  c. 查看用户。
    1 select user,host from mysql.user;

  d. 退出从库。
    1 exit

2. 修改从库的配置文件。
场景一：整库复制。

  a. 修改从库1的配置文件。

    1. 打开“/etc/my.cnf”文件。
      1 vim /etc/my.cnf

    2. 按“i”进入编辑模式，在[mysqld]下添加如下内容，参数server-id、log-bin和relay_log的含义参见      表1
。

```
[mysqld]
server-id=2
log-bin=/data/mysql/data/mysql-bin
relay_log=/data/mysql/relaylog/relay-bin
```


    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  b. 修改从库2的配置文件。

    1. 打开“/etc/my.cnf”文件。
      1 vim /etc/my.cnf

    2. 按“i”进入编辑模式，在[mysqld]下添加如下内容，参数server-id、log-bin和relay_log的含义参见      表1
。

```
[mysqld]
server-id=3
log-bin=/data/mysql/data/mysql-bin
relay_log=/data/mysql/relaylog/relay-bin
```


    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
场景二：部分复制。
例如同步test库，不同步mysql库、information_schema库和performance_schema库。

  a. 修改从库1的配置文件。

    1. 打开“/etc/my.cnf”文件。
      1 vim /etc/my.cnf

    2. 按“i”进入编辑模式，在[mysqld]下添加如下内容，参数server-id、log-bin和relay_log的含义参见      表1
。

```
[mysqld]
server-id=2
log-bin=/data/mysql/data/mysql-bin
relay_log=/data/mysql/relaylog/relay-bin
replicate-do-db=test
replicate-ignore-db=mysql,information_schema,performance_schema
```


    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  b. 修改从库2的配置文件。

    1. 打开“/etc/my.cnf”文件。
      1 vim /etc/my.cnf

    2. 按“i”进入编辑模式，在[mysqld]下添加如下内容，参数server-id、log-bin和relay_log的含义参见      表1
。

```
[mysqld]
server-id=3
log-bin=/data/mysql/data/mysql-bin
relay_log=/data/mysql/relaylog/relay-bin
replicate-do-db=test
replicate-ignore-db=mysql,information_schema,performance_schema
```


      在不考虑主从切换的情况下，主库的配置文件中添加log-bin参数，从库的配置文件中添加relay_log参数。 在考虑主从切换的情况下，主库的配置文件中添加log-bin和relay_log参数，从库的配置文件中添加log-bin和relay_log参数。

    3. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
3. 重启MySQL服务。

  a. 重启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_safe --defaults-file=/etc/my.cnf &

  b. 查看数据库进程和端口号。
    1 2 ps -ef | grep mysql netstat -anpt | grep mysql

4. 配置同步方式。

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

  b. 配置同步。
同步方式有两种方式：传统方式和GTID方式。MySQL版本在5.7及以上时推荐使用GTID方式。

    - 传统方式配置如下，主库与从库配置保持一致：
      1 2 3 4 5 set global enforce_gtid_consistency='off'; set global gtid_mode='on_permissive'; set global gtid_mode='off_permissive'; set global gtid_mode='off'; show variables like '%gtid_mode%';


    - GTID方式配置如下，主库与从库配置保持一致：
      1 2 3 4 5 set global enforce_gtid_consistency='on'; set global gtid_mode='off_permissive'; set global gtid_mode='on_permissive'; set global gtid_mode='on'; show variables like '%gtid_mode%';

5. 建立主从关系（根据4的同步方式选择）。
  - 传统方式配置如下，需要指定binlog文件和位置：
    1 change master to master_host='192.168.220.58',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.58',master_port=3306,master_user='replicate',master_password='123456',master_auto_position=1;

第一次部署主从复制的时候需要执行change master命令指定主库以及同步方式，以后在不改变主库首位的情况下不用执行change master命令。


6. 启动从库。
  1 start slave;

  停止从库命令： stop slave;

7. 查看从库状态。

  a. 执行以下命令。
    1 show slave status\G;

    下面两项值均为Yes，表示从库启动成功。

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    如果Last_IO_Error报错“The slave I/O thread stops because master and slave have equal MySQL server UUIDs......”，参考查看MySQL主从复制状态时提示The slave I/O thread stops的解决方法解决后，重新查看从库状态。

  b. 退出从库。
    1 exit

8. 登录主库查看从库信息。
  1 2 /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock show slave hosts;

  如果Host列为空，参考校验MySQL主从数据一致性时提示no slaves were found的解决方法解决。
