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 主从同步。在实际生产环境中,主从同步有助于提高数据安全性和系统可用性,是数据库运维的重要手段。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值