1. 概述
MySQL 主从同步(Replication)是一种数据备份和灾难恢复的解决方案,同时也可以用于负载均衡和读写分离。通过主从同步,可以将一个 MySQL 数据库服务器(主服务器)的数据实时复制到另一台或多台 MySQL 服务器(从服务器)。本文档将介绍如何配置 MySQL 主从同步,并提供示例操作。
2. 原理
MySQL 主从同步基于以下原理:
-
主服务器将所有更新记录到二进制日志(Binary Log)。
-
从服务器通过 I/O 线程读取主服务器的二进制日志,并将这些日志事件(Log Events)写入到本地的中继日志(Relay Log)。
-
从服务器通过 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 获取主服务器状态
在主服务器上执行以下命令,记录下 File
和 Position
的值,稍后会在从服务器配置中使用:
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_Running
和 Slave_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 主从同步。在实际生产环境中,主从同步有助于提高数据安全性和系统可用性,是数据库运维的重要手段。
标签:同步,配置,MASTER,MySQL,服务器,主从 From: https://blog.csdn.net/wu73guang5jian/article/details/143163861