鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

配置从库

  1. 创建同步用户(为主从切换做准备)。
    1. 登录从库。
      1
      /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock
      
    2. 建立一个连接账号(用户名是replicate,密码是123456),为该连接账号授予replication slave权限,刷新权限。
      1
      2
      3
      create user 'replicate'@'%' identified by '123456';
      grant replication slave on *.* to 'replicate'@'%';
      flush privileges;
      
    3. 查看用户。
      1
      select user,host from mysql.user;
      
    4. 退出从库。
      1
      exit
      
  2. 修改从库的配置文件。
    • 场景一:全库复制。
      1. 修改从库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”保存并退出编辑。
      2. 修改从库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库。

      1. 修改从库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”保存并退出编辑。
      2. 修改从库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
        3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    • 在不考虑主从切换的情况下,主库的配置文件中添加log-bin参数,从库的配置文件中添加relay_log参数。
    • 在考虑主从切换的情况下,主库的配置文件中添加log-bin和relay_log参数,从库的配置文件中添加log-bin和relay_log参数。
  3. 重启MySQL服务。
    1. 重启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 &
      
    2. 查看数据库进程和端口号。
      1
      2
      ps -ef | grep mysql
      netstat -anpt | grep mysql
      
  4. 启动半同步复制。
    1. 登录从库。
      1
      /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock
      
    2. 安装半同步复制插件rpl。
      1
      install plugin rpl_semi_sync_slave soname 'semisync_slave.so';
      

      查看插件rpl。

      1
      show plugins;
      

    3. 启动半同步复制。
      1
      set global rpl_semi_sync_slave_enabled=1;
      

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

      值为ON说明启动成功。

      关闭半同步复制(先关主库,再关从库),则变成异步复制。

      1. 主库执行如下命令,关闭半同步复制。
        1
        2
        set global rpl_semi_sync_master_enabled=0;
        show variables like '%rpl_semi_sync_master_enabled%';
        
      2. 从库执行如下命令,关闭半同步复制。
        1
        2
        set global rpl_semi_sync_slave_enabled=0;
        show variables like '%rpl_semi_sync_slave_enabled%';
        
  5. 配置同步方式。
    1. 登录从库。
      1
      /usr/local/mysql/bin/mysql -uroot -p123456 -S /data/mysql/run/mysql.sock
      
    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%';
        
  6. 建立主从关系(根据5的同步方式选择)。
    • 传统方式配置如下,需要指定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命令。而且主从复制建立成功后,重启主从数据库后(主库和从库重启无先后顺序)会自动建立主从复制,分别登录主库和从库查看状态是否正常即可。

  7. 启动从库。
    1
    start slave;
    

    停止从库。

    1
    stop slave;
    
  8. 查看从库状态。
    1. 执行以下命令。
      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 IO thread stops的解决方法解决后,重新查看从库状态。

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