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

MySQL 8.0.36 主从复制完整实验

一、环境准备

主从复制的前提是确保基础环境一致且网络互通,以下是本次实操的环境信息及前置要求。

1.1 环境说明

主机名ip地址操作系统mysql版本
master192.168.194.163rhel9.4yum安装mysql8.0.36
rep1192.168.194.164rhel9.4yum安装mysql8.0.36

1.2 前置条件说明(生产必看)

在开始配置前,需确保以下条件已满足,否则可能导致复制失败:

MySQL 已正常安装:主从库均已完成 MySQL 8.0.36 源码安装,且能通过/etc/init.d/mysqld start正常启动(源码安装需提前配置好服务脚本)。
网络互通:主库与从库之间能 ping 通,且主库已开放 3306 端口(MySQL 默认端口),关闭安全组件,或者开放3306端口。
时间同步:主从库时间需一致(误差建议≤1 秒),否则会导致 binlog 时间戳异常,影响复制。

二、主库master配置步骤

主库的核心作用是记录二进制日志(binlog),并允许从库通过复制账号读取 binlog。以下是完整配置流程:
**2.1 配置 MySQL 主配置文件 **(/etc/my.cnf.d/mysql-server.cnf或/etc/my.cnf)
MySQL 的主从复制依赖my.cnf(主配置文件)中的关键参数,需编辑该文件启用 binlog 并设置唯一标识:

[root@master ~]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
# MySQL数据存储目录
datadir=/var/lib/mysql
# MySQL socket文件路径,用于本地进程通信
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
# 主库唯一标识 
server_id=163
# 启用二进制日志(主从复制核心,日志文件前缀为binlog,文件会生成在datadir目录下)
log-bin=binlog# 修改my.cnf后需重启 MySQL 服务
[root@master ~]# systemctl restart mysqld
# 登录MySQL,验证server_id是否为163(主库配置值)
[root@master ~]# mysql -uroot -p -e"select @@server_id;"
Enter password: 
+-------------+
| @@server_id |
+-------------+
|         163 |
+-------------+

2.2 创建复制专用账号并授权
从库需通过一个专用账号连接主库读取 binlog,该账号只需replication slave权限(最小权限原则,提升安全性):

[root@master ~]# mysql -uroot -p123
# 创建复制账号rep,允许从任何IP连接(%表示所有IP,生产建议限定从库IP,如'192.168.2.104')
mysql> create user 'rep'@'%' identified  by 'rep123';
# 授予rep账号复制权限(replication slave是复制必需的最小权限)
mysql> grant  replication slave on *.* to 'rep'@'%';
# 查看权限
mysql>  show grants for 'rep'@'%';
+---------------------------------------------+
| Grants for rep@%                            |
+---------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `rep`@`%` |
+---------------------------------------------+

2.3 (可选) 锁定主库表,防止数据变更
全量备份主库数据前,需锁定所有表(仅允许读,禁止写),避免备份过程中数据不一致:

#为后面备份准备,注意生产环境要提前申请停机时间;
mysql> flush tables with read lock;
#提示:如果超过设置时间不操作会自动解锁。
mysql> show variables like '%timeout%';

2.4 查看主库 binlog 状态

#查看主库状态,即当前日志文件名和二进制日志偏移量
mysql> show master status;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000003 |     1210 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+

2.5 (可选) 备份主数据库中数据

mysqldump -uroot -p -A -B |gzip > /server/backup/mysql_bak.$(date +%F).sql.gz

2.6 (可选) 解锁

mysql> unlock tables;

2.7 (可选)主库备份数据上传到从库

scp  /server/backup/mysql_bak.2025-08-07.sql.gz 192.168.194.164:/server/backup

三、从库rep1配置步骤

从库需设置唯一的server_id(与主库不同),若后续需搭建 “级联复制”(从库作为其他从库的主库),可启用 binlog(本文仅需基础主从,启用 binlog 更灵活):
3.1 配置 MySQL 配置文件

[root@rep1 mysql]# vim /etc/my.cnf.d/mysql-server.cnf
[mysqld]
# MySQL数据存储目录
datadir=/var/lib/mysql
# MySQL socket文件路径,用于本地进程通信
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/run/mysqld/mysqld.pid
# 主库唯一标识 
server_id=164[root@rep1 ~]# systemctl restart mysqld
[root@rep1 ~]# mysql -uroot -p -e"select @@server_id;"

3.2 (可选)解压备份文件并恢复从库数据
将主库的全量备份文件解压,然后恢复到从库,确保从库初始数据与主库一致:

[root@rep1 backup]# ls
mysql_bak.2025-09-03.sql.gz
[root@rep1 backup]# gzip -d mysql_bak.2025-09-03.sql.gz 
# 恢复数据到从库(通过mysql命令执行备份SQL)
[root@rep1 backup]# mysql -uroot -p123 < mysql_bak.2025-09-03.sql 
[root@rep1 backup]# mysql -uroot -p -e 'show databases;'

3.3 配置从库复制参数
在从库 MySQL 中执行change master to命令,配置主库信息(含主库 IP、复制账号、binlog 文件名及位置),建立主从关联:

