当前位置: 首页 > article >正文

MySQL的 主从同步

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.kler.cn/news/361276.html

相关文章:

  • 信息安全系统设计第七周
  • vue 项目i18n国际化,快速抽离中文,快速翻译
  • STM32的Flash页擦除操作的疑惑
  • 数据结构修炼——常见的排序算法:插入/希尔/选择/堆排/冒泡/快排/归并/计数
  • 深度学习 基本函数01
  • 圆周率的估算
  • rust入门基础总结
  • 人工智能技术的应用前景与生活工作变革
  • Yolo系列 V1和V2的对比
  • Spring security 如何进行身份认证
  • linux链接、目标文件全解析
  • TWS充电盒:【电源管理芯片汇总】
  • 3184. 构成整天的下标对数目 I
  • Telegram mini app开发极简示例
  • 批量合并PDF 文件的 5 大解决方案
  • springboot+vue美食推荐商城的设计与实现+万字lw
  • 格姗知识圈博客网站开源了!
  • 苍穹外卖学习笔记(三十二最终篇)
  • 构建高效智慧社区:Spring Boot Web框架应用
  • Ubuntu配置FTP
  • 基于图像拼接开题报告
  • Python 正则
  • Prompt提示词设计:如何让你的AI对话更智能?
  • EasyExcel自定义下拉注解的三种实现方式
  • 容灾与云计算概念
  • 加密DNS有什么用?