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

相关推荐
重启的码农几秒前
kv数据库-leveldb (13) 缓存 (Cache)
数据库
重启的码农1 分钟前
kv数据库-leveldb (12) 数据块 (Block)
数据库
lypzcgf4 分钟前
Coze源码分析-资源库-创建数据库-后端源码-应用/领域/数据访问层
数据库·go·后台·coze·coze源码分析·ai应用平台·agent平台
枫叶丹415 分钟前
金仓数据库替代MongoDB:电子证照系统国产化改造实战
数据库·mongodb
麦兜*16 分钟前
Redis 7.0 新特性深度解读:迈向生产级的新纪元
java·数据库·spring boot·redis·spring·spring cloud·缓存
可涵不会debug1 小时前
金仓数据库:破解电子证照国产化难题,开启政务效能新篇
数据库·政务
元闰子1 小时前
对 Agent-First 数据库的畅想
数据库·后端·aigc
java水泥工1 小时前
学科竞赛管理系统|基于SpringBoot和Vue的学科竞赛管理系统(源码+数据库+文档)
数据库·vue.js·spring boot
kobe_OKOK_2 小时前
django 数据库迁移
数据库·oracle·django
寻星探路2 小时前
数据库造神计划第二十一天---JDBC编程
数据库·oracle