mysql> CHANGE REPLICATION SOURCE TO
SOURCE_HOST='192.168.194.163',
SOURCE_USER='rep',
SOURCE_PASSWORD='rep123',
SOURCE_LOG_FILE='binlog.000003',
SOURCE_LOG_POS=1210,
SOURCE_SSL=1; # 启动从库同步开关
mysql> start replica;

3.4 检查状态

mysql> show replica status\G
Slave_IO_Running: Yes    #IO线程是否打开
Slave_SQL_Running: Yes   #SQL线程是否打开

四、MySQL主从复制的状况监测

#在主库上查看该主库有多少从库
mysql> show replicas;
+-----------+------+------+-----------+--------------------------------------+
| Server_Id | Host | Port | Source_Id | Replica_UUID                         |
+-----------+------+------+-----------+--------------------------------------+
|       129 |      | 3306 |       200 | 5600a85a-72ee-11f0-9706-000c29f34354 |
+-----------+------+------+-----------+--------------------------------------+#主库创建一个数据库
[root@master ~]# mysql -uroot -p -e 'create database test1;'#在从库可以看到主库同步过来的数据库
[root@rep1 mysql]# mysql -uroot -p -e 'show databases;'
Enter password:
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
+--------------------+

文章转载自:

http://HZbEBtLF.wgLhz.cn
http://xyDtb8n3.wgLhz.cn
http://PfVzNZox.wgLhz.cn
http://1ywTP4vJ.wgLhz.cn
http://ruVxKn6Y.wgLhz.cn
http://y2da4uNV.wgLhz.cn
http://mV3qguYN.wgLhz.cn
http://FY1ZXZq6.wgLhz.cn
http://uaXsJw1E.wgLhz.cn
http://GTjNHFVM.wgLhz.cn
http://m9OUZXkS.wgLhz.cn
http://ZF2RrhCo.wgLhz.cn
http://m62kAQis.wgLhz.cn
http://l0GlgV3E.wgLhz.cn
http://a0f4RvSJ.wgLhz.cn
http://yilxOwiQ.wgLhz.cn
http://me4UsbNz.wgLhz.cn
http://EYawx07n.wgLhz.cn
http://vPyWxJIX.wgLhz.cn
http://kYWm2lgv.wgLhz.cn
http://yymhn1a5.wgLhz.cn
http://uP3tegVJ.wgLhz.cn
http://Cib3i78s.wgLhz.cn
http://V4sV09MS.wgLhz.cn
http://Pz9BPBjx.wgLhz.cn
http://19LN7bvD.wgLhz.cn
http://nukVfJkT.wgLhz.cn
http://eltDrkny.wgLhz.cn
http://erZZ5nss.wgLhz.cn
http://AdlgomWD.wgLhz.cn
http://www.dtcms.com/a/368423.html

相关文章:

  • 无需bootloader,BootROM -> Linux Kernel 启动模式
  • 【Vue3+TypeScript】H5项目实现企业微信OAuth2.0授权登录完整指南
  • 为什么MySQL可重复读级别不能完全避免幻读
  • Gradle Task 进阶:Task 依赖关系、输入输出、增量构建原理
  • 串口通信基础知识
  • webshell及冰蝎双击无法打开?
  • Doris 数据仓库例子
  • 从零构建企业级LLMOps平台:LMForge——支持多模型、可视化编排、知识库与安全审核的全栈解决方案
  • 如何根据Excel数据表生成多个合同、工作证、录取通知书等word文件?
  • Highcharts 数据源常见问题解析:连接方式、格式处理与性能优化指南
  • T06_RNN示例
  • 【Android】Room数据库的使用
  • CoolGuard风控系统配置评分卡、权重策略|QLExpress脚本
  • 【FastDDS】Layer Transport ( 02-Transport API )
  • 确保 SQL Server 备份安全有效的最佳实践
  • 盘点完今年CoRL最火的VLA论文,发现最强的机器人,竟是用“假数据”喂大的
  • 新闻丨重庆两江新区党工委副书记、管委会主任许宏球一行莅临华院计算考察指导
  • 基于YOLO目标检测模型的视频推理GUI工具
  • latex公式符号与字体
  • SQL Server事务隔离级别
  • SQL高效处理海量GPS轨迹数据:人员gps轨迹数据抽稀实战指南
  • 查询语言的进化:SQL之后,为什么是GQL?数据世界正在改变
  • 概念 | C标准库STL,C运行时库CRT
  • JAiRouter 配置文件重构纪实 ——基于单一职责原则的模块化拆分与内聚性提升
  • ZooKeeper架构深度解析:分布式协调服务的核心设计与实现
  • ResNet 迁移学习---加速深度学习模型训练
  • Django REST framework:SimpleRouter 使用指南
  • Vue3 频率范围输入失焦自动校验实现
  • 删除元素(不是删除而是覆盖)快慢指针 慢指针是覆盖位置,快指针找元素
  • 代码随想录算法训练营第三天| 链表理论基础 203.移除链表元素 707.设计链表 206.反转链表