zoukankan      html  css  js  c++  java
  • centos7下配置mysql5.7.24主从复制

    前置条件

    准备两台服务器(可以是虚拟机),系统为centos7

    此处演示的两台服务器:192.168.8.134、192.168.8.135

    第一步:安装mysql5.7.24

    先在两台服务器上安装mysql5.7.24,安装可参考:

    安装成功后,启动mysql。如果是虚拟机的话,在一台安装好之后,可以使用克隆功能,克隆后的虚拟机也会有安装好的mysql。

    第二步:配置主从复制

    配置之前,先在两台服务器上开启mysql。

    master:192.168.8.134

    slave: 192.168.8.135

    配置master

    1. 创建一个名为repl的用户

      CREATE USER repl IDENTIFIED BY 'L2019Mysql@';
      
    2. 授权slave数据库REPLICATION 权限

      GRANT REPLICATION  SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'L2019Mysql@';
      

      授权slave服务器可以通过repl用户可以远程访问master,来读取binlog中数据,实现数据同步。

    3. 修改my.cnf配置文件

      sudo vim /etc/my.cnf
      

      在/etc/my.cnf的[mysqld]下加入如下配置:

      # 启用二进制日志文件
      log-bin=mysql-bin
      # 服务器唯一ID
      server-id=1
      

      log-bin: 开启binlog

      server-id:指定服务器id(唯一,不能与slave服务器server-id相同)

    4. 重启mysql

      sudo systemctl restart mysqld
      
    5. 查看master二进制文件名称和偏移量

      show master status;
      
      +------------------+----------+--------------+------------------+-------------------+
      | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
      +------------------+----------+--------------+------------------+-------------------+
      | mysql-bin.000002 |      154 |              |                  |                   |
      +------------------+----------+--------------+------------------+-------------------+
      

      此处二进制文件名称为:mysql-bin.000002,偏移量为:154

    配置slave

    1. 修改my.cnf配置文件

      sudo vim /etc/my.cnf
      

      在/etc/my.cnf的[mysqld]下加入如下配置:

      # 服务器唯一ID
      server-id=2
      # 开启中继日志
      relay-log=slave-relay-bin
      # 开启中继日志索引
      relay-log-index=slave-relay-bin.index
      # 设置只读
      read_only=1
      

      此处设置只读是因为,在主从复制的情况下,通常数据写入master,从slave中读取数据。

    2. 重启mysql

      sudo systemctl restart mysqld
      
    3. 建立同步连接

      CHANGE MASTER TO master_host = '192.168.8.134',
      master_port = 3306,
      master_user = 'repl',
      master_password = 'L2019Mysql@',
      master_log_file = 'mysql-bin.000002',
      master_log_pos = 154;
      

      master_host: master服务器ip

      master_port: master上mysql服务端口

      master_user: 配置master时创建的repl用户

      master_password: master上repl用户密码

      master_log_file: 配置master第5步查询到的二进制日志文件名称

      master_log_pos: 配置master第5步查询到的偏移量

    4. 启动slave

      start slave;
      
    5. 查看slave状态

      show slave status G
      

      此时Slave_IO_Running、Slave_SQL_Running值都是Yes,说明主从复制配置成功

    测试

    在master上新建一个名为test的数据库

    create database test;
    

    在slave上查看

    show databases;
    

    可以看到test数据库已经同步到slave上了

    可能出现的错误

    1. [ERROR] Slave I/O for channel '': Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work. Error_code: 1593

    我在查看slave状态时,发现 Slave_IO_Running: No

    查看日志

    tail -f /var/log/mysqld.log
    

    发现上面的错误。

    原因:我在master: 192.168.8.134 上安装好mysql之后,使用克隆功能,创建了slave:192.168.8.135,导致master和slave上的server-uuid相同。

    在master和slave上分别查看server-uuid

    sudo cat /var/lib/mysql/auto.cnf
    

    发现值都是:server-uuid=a1ae101b-13e3-11e9-8f07-000c29b2fc93

    解决方法:

    先重命名slave上的auto.cnf

    sudo mv /var/lib/mysql/auto.cnf /var/lib/mysql/auto.cnf.bk
    

    然后重启slave上的mysql

    sudo systemctl restart mysqld
    

    查看slave状态

    show slave status G
    

    此时Slave_IO_Running、Slave_SQL_Running值都是Yes,说明主从复制配置成功

    参考资料

  • 相关阅读:
    [cf 599A]Patrick and Shopping
    [APIO2014] [Uoj103] [Bzoj3676] Palindromes回文串 [Manacher,后缀数组]
    [Hdu3068]最长回文[Manacher]
    [hdu2222] [AC自动机模板] Keywords Search [AC自动机]
    [Bzoj3940] [AC自动机,USACO 2015 February Gold] Censor [AC自动机模板题]
    [Poj3261] [Bzoj1717] [后缀数组论文例题,USACO 2006 December Gold] Milk Patterns [后缀数组可重叠的k次最长重复子串]
    [Poj1743] [后缀数组论文例题] Musical Theme [后缀数组不可重叠最长重复子串]
    [UOJ#35] [UOJ后缀数组模板题] 后缀排序 [后缀数组模板]
    [Bzoj4196] [NOI2015] 软件包管理器 [树链剖分,线段树]
    [Bzoj4195] [NOI2015] 程序自动分析 [并查集,哈希,map] 题解
  • 原文地址:https://www.cnblogs.com/zuidongfeng/p/10254431.html
Copyright © 2011-2022 走看看