原文链接:https://blog.liuzijian.com/post/9f8ede8e-26de-75d6-6347.html

在MySQL中,主从复制(Master-Slave Replication)是一种常用的数据库复制技术,用于将主服务器(Master)的数据实时复制到一个或多个从服务器(Slave)。这有助于负载均衡、备份和高可用性。

前提条件

  • 主服务器从服务器的MySQL版本应兼容(最好相同版本)。
  • 所有服务器时钟应该同步,可以使用NTP确保时间一致性。
  • 从服务器初始时的数据要与主服务器一致(可以通过备份恢复的方式实现)。

一、配置主服务器(Master)

  1. 编辑主服务器的MySQL配置文件

    打开MySQL主服务器的配置文件 my.cnf 。

    添加或修改以下内容:

    [mysqld]
    server-id = 1 # 唯一的服务器ID,任意正整数,但需要在集群中唯一
    log-bin = mysql-bin # 启用二进制日志,确保日志记录所有数据变更
    binlog-do-db = my_database # 要复制的数据库(可以指定多个,也可以省略)
    • server-id:每个服务器都需要有唯一的server-id
    • log-bin:启用二进制日志,主从复制就是基于二进制日志的。
    • binlog-do-db:指定要复制的数据库,可以指定多个数据库。省略这行会复制所有数据库。

    重启MySQL服务:

    sudo systemctl restart mysqld
  2. 创建用于复制的用户

    在主服务器上登录MySQL并创建一个用于复制的用户。

     CREATE USER 'slave'@'%' IDENTIFIED BY 'password';
    
     GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
    
     FLUSH PRIVILEGES;

    这里创建了一个名为slave的用户,密码为password,并授予了复制权限。

  3. 获取主服务器的状态信息

    在主服务器上运行以下命令,记录输出的信息:

    SHOW MASTER STATUS;

    输出类似以下内容:

    +------------------+----------+--------------+------------------+
    | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 | 12345 | my_database | |
    +------------------+----------+--------------+------------------+
    • File:二进制日志的文件名。
    • Position:当前日志的偏移量。这两个值将在配置从服务器时使用。

二、配置从服务器(Slave)

  1. 编辑从服务器的MySQL配置文件

    打开从服务器的配置文件my.cnf,添加或修改如下内容:

    [mysqld]
    server-id = 2 # 唯一的服务器ID,与主服务器不同
    relay-log = mysql-relay # 中继日志,用于存储从主服务器接收到的日志

    重启从服务器的MySQL服务:

    sudo systemctl restart mysqld
  2. 初始化从服务器

    登录从服务器的MySQL,并执行以下步骤来设置复制:

    CHANGE MASTER TO
    MASTER_HOST='master_ip_address',
    MASTER_USER='replicator',
    MASTER_PASSWORD='password',
    MASTER_LOG_FILE='mysql-bin.000001', -- 从SHOW MASTER STATUS获取的日志文件名
    MASTER_LOG_POS=12345; -- 从SHOW MASTER STATUS获取的偏移量

    在这里,master_ip_address是主服务器的IP地址,MASTER_LOG_FILEMASTER_LOG_POS是前面SHOW MASTER STATUS命令中看到的值。

  3. 启动复制

    在从服务器上启动复制进程:

     START SLAVE;
  4. 检查复制状态

    检查从服务器的复制状态,确保复制正常运行:

    SHOW SLAVE STATUS\G;

    查看输出中的两个关键字段:

    • Slave_IO_Running: Yes
    • Slave_SQL_Running: Yes

    如果这两个值都是Yes,说明主从复制正常。如果不是,可以检查错误信息并进行排查。

三、测试主从复制

  1. 在主服务器上创建一个测试表或插入数据:

    USE my_database;
    CREATE TABLE test_table (id INT PRIMARY KEY, data VARCHAR(50));
    INSERT INTO test_table VALUES (1, 'Test Data');
  2. 在从服务器上检查该表是否存在以及数据是否同步:

     USE my_database;
    SELECT * FROM test_table;

    如果能看到相同的表和数据,说明主从复制配置成功。

