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.在新的主服务器上执行数据库导入操作,此时从数据库就正常同步了,可以做到主从一致

相关推荐
广州灵眸科技有限公司27 分钟前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒3 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手3 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学3 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh5 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户71333585156246 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z123456789866 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD6 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo6 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
用户71333585156247 小时前
MySQL - InnoDB 的 Buffer Pool
mysql