在非Docker环境下搭建MySQL主从复制集群,是保障数据安全的重要灾备方案。本文将详细讲解原生安装配置的全流程。
适用场景:MySQL 直接安装在系统上(非 Docker)
| 项目 | 主库 | 从库 |
|---|---|---|
| 服务器IP | 192.168.1.100(示例) |
192.168.1.101(示例) |
| MySQL版本 | 5.6.51 | 5.6.51 |
| 端口 | 3306 | 3306 |
根据操作系统不同,编辑对应的配置文件:
[mysqld] log-bin = mysql-bin server-id = 1 binlog-format = ROW expire-logs-days = 7
完成修改后需要重启MySQL服务:
# Linux systemctl restart mysql # Windows net stop mysql56 && net start mysql56
通过以下命令验证配置是否生效:
SHOW MASTER STATUS;
CREATE USER 'replicator'@'%' IDENTIFIED BY '你的密码'; GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%'; FLUSH PRIVILEGES;
# Linux firewall-cmd --permanent --add-port=3306/tcp && firewall-cmd --reload # Windows(PowerShell) New-NetFirewallRule -DisplayName "MySQL" -Direction Inbound -Protocol TCP -LocalPort 3306 -Action Allow
[mysqld] server-id = 2
修改配置后需要重启MySQL服务。
主库操作:
mysqldump -u root -p --all-databases --master-data --single-transaction > master_dump.sql
传输到从库:
scp master_dump.sql [email protected]:/tmp/
从库恢复:
mysql -u root -p < /tmp/master_dump.sql
CHANGE MASTER TO MASTER_HOST = '主库IP', MASTER_PORT = 3306, MASTER_USER = 'replicator', MASTER_PASSWORD = '你的密码', MASTER_LOG_FILE = 'mysql-bin.xxxxxx', MASTER_LOG_POS = xxxx; START SLAVE;
注意:MASTER_LOG_FILE和MASTER_LOG_POS需通过主库执行SHOW MASTER STATUS获取。
SHOW SLAVE STATUSG
以下三个关键指标必须全部显示为Yes:
| 字段 | 必须等于 |
|---|---|
Slave_IO_Running |
Yes |
Slave_SQL_Running |
Yes |
Seconds_Behind_Master |
0 |
SHOW SLAVE STATUS → Slave has read all relay logSTOP SLAVE; RESET SLAVE ALL; SET GLOBAL read_only = OFF;
流程总结:主库开 binlog → 建复制用户 → 导出数据给从库 → 从库导入 → CHANGE MASTER → START SLAVE
通过上述步骤,您已成功搭建MySQL主从复制集群,为数据安全提供了可靠保障。如需了解更多数据库配置技巧,可参考以下相关技术文档。