MySQL主从复制(Master-Slave Replication)是一种常见的解决方案,通过将主数据库(Master)的数据复制到一个或多个从数据库(Slave)来实现数据同步和负载均衡。小编将详细介绍如何配置MySQL主从复制,以实现高可用性和数据同步。
1. 主从复制的基本概念
主数据库(Master)
主数据库是数据的源头,所有写操作(如INSERT、UPDATE、DELETE)都在主数据库上执行。主数据库将这些操作记录到二进制日志(Binary Log)中。
从数据库(Slave)
从数据库通过读取主数据库的二进制日志来复制数据。从数据库可以用于读操作(如SELECT),从而分担主数据库的负载。
二进制日志(Binary Log)
二进制日志是MySQL记录所有更改数据库数据的操作的文件。主从复制依赖于二进制日志来实现数据同步。
2. 配置主从复制的步骤
环境准备
假设我们有两台服务器:
主服务器(Master):192.168.1.1
从服务器(Slave):192.168.1.2
确保两台服务器上都安装了MySQL,并且网络互通。
配置主数据库(Master)
修改主数据库配置文件
在主服务器的MySQL配置文件(通常是my.cnf或my.ini)中添加或修改以下配置:
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
server-id:主服务器的唯一标识,必须为1。
log-bin:启用二进制日志,并指定日志文件的前缀。
binlog-format:指定二进制日志的格式,推荐使用ROW格式。
重启MySQL服务
保存配置文件后,重启MySQL服务以使配置生效:
sudo systemctl restart mysql
创建复制用户
在主数据库上创建一个用于复制的用户,并授予复制权限:
CREATE USER 'repl'@'192.168.1.2' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.2';
FLUSH PRIVILEGES;
获取主数据库状态
在主数据库上执行以下命令,记录File和Position的值,后续在从数据库配置时会用到:
SHOW MASTER STATUS;
配置从数据库(Slave)
修改从数据库配置文件
在从服务器的MySQL配置文件(通常是my.cnf或my.ini)中添加或修改以下配置:
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read-only=1
server-id:从服务器的唯一标识,必须为2。
relay-log:指定中继日志文件的前缀。
read-only:设置从数据库为只读模式,防止误操作。
重启MySQL服务
保存配置文件后,重启MySQL服务以使配置生效:
sudo systemctl restart mysql
配置从数据库复制
在从数据库上执行以下命令,配置复制:
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='repl',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
MASTER_HOST:主数据库的IP地址。
MASTER_USER和MASTER_PASSWORD:主数据库上创建的复制用户的用户名和密码。
MASTER_LOG_FILE和MASTER_LOG_POS:主数据库上SHOW MASTER STATUS命令输出的File和Position值。
启动复制
在从数据库上启动复制:
START SLAVE;
检查复制状态
在从数据库上执行以下命令,检查复制状态:
SHOW SLAVE STATUS\G
确保Slave_IO_Running和Slave_SQL_Running的值都为Yes,表示复制已成功启动。
3. 验证主从复制
在主数据库上创建测试数据
在主数据库上创建一个测试数据库和表,并插入一些数据:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE test_table (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO test_table (id, name) VALUES (1, 'Alice'), (2, 'Bob');
在从数据库上查询数据
在从数据库上查询测试数据,验证数据是否已同步:
USE test_db;
SELECT * FROM test_table;
如果数据已同步,您应该能够看到与主数据库相同的数据。
MySQL主从复制是实现高可用性和数据同步的有效方案。通过这篇文章整理的步骤,您可以成功配置MySQL主从复制,并验证数据的同步。在实际应用中,您还可以根据需求进一步优化和扩展主从复制架构,以满足更高的性能和可用性要求。