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

相关推荐
m0_613856293 小时前
mysql如何利用事务隔离级别解决特定业务冲突_mysql隔离方案选型
jvm·数据库·python
Adios7943 小时前
VPR:Pitts50K和Norland数据集下载
数据库
东风破1373 小时前
DM用户权限、表、约束等对象的基本操作,SQL日志的开启介绍
数据库·sql·dm达梦数据库
收获不止数据库3 小时前
达梦9发布会归来:AI 时代,我们需要一款什么样的数据库?
数据库·人工智能·ai·语言模型·数据分析
小宇的天下4 小时前
Virtuoso GUI 界面中的关键模块定义
数据库
bqq198610264 小时前
MySQL 5.7 与 MySQL 8.0 的主要区别
数据库·mysql
Elastic 中国社区官方博客4 小时前
Elastic-caveman : 在不损失 Elastic 最佳效果的情况下,将 AI 响应 tokens 减少64%
大数据·运维·数据库·人工智能·elasticsearch·搜索引擎·全文检索
互联网推荐官5 小时前
上海软件定制开发全流程拆解:需求分析、技术选型与交付管理的工程实践
大数据·数据库·需求分析
专注API从业者5 小时前
Open Claw 京东商品监控选品实战:一键抓取、实时监控、高效选品
java·服务器·数据库
大迪deblog5 小时前
系统架构师-数据库-数据库设计
数据库·oracle·系统架构