MySQL的 主从同步

news/2024/10/23 7:29:25/

1. 概述

MySQL 主从同步(Replication)是一种数据备份和灾难恢复的解决方案,同时也可以用于负载均衡和读写分离。通过主从同步,可以将一个 MySQL 数据库服务器(主服务器)的数据实时复制到另一台或多台 MySQL 服务器(从服务器)。本文档将介绍如何配置 MySQL 主从同步,并提供示例操作。

2. 原理

MySQL 主从同步基于以下原理:

  1. 主服务器将所有更新记录到二进制日志(Binary Log)。

  2. 从服务器通过 I/O 线程读取主服务器的二进制日志,并将这些日志事件(Log Events)写入到本地的中继日志(Relay Log)。

  3. 从服务器通过 SQL 线程执行中继日志中的事件,从而实现数据的同步。

3. 环境准备

  • 两台安装了 MySQL 的服务器(本文以 MySQL 5.7 版本为例)。

  • 主服务器 IP:192.168.1.100

  • 从服务器 IP:192.168.1.101

4. 配置主服务器

4.1 修改配置文件

编辑主服务器的 MySQL 配置文件 my.cnf(或 my.ini),添加以下配置:

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-format = ROW
expire_logs_days = 10

4.2 创建复制用户

在主服务器上创建一个用于复制的用户,并授予相应的权限:

CREATE USER 'replicator'@'%' IDENTIFIED BY 'replicator_password';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
FLUSH PRIVILEGES;

4.3 获取主服务器状态

在主服务器上执行以下命令,记录下 FilePosition 的值,稍后会在从服务器配置中使用:

SHOW MASTER STATUS;

5. 配置从服务器

5.1 修改配置文件

编辑从服务器的 MySQL 配置文件 my.cnf(或 my.ini),添加以下配置:

[mysqld]
server-id = 2
relay-log = mysql-relay-bin

5.2 配置从服务器

在从服务器上执行以下命令,配置主从同步:

CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='replicator',
MASTER_PASSWORD='replicator_password',
MASTER_LOG_FILE='mysql-bin.000001',  -- 之前记录的 File 值
MASTER_LOG_POS=154;                  -- 之前记录的 Position 值

5.3 启动从服务器复制线程

在从服务器上执行以下命令,启动复制线程:

START SLAVE;

5.4 检查从服务器状态

在从服务器上执行以下命令,检查复制状态:

SHOW SLAVE STATUS\G

如果 Slave_IO_RunningSlave_SQL_Running 都是 Yes,则表示主从同步配置成功。

6. 测试主从同步

在主服务器上创建一个测试数据库和表:

CREATE DATABASE testdb;
USE testdb;
CREATE TABLE test_table (id INT AUTO_INCREMENT PRIMARY KEY, value VARCHAR(255));
INSERT INTO test_table (value) VALUES ('Test Value');

在从服务器上检查是否同步成功:

USE testdb;
SELECT * FROM test_table;

如果从服务器上能够查询到主服务器插入的数据,说明主从同步正常工作。

7. 注意事项

  • 确保主从服务器的时间同步,以免出现同步错误。

  • 如果主服务器已经运行了一段时间,需要在从服务器上初始化数据,然后指定同步位置。

  • 根据实际需求,可以配置不同的复制模式(如基于语句的复制、基于行的复制等)。

8. 结语

通过以上步骤,我们成功配置了 MySQL 主从同步。在实际生产环境中,主从同步有助于提高数据安全性和系统可用性,是数据库运维的重要手段。


http://www.ppmy.cn/news/1541261.html

相关文章

如何在 HarmonyOS NEXT 中使用 @Builder 装饰器优化 UI 组件的复用?

摘要 在鸿蒙 NEXT 开发中,Builder 装饰器是一种轻量级的 UI 元素复用机制,它允许开发者将重复使用的 UI 元素抽象成一个方法,并在 build() 方法中多次调用,以实现 UI 结构的复用。以下是如何使用 Builder 装饰器来优化 UI 组件复…

一篇文章入门Pytest!

目录 一、安装 二、语法 三、执行 四、前后置setup/teardown 五、fixture 六、数据驱动 七、报告 一、安装 需要安装的库 pytest pytest-html 生成HTML格式的测试报告 pytest-xdist 用例分布式执行,多CPU分发 pytest-ordering …

计算机毕业设计Python+Spark知识图谱课程推荐系统 课程用户画像系统 课程大数据 课程爬虫 课程大屏 mooc慕课推荐系统 大数据毕业设计

《PythonSpark知识图谱课程推荐系统》开题报告 一、研究背景与意义 随着互联网技术的快速发展,在线教育平台已成为人们获取知识、提升技能的重要途径。然而,面对海量的课程资源,用户往往难以快速找到符合自己兴趣和需求的课程。传统的课程推…

解密 Redis:如何通过 IO 多路复用征服高并发挑战!

文章目录 一、什么是 IO 多路复用?二、为什么 Redis 要使用 IO 多路复用?三、Redis 如何实现 IO 多路复用?四、IO 多路复用的核心机制:epoll五、IO 多路复用在 Redis 中的工作流程六、IO 多路复用的优点七、IO 多路复用使用中的注…

Scala的内部类

Scala中的内部类(Inner Class)是指定义在另一个类的内部的类。 内部类可以访问外部类的成员(包括私有成员),并且可以与外部类的实例紧密地绑定在一起。 内部类在Scala中非常有用,尤其是在需要封装特定功能…

.net framework 3.5sp1组件安装进度条不动启动错误怎么解决

安装.NET Framework 3.5 SP1通常需要管理员权限。这是因为安装过程可能需要修改系统文件和注册表项,这些操作通常需要管理员权限才能执行。在Windows系统上,安装.NET Framework 3.5 SP1通常通过控制面板中的“启用或关闭Windows功能”选项进行&#xff0…

JMeter模拟并发请求

PostMan不是严格意义上的并发请求工具,实际是串行的,如果需要测试后台接口并发时程序的准确性,建议采用JMeter工具。 案例:JMeter设置20个并发卖票请求,查看后台是否存在超卖的情况 方式一:一共10张票&…

Java毕业设计 基于SpringBoot发卡平台

Java毕业设计 基于SpringBoot发卡平台 这篇博文将介绍一个基于SpringBoot发卡平台,适合用于Java毕业设计。 功能介绍 首页 图片轮播 商品介绍 商品详情 提交订单 文章教程 文章详情 查询订单  查看订单卡密 客服   后台管理 登录 个人信息 修改密码 管…