MySQL5.7x 主从复制的更多相关文章

  1. MySQL5.6主从复制最佳实践

    MySQL5.6     主从复制的配置  环境 操作系统:CentOS-6.6-x86_64 MySQL 版本:mysql-5.6.26.tar.gz 主节点 IP:192.168.31.57    ...

  2. mysql5.7 主从复制的正常切换【转】

    目前环境如下: master server IP:172.17.61.131 slave server IP:172.17.61.132 mysql version: mysql-5.7.21-lin ...

  3. mysql5.7主从复制--在线变更复制类型【转】

    这里说一下关于如何在线变更复制类型(日志复制到全局事物复制),参考课程:mysql5.7复制实战 先决条件     (1)集群中所有的服务器版本均高于5.7.6(2)集群中所有的服务器gtid_mod ...

  4. MySQL5.6主从复制方案

    MySQL5.6主从复制方案 1.主备服务器操作 环境:CentOS 6.3/6.4 最小化缺省安装,配置好网卡. 安装MySQL前,确认Internet连接正常,以便下载安装文件. # 新增用户组 ...

  5. MySQL5.7Gtid主从复制总是遇到日志被清等出现无法正常主从复制

    最近最是在MySQL5.7上的的gtid主从复制问题总是遇上下面问题: Last_Error: Coordinator stopped because there were error(s) in t ...

  6. Mysql5.6主从复制-基于binlog

    MySQL5.6开始主从复制有两种方式:基于日志(binlog):基于GTID(全局事务标示符). 此文章是基于日志方式的配置步骤 环境: master数据库IP:192.168.247.128sla ...

  7. MySQL5.6主从复制搭建基于日志(binlog)

    什么是MySQL主从复制 简单来说,就是保证主SQL(Master)和从SQL(Slave)的数据是一致性的,向Master插入数据后,Slave会自动从Master把修改的数据同步过来(有一定的延迟 ...

  8. MySQL5.7 主从复制配置

    一.主从复制原理 MySQL 主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致.每一个主从复制的连接,都有三个线程.拥有多个从库的主 ...

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

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

  10. mysql5.7主从复制

    1.简介 1.1主从复制 是指建立一个和主数据库完全一样的数据库环境,称为从数据库:主数据库一般是实时的业务数据库,从数据库的作用和使用场合一般有几个: 一是作为后备数据库,主数据库服务器故障后,可切 ...

随机推荐

  1. delphi12 Android Edit SDK安装

    安装 delphi 12.1 后,编译 FMX Android 程序失败! 查找原因,SDK配置全是叹号! 之前用过SDK Manager.exe,直接打开即可以选择下载,但现在发现没有了,查找资料如 ...

  2. 通过squid将本地作为代理让不可联网的远端服务器联网

    一种方法 https://unix.stackexchange.com/questions/116191/give-server-access-to-internet-via-client-conne ...

  3. 在哪里可以找到官方的mysql容器图像?

    如果您在容器上部署MySQL,那么首要任务之一就是找到正确的镜像. 有一定程度的混乱,尤其是当我们试图帮助部署有问题的人时. 例如,当人们说我使用的是官方的docker镜像- 这到底意味着什么?Doc ...

  4. docker之基本命令(2)

    上一篇介绍了一下,docker使用的有些基础命令.这次再来深入的了解一下较为复杂的docker命令   管理指令 说明 docker  container 用于管理容器 docker image 用于 ...

  5. 基于 MongoTemplate 实现MongoDB的复杂查询

    MongoDB是典型的非关系型数据库,但是它的功能越来越复杂,很多项目中,我们为了快速拓展,甚至直接使用Mongo 来替代传统DB做数据持久化.虽然MongoDB在支持具体业务时没有问题,但是由于它是 ...

  6. S2P销讯通·CRM-移动的客户关系精细化管理

    S2P销讯通·CRM是一款专为医药企业设计的移动客户关系管理软件.该软件安装在手机上,集主数据管理.辖区指标管理.客户管理.SFE管理.OTC动销管理.精细化招商管理.市场活动管理以及流向采集清洗与统 ...

  7. WinForm(C/S)项目中使用矢量字体(FontAwsome、Elegant)图标

    1.介绍 字体图标在Web应用中最为常见,字体图标是矢量的,矢量图意味着每个图标都能在所有大小的屏幕上完美呈现,可以随时更改大小和颜色,而且不失真.字体图标常见的有Font Awesome和Elega ...

  8. 【Amadeus原创】查看正在运行的docker run参数

    如何查看一个运行docker 容器的docker run启动参数,假设没有使用docker-compose这样的编排工具. 现在我如何进行重启,如何找回此前的启动命令? [root@mysql3 ~] ...

  9. 基于.NET WinForm开发的一款硬件及协议通讯工具

    前言 今天大姚给大家分享一款基于.NET WinForm开发的一款硬件及协议通讯工具:PLC-CommunTools. 项目介绍 PLC-CommunTools是一款基于.NET WinForm开发的 ...

  10. jenkins集群 - HTMLreport测试报告

    一.安装 HTML Publisher plugin 插件 插件下载地址 二.配置构建后步骤 三.编辑报告执行脚本 四.安装 Startup Trigger 和 Groovy 插件 1.安装原因: J ...