---
title: 配置主库
description: "1. 创建同步用户。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0016.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0016.html
indexId: 775e2e8701e9d521cd396731040a339f77752003a8222aac77576cf66c759d3c80
---
# 配置主库

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;

    或者

    1 2 3 create user 'replicate'@'192.168.220.58' identified by '123456'; grant replication slave on *.* to 'replicate'@'192.168.220.58'; flush privileges;

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

  d. 退出主库。
    1 exit

  e. 在从库上用replicate账号访问主库(-h和-P后面分别为主库的IP地址和端口，根据实际情况填写)。
    1 /usr/local/mysql/bin/mysql -h192.168.220.58 -P3306 -ureplicate -p123456 -S /data/mysql/run/mysql.sock

2. 修改主库的配置文件。

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

  b. 按“i”进入编辑模式，在[mysqld]下添加如下内容。

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


**表1 配置参数**

| 参数项 | 说明 | 备注 |
| --- | --- | --- |
| server\-id | 设置服务器唯一ID。 | 默认值是1，用户可以自定义，需要保证主从复制部署中每个数据库的server\-id唯一，例如：主库的server\-id=1，从库1的server\-id=2，从库2的server\-id=3。 |
| log\-bin | 开启binlog，设置binlog的目录和名字。 | 默认值是mysql\-bin，用户可以自定义，例如：log\-bin=/data/mysql/data/mysql\-bin 执行show variables like 'log\_bin';和show variables like 'log\_bin\_basename';查看binlog。 |
| relay\_log | 开启relay\_log，设置relay\_log的目录和名字。 | 默认值是空（非NULL），用户可以自定义，例如：relay\_log=/data/mysql/relaylog/relay\-bin 执行show variables like 'relay\_log';和show variables like 'relay\_log\_basename';查看relay log。 |


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

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

  a. 重启MySQL服务。
    1 service mysql restart

    或者

```
/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%';

gtid_mode设置顺序：

gtid_mode的值只能相邻状态转换修改。例如：从OFF到ON，只能从OFF修改为OFF_PERMISSIVE，然后从OFF_PERMISSIVE修改为ON_PERMISSIVE，再从ON_PERMISSIVE修改为ON；反之亦然，即OFF <->OFF_PERMISSIVE <-> ON_PERMISSIVE <-> ON。


5. 查看主库状态。

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

  b. 查看主库状态。
    1 show master status;

    File列和Position列都有值则说明正常。记录File参数值（binlog日志文件）和Position参数值（binlog中最新操作的位置），后面“建立主从关系”配置从库（建立主从关系（根据前面部署的同步方式选择）。）时会用到这2个参数值。

  c. 退出主库。
    1 exit
