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

linux mysql 8.X主从复制

准备两台linux服务器,注意要锁ip
在这里插入图片描述
在这里插入图片描述
我这里如上图
主库 192.168.5.5/24
从库 192.168.5.10/24

接下来确定mysql是否启动成功并且能从外部连接

主库
在这里插入图片描述

从库
在这里插入图片描述

主服务器配置

vim编辑主服务器配置

vim /etc/my.cnf

注意是下面那个
在这里插入图片描述
添加配置代码

log-bin=mysql-bin  # 配置二进制日志
server-id=100	#配置服务器id

在这里插入图片描述
配置好后 重启mysql

systemctl restart mysqld

在这里插入图片描述
创建用户当作复制账户

-- 1. 创建用户(如果不存在)
CREATE USER IF NOT EXISTS 'repl_user'@'%' IDENTIFIED BY 'Root@123456';-- 2. 授予复制权限
GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'%';-- 3. 刷新权限(使更改生效)
FLUSH PRIVILEGES;

查看MASTER 状态

SHOW MASTER STATUS;

在这里插入图片描述
注意此时不要再操作数据库

从库设置

依旧是去mysql设置id 注意不要一样
在这里插入图片描述
然后重启mysql服务

systemctl restart mysqld

停止现有复制(如果运行中):

STOP REPLICA;

重置复制状态

RESET REPLICA ALL;  -- 清除所有复制配置

执行下面sql配置复制

CHANGE REPLICATION SOURCE TOSOURCE_HOST = '192.168.5.5',SOURCE_USER = 'repl_user',SOURCE_PASSWORD = 'xxxx',SOURCE_LOG_FILE = 'mysql-bin.000001',SOURCE_LOG_POS = 1929,GET_SOURCE_PUBLIC_KEY = 1,  -- 允许获取公钥SOURCE_CONNECT_RETRY = 8,SOURCE_RETRY_COUNT = 1000,    -- 最大重试次数SOURCE_HEARTBEAT_PERIOD = 30, -- 心跳间隔CONNECTION_AUTO_FAILOVER = 1; -- 自动故障转移

启动复制

START REPLICA;

查看状态

SHOW REPLICA STATUS\G

在这里插入图片描述

主库
//设置日志定期清理防止满盘

SET GLOBAL binlog_expire_logs_seconds = 7776000; --保留90天//单位秒

验证
新建aaa
在这里插入图片描述
从机自动创建
在这里插入图片描述
ok

2025-8-8日补充

今天发现虚拟机重启后,主从复制没了
这是因为上面的配置缺少

  1. relay_log_recovery=1 – 中继日志恢复机制
  2. gtid_mode=ON – GTID全局事务标识
  3. enforce_gtid_consistency=ON – GTID一致性检查

先在从库添加

vim /etc/my.cnf

# 启用中继日志自动恢复
relay_log_recovery = 1# 启用GTID复制(避免位点失效)
gtid_mode = ON
enforce_gtid_consistency = ON# 可选:禁止启动时自动开启复制(只是为了方便故障排查)
skip_slave_start = 1

在这里插入图片描述

然后重启
sudo systemctl restart mysqld

然后登录mysql 配置GTID

STOP SLAVE;
RESET SLAVE ALL;-- 使用GTID自动定位(无需手动指定binlog位置)
CHANGE REPLICATION SOURCE TOSOURCE_HOST = '192.168.5.5',			-- 注意替换自己ipSOURCE_USER = 'repl_user',			-- 注意替换自己的用户SOURCE_PASSWORD = '^Lin@log64.ms$',  	-- 注意替换成自己的密码SOURCE_AUTO_POSITION = 1,       		-- ★ 关键改进:使用GTID自动定位 ★GET_SOURCE_PUBLIC_KEY = 1,SOURCE_CONNECT_RETRY = 8,SOURCE_RETRY_COUNT = 1000,SOURCE_HEARTBEAT_PERIOD = 30,SOURCE_SSL = 1,                 -- 新增:启用SSL加密SOURCE_TLS_VERSION = 'TLSv1.3', -- 新增:强制TLS版本NETWORK_NAMESPACE = '';         -- 明确指定网络命名空间START SLAVE;

