当前位置: 首页 > java >正文

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

http://www.xdnf.cn/news/5784.html

相关文章:

  • 博客系统技术需求文档(基于 Flask)
  • R语言绘图 | 渐变火山图
  • Leetcode 3548. Equal Sum Grid Partition II
  • Andorid之TabLayout+ViewPager
  • 通过POI实现对word基于书签的内容替换、删除、插入
  • 网络协议与系统架构分析实战:工具与方法全解
  • 【应用密码学】实验五 公钥密码2——ECC
  • 深入 MySQL 查询优化器:Optimizer Trace 分析
  • 初入OpenCV
  • 【Qt】qss语法详解
  • [250512] Node.js 24 发布:ClangCL 构建,升级 V8 引擎、集成 npm 11
  • MapReduce 模型
  • AI 模型训练轻量化技术在军事领域的实战应用与技术解析
  • Excelize 开源基础库发布 2.9.1 版本更新
  • ThingsBoard使用Cassandra部署时性能优化
  • c++进阶——哈希表的实现
  • Linux进程信号处理(26)
  • Maven 动态插件配置:Profile的灵活集成实践
  • 小白成长之路-vim编辑
  • 阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)
  • 快速上手Linux nfs网络文件系统
  • 仿正点原子驱动BMP280气压传感器实例
  • 3335. 字符串转换后的长度 I
  • Babylon.js学习之路《四、Babylon.js 中的相机(Camera)与视角控制》
  • MySQL基本查询
  • git经验
  • Electron-Vue3、Electron-React、Electron-Angular打造舆情监控系统项目
  • SimScape物理建模实例1--单质量-弹簧-阻尼系统
  • maxtext开源程序是一个简单、高性能和可扩展的 Jax LLM!
  • rsync