centos7.x下,使用宝塔进行主从复制的原理和实践

操作原理:

一、主库配置

1.修改 MySQL 配置文件

编辑主库配置文件(路径根据实际系统可能不同)

vim /etc/my.cnf

添加以下配置

mysqld

server-id = 1 # 唯一 ID,主库设置为 1

log-bin = mysql-bin # 启用二进制日志

binlog_format = ROW # 推荐使用 ROW 模式

expire_logs_days = 7 # 日志保留天数

max_binlog_size = 100M # 单个日志文件大小

skip_name_resolve = ON # 跳过域名解析(可选)

重启 MySQL 服务

systemctl restart mysqld

2.登录到主服务器:

mysql -u root -p

3.创建复制用户

CREATE USER 'replicator'@'%' IDENTIFIED BY 'password';

GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';

FLUSH PRIVILEGES;

4.查看主服务器的状态

SHOW MASTER STATUS;

二、从库配置

1.修改 MySQL 配置文件

编辑从库配置文件

vim /etc/my.cnf

添加以下配置

mysqld

server-id = 2 # 唯一 ID,不能与主库相同

relay-log = mysql-relay-bin # 启用中继日志

read_only = ON # 从库只读(可选,确保数据安全)

重启 MySQL 服务

systemctl restart mysqld

2.登录到主服务器:

mysql -u root -p

3.配置从服务器

CHANGE MASTER TO

MASTER_HOST='主服务器IP',

MASTER_USER='replicator',

MASTER_PASSWORD='password',

MASTER_LOG_FILE='记录的File值',

MASTER_LOG_POS=记录的Position值;

4.启动复制

START SLAVE;

5.检查从服务器的状态

SHOW SLAVE STATUS\G

查看 Slave_IO_Running 和 Slave_SQL_Running 是否都为 Yes,这表示复制正在正常运行。

关键字段检查:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0(表示无延迟)

若出现错误,检查 Last_IO_Error 或 Last_SQL_Error。

三、如何遇到错误后,排查解决后,重新执行

STOP SLAVE;

RESET SLAVE ALL;

-- 重新执行

CHANGE MASTER TO ......

START SLAVE;

SHOW SLAVE STATUS;

四、同步主库现有数据(可选)

1.主库导出数据

使用 mysqldump 导出数据(自动记录 binlog 位置)

mysqldump -uroot -p --all-databases --master-data=1 > /tmp/master_dump.sql(或使用宝塔备份功能)

2.将备份文件导入从库

复制文件到从库

scp /tmp/master_dump.sql root@slave_ip:/tmp/

从库导入数据

mysql -uroot -p < /tmp/master_dump.sql


实战案例

一、主库配置(10.0.12.16)

1.配置防火墙,主库服务器对从库IP开放3306端口

2.宝塔修改配置文件,保存后重启

server-id = 1 # 唯一 ID,主库设置为 1,默认不需要修改

3.phpMyadmin执行SQL,创建复制用户(10.0.16.16为从库IP)

CREATE USER 'replicator'@'10.0.16.16' IDENTIFIED BY 'abcc1b259f57f8b9111';

GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'10.0.16.16';

FLUSH PRIVILEGES;

4.记录的File值,记录的Position值

SHOW MASTER STATUS;

二、从库配置(10.0.16.16)

1.宝塔修改配置文件,保存后重启

server-id = 2 # 唯一 ID,不能与主库相同

relay-log = mysql-relay-bin # 启用中继日志

2.phpMyadmin执行SQL

CHANGE MASTER TO

MASTER_HOST='10.0.12.16',

MASTER_USER='replicator',

MASTER_PASSWORD='abcc1b259f57f8b9111',

MASTER_LOG_FILE='mysql-bin.000005',

MASTER_LOG_POS=3629;

3.启动复制

START SLAVE;

4.查看从服务器的状态

SHOW SLAVE STATUS;

三、同步主库现有数据

1.从有数据的服务器上使用宝塔进行备份

2.上传备份数据到新的主服务器

scp /www/backup/database/mysql/hz_fw_game/hz_fw_game_2025-05-13_20-43-58_mysql_data_vmdYO.sql.zip root@xxx.229.73.57:/root/

3.在新的主服务器上执行数据库导入操作,此时从数据库就正常同步了,可以做到主从一致

相关推荐
蜘蛛小助理36 分钟前
研发团队效率神器:手把手教你用蜘蛛表格构建自动化任务管理中枢
数据库·自动化·任务管理·多维表格·蜘蛛表格
计算机毕设VX:Fegn08951 小时前
计算机毕业设计|基于springboot + vue酒店管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
Hui Baby1 小时前
全局事务入口感知子事务方法-TCC
java·开发语言·数据库
Leon-Ning Liu1 小时前
Oracle 19c RAC报错ORA-17503,ORA-27300,ORA-27301,ORA-27302
数据库·oracle
嘟嘟w1 小时前
DROP DELETE 和TRUNCATE的区别?
数据库·mysql·oracle
Navicat中国2 小时前
Navicat x 达梦技术指引 | 数据字典
数据库·达梦·可视化·navicat·数据字典
running up2 小时前
Spring核心深度解析:AOP与事务管理(TX)全指南
java·数据库·spring
一水鉴天2 小时前
整体设计 定稿 之6 完整设计文档讨论及定稿 之1(豆包周助手)
java·前端·数据库
倔强的石头_3 小时前
金仓数据库(KingbaseES) 开发实战:常见迁移挑战与技术解析
数据库
编程小白gogogo3 小时前
苍穹外卖后端环境搭建-数据库环境搭建
数据库