前置条件

准备两台服务器(可以是虚拟机),系统为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,说明主从复制配置成功

参考资料

centos7下配置mysql5.7.24主从复制的更多相关文章

  1. centos7下安装mysql5.7.24

    第一步:下载rpm包 sudo wget http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/mysql57-community-rel ...

  2. Centos7 下配置mysql5.6主从复制实例(一主两从)

    标签:mysql 数据库 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://8941355.blog.51cto.com/89313 ...

  3. SVN CentOS7 下配置svn的安装及基础配置介绍

    CentOS7 下配置svn的安装及基础配置介绍 by:授客 QQ:1033553122 目录 一. 二. 三. 四. 五. 六. 七. 一.      实践环境 CentOS 7操作系统(CentO ...

  4. Eclipse 下配置MySql5.6的连接池,使用Tomcat7.0

    目前找到的最简单的配置方法.   1.首先在eclipse中创建一个Dynamical Web Application,在WebContent文件夹下的META-INF文件夹中创建新的名为conten ...

  5. Linux(CentOS7)下配置多个tomcat

    记录 Linux(CentOS7) 下配置多个 tomcat 的操作过程. 一.下载tomcat 前提:安装配置好jdk环境,未配置可参考Linux(CentOS7)下安装jdk1.8. 从 tomc ...

  6. centos7中安装mysql5.6版本 + 主从复制

    centos安装5.6版本:CentOS7下使用YUM安装MySQL5.6 主从复制:Mysql主从复制与读写分离原理及配置教程 主从复制问题及配置 卸载和安装5.7版本:CentOS 7 安装与卸载 ...

  7. CentOS7编译安装MySQL5.7.24

    目录 安装依赖 安装boost 编译安装MySQL 配置 登录MySQL,修改密码 安装依赖 (1)cmake是新版MySQL的编译工具 sudo yum install gcc gcc-c++ pc ...

  8. Centos7 安装配置mysql5.6

    Centos7下完美安装并配置mysql5.6   Centos7将默认数据库mysql替换成了Mariadb,对于我们这些还想用mysql的人来说并不是一个好消息. 最近我搜罗了网上各种安装教程,各 ...

  9. 日常工作问题解决:centos7下配置网卡以及查询网卡UUID

    目录 1.配置网卡 1.1 网卡查看命令:ifconfig -a 1.2 网卡配置文件说明 1.3 重启网络服务 2.查看确认网卡UUID 2.1 网卡配置文件正常时 2.2 网卡配置文件不可用或者配 ...

随机推荐

  1. nginx gzip压缩配置

    gzip(GNU-ZIP)是一种压缩技术.经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多.gzip 的压缩页面需要浏览器和服务器双方都支持,实际上就是服务 ...

  2. GitHub 的简单使用

    GitHub 的简单使用 2016-01-28 16:32:481909浏览1评论 一.Git 版本控制器 commit:做一个版本:commit new file:添加到版本中,下边填的是项目的描述 ...

  3. Scrum立会报告+燃尽图(十月十五日总第六次):视频上传及选题介绍工作

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2196 Scrum立会master:田良 一.小组介绍 组长:付佳 组员: ...

  4. Scrum立会报告+燃尽图(Beta阶段第二周第三次)

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2411 项目地址:https://coding.net/u/wuyy694 ...

  5. Kotlin 学习笔记(一)

    (Kotlin 学习笔记的文档结构基本按照 Java 核心技术一书的目录排列) 基本程序设计结构 数据类型 数字 类型 宽度 Double 64 Float 32 Long 64 Int 32 Sho ...

  6. 对石家庄铁道大学网站UI的分析

         作为我们团队的PM,老师对我们提出了一些额外的要求,所以我发表这篇博客来谈一下对石家庄铁道大学网站UI的分析.      首先,PM 对项目所有功能的把握, 特别是UI.最差的UI, 体现了 ...

  7. C++寒假计划

    课程 西北工业大学的c++程序设计 理由 这个课程里的内容都比较详细,能比较全面的讲解C++,我们是从C过渡到C++的,所以我之前看了阚道洪的面向对象程序设计的课程,他讲解了两者的差别,还有C++对C ...

  8. 【IdentityServer4文档】- 术语&演示服务器和测试

    术语 你需要了解一下,规范.文档和对象模型使用的术语有哪些. IdentityServer IdentityServer 是一个 OpenID Connect 提供程序 - 它实现了 OpenID C ...

  9. Java 将数字转为16进制,然后转为字符串类型 将空格去掉。终结版

    //十进制转为十六进制 public class ArrayTest7 { public static void main(String[] args){ System.out.println(toH ...

  10. git向github提交时不输入账号密码

    缘由:每次向github提交代码时都要输入用户名密码,太麻烦了,影响效率 解决方案: 方案一: 在你的用户目录下新建一个文本文件.git-credentials Windows:C:/Users/us ...