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

相关推荐
vivo互联网技术2 小时前
从 10 分钟到 1 秒:ES 深度分页任意跳页的三轮优化实战
服务器·数据库·redis·elasticsearch·深度分页
数据技术说3 小时前
MySQL 迁移实战——如何实现真正的"零改造"平滑切换
mysql
倔强的石头_17 小时前
《Kingbase护城河》——猎捕慢查询:执行计划的微观解析与索引调优实战
数据库
SelectDB19 小时前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
jiayou642 天前
KingbaseES 表级与列级加密完全指南
数据库·后端
GBASE3 天前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr3 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
唐青枫4 天前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
吃糖的小孩4 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
小满8784 天前
5.Mysql事务隔离级别与锁机制
mysql