MySQL 主从复制搭建
MySQL 主从复制是许多应用程序中常见的架构设计,用于实现数据的冗余备份和负载均衡。通过主从复制,主数据库(Master)上的数据更改能够实时地同步到从数据库(Slave),从而实现高可用性与数据的安全性。本篇文章将详细介绍如何搭建 MySQL 主从复制,包含必要的代码示例。
环境准备
在开始之前,确保你有两台服务器,一台作为主服务器,另一台作为从服务器。假设主服务器的IP为 192.168.1.100
,从服务器的IP为 192.168.1.200
,MySQL版本为 5.7
。
1. 主服务器(Master)的配置
1.1 编辑 MySQL 配置文件
在主服务器上,需要编辑 MySQL 的配置文件 my.cnf
,通常位置在 /etc/my.cnf
。添加或修改以下内容:
[mysqld]
server-id = 1 # 唯一标识
log_bin = mysql-bin # 启用二进制日志
binlog_do_db = test_db # 指定要复制的数据库
1.2 重启 MySQL 服务
执行以下命令重启 MySQL 服务,以使配置生效:
sudo systemctl restart mysqld
1.3 创建复制用户
在 MySQL 中创建一个用于复制的用户,并授权:
CREATE USER 'replica_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica_user'@'%';
FLUSH PRIVILEGES;
1.4 确认二进制日志
运行以下命令,确认二进制日志已经开启:
SHOW MASTER STATUS;
记录下输出的信息,例如文件名和位置,稍后在从服务器中会用到。
2. 从服务器(Slave)的配置
2.1 编辑 MySQL 配置文件
在从服务器上,编辑同样的 my.cnf
配置文件,进行如下设置:
[mysqld]
server-id = 2 # 唯一标识
2.2 重启 MySQL 服务
sudo systemctl restart mysqld
2.3 配置主服务器信息
在从服务器上,使用以下命令配置主服务器的信息:
CHANGE MASTER TO
MASTER_HOST='192.168.1.100',
MASTER_USER='replica_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001', # 替换为实际的文件名
MASTER_LOG_POS=123; # 替换为实际的位置
2.4 启动复制进程
执行以下命令启动从服务器的复制进程:
START SLAVE;
2.5 检查复制状态
用以下命令检查从服务器的复制状态:
SHOW SLAVE STATUS\G;
查看 Slave_IO_Running
和 Slave_SQL_Running
是否均为 Yes
,如果是,则表示主从复制配置成功。
3. 测试主从复制
在主服务器中创建一个测试数据库和表:
CREATE DATABASE test_db;
USE test_db;
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
INSERT INTO users (name) VALUES ('Alice'), ('Bob');
然后在从服务器中查看数据:
USE test_db;
SELECT * FROM users;
如果从服务器中能够看到刚才在主服务器中插入的数据,说明主从复制成功。
总结
本文详细介绍了如何搭建 MySQL 的主从复制环境,从配置主服务器到从服务器的步骤,并提供了相关的代码示例。主从复制不仅可以提高数据的安全性,还能提升系统的可用性,适用于许多生产环境。希望你能通过本文的指导顺利实现 MySQL 主从复制的搭建。