---
title: 配置主库
description: "1. 确认配置。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0019.html
sourcePath: /source/zh/kunpengdbs/ecosystemEnable/MySQL/kunpengmysqlmasterslave_03_0019.html
indexId: 41feaa25f6bbdbae9dc06f1040a15e0717d818793aba9d6a05fed4009f98497280
---
# 配置主库

1. 确认配置。

  a. 确认log-bin和relay_log已配置。

    - 修改配置文件。
    - 动态修改（登录数据库后通过SQL语句修改）。
  b. 确认server-id已配置。

    - 修改配置文件。
    - 动态修改（登录数据库后通过SQL语句修改）。
2. 创建同步用户。

  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.222.120 -P3306 -ureplicate -p123456 -S /data/mysql/run/mysql.sock

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

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

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

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


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

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
4. 重启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

5. 启动半同步复制。

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

  b. 安装半同步复制插件rpl。
    1 install plugin rpl_semi_sync_master soname 'semisync_master.so';

    查看插件rpl。

    1 show plugins;

  c. 启动半同步复制。
    1 set global rpl_semi_sync_master_enabled=1;

  d. 查看半同步复制是否启动成功。
    1 show variables like '%rpl_semi_sync_master_enabled%';

    值为ON说明启动成功。

6. 配置同步方式。

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

  b. 配置同步。
同步方式有2种方式：传统方式和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。


7. 查看主库状态。

  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中最新操作的位置），后面配置从库6时会用到这2个参数值。

  c. 退出主库。
    1 exit
