环境配置
|
|
|
|---|---|
|
|
|
|
|
|
1. 编辑主库配置文件(my.cnf 或 my.ini)
找到主库的配置文件(通常在 /etc/mysql/my.cnf 或 /etc/my.cnf),添加以下内容:
[mysqld]# 启用二进制日志(主从复制的核心,记录所有数据变更操作)log-bin = mysql-bin# 主库的唯一标识(1-2^32-1 之间的整数,从库需不同)server-id = 1# 可选:指定需要同步的数据库(若不指定则同步所有数据库)# binlog-do-db = 你的数据库名# 可选:指定忽略同步的数据库# binlog-ignore-db = mysql
2. 重启主库服务
使配置生效:
systemctl restart mysqld # CentOS/RHEL# 或systemctl restart mysql # Ubuntu/Debian
3. 主库创建复制专用账号
-- 登录主库的 MySQL 命令行(mysql -u root -p)CREATE USER 'repl'@'10.132.47.62' IDENTIFIED BY 'shyshy521521';-- 从库IP为10.132.47.62GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.132.47.62';FLUSH PRIVILEGES;#如果有问题#删除原有账号DROP USER IF EXISTS 'repl'@'10.132.47.62';#重新创建 repl 账号CREATE USER 'repl'@'10.132.47.62' IDENTIFIED WITH mysql_native_password BY 'shyshy521521';#重新授予复制权限:GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.132.47.62';FLUSH PRIVILEGES; -- 刷新权限使配置生效
4. 查看主库二进制日志状态
登录主库的 MySQL 命令行(主库 IP 是 10.132.47.61):在主库服务器上执行:
mysql -u root -p
执行命令查询主库 binlog 状态:在 MySQL 命令行中执行:
SHOW MASTER STATUS;
记录结果中的 File 和 Position 值:执行后会返回类似如下的表格(示例):
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
-
File列的值(如 mysql-bin.000001)就是MASTER_LOG_FILE需要填写的内容。 -
Position列的值(如157)就是MASTER_LOG_POS需要填写的内容。
从库需要通过该账号读取主库的 binlog,建议创建专用账号而非用 root,增强安全性
二、从库(10.132.47.62)配置
从库的核心作用是读取主库 binlog 并回放操作,实现数据同步。
1. 编辑从库配置文件(my.cnf 或 my.ini)
添加以下内容:
[mysqld]# 从库的唯一标识(必须与主库不同)server-id = 2# 可选:启用中继日志(从库暂存主库binlog的日志,若仅做备份可不用,但建议启用)relay-log = mysql-relay-bin# 可选:中继日志索引文件relay-log-index = mysql-relay-bin.index
2. 重启从库服务
使配置生效:
systemctl restart mysqld # CentOS/RHEL# 或systemctl restart mysql # Ubuntu/Debian
3. 配置从库连接主库的参数
登录从库的 MySQL 命令行(mysql -u root -p),执行以下命令,将 <主库binlog文件> 和 <主库binlog位置> 替换为步骤 3.4 中记录的 File 和 Position:
CHANGE MASTER TOMASTER_HOST = '10.132.47.61', -- 主库IPMASTER_USER = 'repl', -- 复制账号MASTER_PASSWORD = 'shyshy521521', -- 复制账号密码MASTER_LOG_FILE = 'mysql-bin.000001', -- 主库binlog文件名MASTER_LOG_POS = 157; -- 主库binlog位置
4. 启动从库的复制进程
START SLAVE;
5. 验证从库状态
执行以下命令,确认 Slave_IO_Running 和 Slave_SQL_Running 均为 Yes:
SHOW SLAVE STATUS\G;
三、主从复制验证
在主库创建一个测试数据库 / 表并插入数据,验证从库是否同步:
主库操作:
CREATE DATABASE test_repl;USE test_repl;CREATE TABLE test_table (id INT, name VARCHAR(20));INSERT INTO test_table VALUES (1, 'test');
从库验证:
USE test_repl;SELECT * FROM test_table;-- 若能查询到 id=1, name='test',说明主从复制配置成功
关键概念解释
-
二进制日志(binlog):主库记录所有数据变更操作的日志文件,是主从复制的 “数据源”。 -
中继日志(relay log):从库暂存主库 binlog 的日志文件,从库通过回放中继日志实现数据同步。 -
server-id:主从库的唯一标识,用于区分集群中的不同节点,必须全局唯一。 -
Replication Slave 权限:从库账号需具备该权限才能读取主库 binlog。