在这里插入图片描述

主库更改

# 确保binlog持久化
sync_binlog = 1# 启用GTID(与从库匹配)
gtid_mode = ON
enforce_gtid_consistency = ON

在这里插入图片描述
然后登录主库mysql
查看状态

SHOW VARIABLES LIKE 'gtid_mode';

在这里插入图片描述
然后去从库从其slave,并查看状态

STOP SLAVE;
START SLAVE;
SHOW SLAVE STATUS\G;

在这里插入图片描述
重点关注如下字段
在这里插入图片描述
去可视化操作看下,可以发现主从复制好了

在这里插入图片描述
重启模拟关机

注意事项

重要注意事项

如果主库已有数据:需要重新建立全量同步

# 主库备份
mysqldump --all-databases --single-transaction --master-data=2 -uroot -p > full.sql# 从库导入
mysql -uroot -p < full.sql

SSL配置额外步骤(如启用)

  1. 主库生成SSL证书
-- 检查是否已有证书
SHOW VARIABLES LIKE '%ssl%';-- 若无证书,执行(MySQL 8.0+自动生成)
INSTALL COMPONENT "file://component_validate_password";
ALTER INSTANCE ROTATE INNODB MASTER KEY;
  1. 从库配置信任主库证书
-- 主库执行:查看公钥
SHOW STATUS LIKE 'Caching_sha2_password_rsa_public_key';-- 复制公钥值,在从库执行:
SET @@GLOBAL.replication_source_public_key_path = '主库公钥值';
http://www.dtcms.com/a/320564.html

相关文章:

  • 聚焦2025世界机器人大会:全尺寸人形交互陪伴机器人GR-3有哪些亮点值得关注?
  • React 原生部落的生存现状:观察“Hooks 猎人“如何用useEffect设陷阱反被依赖项追杀
  • vscode EIDE 无法编译,提示 “文件名、目录名或卷标语法不正确;
  • 论文精读(二)| 开源软件漏洞感知技术综述
  • spring.cache.type=SIMPLE详解
  • 2025年国内iPaaS平台精选
  • Docker搭建Jenkins实现自动部署:快速高效的持续集成之道!
  • 汉明码:从原理到实现的深度解析
  • 【软考中级网络工程师】知识点之路由器配置全解析
  • 微信小程序miniprogram-ci 模块实现微信小程序的自动上传功能
  • 分布式膛压应变测量系统
  • CSS BFC
  • Linux初级阶段性练习
  • Chrome与Firefox浏览器安全运维配置命令大全:从攻防到优化的专业实践
  • 内网穿透原理与部署实战指南:从理论到企业级应用
  • React Hooks 完全指南:从概念到内置 Hooks 全解析
  • C++-->stl: list的使用
  • 为什么输入 URL 后会显示页面?HTTP 协议的 “幕后操作”
  • docker缓存目录转移设置和生效过程
  • 稿定科技:多云架构下的 AI 存储挑战与 JuiceFS 实践
  • 负氧离子监测站:守护清新空气的科技卫士
  • 从零掌握 Java AWT:原理、实战与性能优化
  • 用JOIN替代子查询的查询性能优化
  • 《前端60问:从设备判断到性能优化全解》
  • 高校合作 | 世冠科技联合普华、北邮项目入选教育部第二批工程案例
  • Emacs 折腾日记(二十九)—— 打造C++ IDE
  • 弱电+机房+设备+运维资料合集方案(Word+PPT)
  • 天翼云与飞轮科技达成战略合作,共筑云数融合新生态
  • 深入解析基于Zookeeper分布式锁在高并发场景下的性能优化实践指南
  • SQL聚合函数:SUM与COUNT的区别