首页/新闻资讯/正文详情

MySQL 8.0 GTID半同步主从架构部署实践

发布时间:2026/11/3 23:18:48 来源:云帆数科 栏目:资讯中心
MySQL 8.0 GTID半同步主从架构部署实践
1. MySQL 8.0 GTID半同步主从架构部署指南在数据库高可用架构设计中主从复制是最基础也是最关键的环节。今天我将分享在Ubuntu 25.10系统上通过二进制方式安装MySQL 8.0并配置GTID半同步主从复制的完整过程。这个方案特别适合需要保证数据零丢失的生产环境我在多个金融级项目中验证过其可靠性。先看下我们的目标架构1个主节点Masterdb101 (10.0.0.101)2个从节点Replicadb102 (10.0.0.102) 和 db103 (10.0.0.103)全部采用GTID复制模式启用增强半同步复制AFTER_SYNC模式2. 环境准备与基础配置2.1 系统环境检查首先确认三台服务器的基本配置# 检查CPU和内存 lscpu free -h # 检查磁盘空间 df -h /data建议生产环境至少满足4核CPU8GB内存/data目录50GB以上空间2.2 系统参数优化在Ubuntu 25.10上需要调整的关键参数# 禁用THP透明大页 echo never /sys/kernel/mm/transparent_hugepage/enabled echo never /sys/kernel/mm/transparent_hugepage/defrag # 调整文件描述符限制 echo * soft nofile 65535 /etc/security/limits.conf echo * hard nofile 65535 /etc/security/limits.conf # 关闭swap生产环境建议 swapoff -a sed -i /swap/s/^/#/ /etc/fstab注意这些优化需要在所有节点上执行特别是关闭THP对MySQL性能影响很大。2.3 创建专用用户和目录为MySQL创建专用用户和目录结构# 创建mysql用户禁止登录 useradd -r -s /usr/sbin/nologin mysql # 创建数据目录 mkdir -p /data/3306/data chown -R mysql:mysql /data/33063. MySQL 8.0二进制安装3.1 下载与解压从MySQL官网下载8.0.36版本的二进制包wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz tar xvf mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz -C /usr/local/ ln -s /usr/local/mysql-8.0.36-linux-glibc2.12-x86_64 /usr/local/mysql3.2 解决依赖问题常见依赖问题解决方案# 解决libaio依赖 ln -s /lib/x86_64-linux-gnu/libaio.so.1t64 /lib/x86_64-linux-gnu/libaio.so.1 # 解决ncurses依赖 ln -s /lib/x86_64-linux-gnu/libncurses.so.6 /lib/x86_64-linux-gnu/libncurses.so.5 ln -s /lib/x86_64-linux-gnu/libtinfo.so.6 /lib/x86_64-linux-gnu/libtinfo.so.5 ldconfig3.3 初始化数据库采用不安全模式初始化生产环境不建议/usr/local/mysql/bin/mysqld --initialize-insecure \ --usermysql \ --datadir/data/3306/data \ --basedir/usr/local/mysql安全初始化方式推荐生产使用/usr/local/mysql/bin/mysqld --initialize \ --usermysql \ --datadir/data/3306/data \ --basedir/usr/local/mysql初始化后会生成临时密码记录在error log中。4. 配置MySQL服务4.1 基础配置文件创建/etc/my.cnf基础配置[mysqld] usermysql basedir/usr/local/mysql datadir/data/3306/data socket/tmp/mysql.sock log-error/data/3306/mysql-error.log pid-file/data/3306/mysql.pid # 性能相关 innodb_buffer_pool_size2G innodb_log_file_size1G max_connections5004.2 服务管理配置配置systemd服务cat /usr/lib/systemd/system/mysqld.service EOF [Unit] DescriptionMySQL Server Afternetwork.target [Service] Usermysql Groupmysql ExecStart/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf LimitNOFILE65535 Restarton-failure RestartSec5 [Install] WantedBymulti-user.target EOF启动MySQL服务systemctl daemon-reload systemctl enable --now mysqld systemctl status mysqld4.3 设置root密码mysqladmin -uroot password YourSecurePassword123!5. GTID半同步主从配置5.1 主节点配置编辑主节点db101的my.cnf[mysqld] server_id101 log_binmysql-bin binlog_formatROW binlog_row_imageFULL sync_binlog1 gtid_modeON enforce_gtid_consistencyON log_slave_updatesON # 半同步配置 plugin-loadrpl_semi_sync_sourcesemisync_source.so rpl_semi_sync_source_enabled1 rpl_semi_sync_source_timeout1000 rpl_semi_sync_source_wait_for_replica_count1 rpl_semi_sync_source_wait_pointAFTER_SYNC5.2 从节点配置从节点db102/db103配置[mysqld] server_id102 # db103改为103 log_binmysql-bin binlog_formatROW gtid_modeON enforce_gtid_consistencyON log_slave_updatesON # 半同步配置 plugin-loadrpl_semi_sync_replicasemisync_replica.so rpl_semi_sync_replica_enabled15.3 创建复制账号在主节点执行CREATE USER repl% IDENTIFIED BY ComplexPassword123!; GRANT REPLICATION SLAVE ON *.* TO repl%; ALTER USER repl% REQUIRE SSL; # 生产环境建议启用SSL5.4 配置主从关系在每个从节点执行CHANGE REPLICATION SOURCE TO SOURCE_HOST10.0.0.101, SOURCE_PORT3306, SOURCE_USERrepl, SOURCE_PASSWORDComplexPassword123!, SOURCE_AUTO_POSITION1, GET_SOURCE_PUBLIC_KEY1; START REPLICA;6. 验证与监控6.1 复制状态检查在主节点检查SHOW STATUS LIKE Rpl_semi_sync%; --------------------------------------------------- | Variable_name | Value | --------------------------------------------------- | Rpl_semi_sync_source_clients | 2 | | Rpl_semi_sync_source_net_avg_wait_time | 0 | | Rpl_semi_sync_source_net_wait_time | 0 | | Rpl_semi_sync_source_net_waits | 5 | | Rpl_semi_sync_source_no_times | 1 | | Rpl_semi_sync_source_no_tx | 0 | | Rpl_semi_sync_source_status | ON | | Rpl_semi_sync_source_timefunc_failures | 0 | | Rpl_semi_sync_source_tx_avg_wait_time | 512 | | Rpl_semi_sync_source_tx_wait_time | 2563 | | Rpl_semi_sync_source_tx_waits | 5 | | Rpl_semi_sync_source_wait_pos_backtraverse | 0 | | Rpl_semi_sync_source_wait_sessions | 0 | | Rpl_semi_sync_source_yes_tx | 5 | ---------------------------------------------------在从节点检查SHOW REPLICA STATUS\G *************************** 1. row *************************** Replica_IO_State: Waiting for source to send event Source_Host: 10.0.0.101 Source_User: repl Source_Port: 3306 Connect_Retry: 60 Source_Log_File: mysql-bin.000002 Read_Source_Log_Pos: 196 Relay_Log_File: db102-relay-bin.000002 Relay_Log_Pos: 409 Relay_Source_Log_File: mysql-bin.000002 Replica_IO_Running: Yes Replica_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Source_Log_Pos: 196 Relay_Log_Space: 623 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Source_SSL_Allowed: No Source_SSL_CA_File: Source_SSL_CA_Path: Source_SSL_Cert: Source_SSL_Cipher: Source_SSL_Key: Seconds_Behind_Source: 0 Source_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Source_Server_Id: 101 Source_UUID: 444c6e4f-ef8a-11f0-8bdc-000c29012c7f Source_Info_File: mysql.slave_master_info SQL_Delay: 0 SQL_Remaining_Delay: NULL Replica_SQL_Running_State: Replica has read all relay log; waiting for more updates Source_Retry_Count: 86400 Source_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Source_SSL_Crl: Source_SSL_Crlpath: Retrieved_Gtid_Set: 444c6e4f-ef8a-11f0-8bdc-000c29012c7f:1-5 Executed_Gtid_Set: 444c6e4f-ef8a-11f0-8bdc-000c29012c7f:1-5 Auto_Position: 1 Replicate_Rewrite_DB: Channel_Name: Source_TLS_Version: Source_public_key_path: Get_source_public_key: 1 Network_Namespace:6.2 半同步功能测试在两个从节点停止IO线程STOP REPLICA IO_THREAD;在主节点执行DDL操作CREATE DATABASE sync_test;此时操作会挂起约1秒配置的超时时间然后自动降级为异步复制。恢复从节点IO线程START REPLICA IO_THREAD;7. 关键注意事项性能影响半同步复制会增加约30%的写入延迟网络质量对性能影响很大建议主从节点在同一个机房监控Rpl_semi_sync_source_tx_avg_wait_time指标故障处理当从库宕机超过超时时间主库会自动降级为异步复制从库恢复后需要手动执行START REPLICA重新建立连接定期检查Last_IO_Error和Last_SQL_Error监控建议# 监控半同步状态 SELECT * FROM performance_schema.replication_group_member_stats; # 监控复制延迟 SHOW REPLICA STATUS\G # 监控GTID执行情况 SHOW MASTER STATUS; SHOW SLAVE STATUS;生产环境优化建议设置sync_binlog1和innodb_flush_log_at_trx_commit1调整rpl_semi_sync_source_timeout根据业务需求通常500-2000ms考虑使用MySQL Router实现自动故障转移这套架构我在多个生产环境部署过最长的已经稳定运行3年多。关键是要做好监控和定期演练确保故障时能快速恢复。对于金融级应用建议再配合MGR使用实现自动故障转移。

相关推荐

伸缩臂叉装车技术趋势与工程应用解析
伸缩臂叉装车技术趋势与工程应用解析

1. 伸缩臂叉装车行业现状与核心价值解析在建筑工地、港口码头和大型仓储中心,我们经常能看到一种兼具叉车与起重机功能的特殊设备——伸缩臂叉装车(Telehandler)。这种设备通过独特的伸缩臂设计,实现了传统叉车无法比拟的高度和跨… · 2026/11/3 23:18:48

RabbitMQ核心原理与应用实践指南
RabbitMQ核心原理与应用实践指南

1. 消息队列与RabbitMQ概述在现代分布式系统中,消息队列(MQ)作为解耦生产者和消费者的中间件,已经成为系统架构中不可或缺的组成部分。RabbitMQ作为最流行的开源消息代理之一,实现了高级消息队列协议(AMQP),为分布式应用提供了可靠… · 2026/11/3 23:18:48

CPU设计与体系结构实验指导:从基础模块到五级流水线
CPU设计与体系结构实验指导:从基础模块到五级流水线

简介:这份《LS-CPU-EXB-003 CPU设计与体系结构实验指导手册v1.0(教师版)》面向计算机专业本科生、研究生及授课教师,服务于《数字逻辑》《计算机组成原理》《计算机体系结构》等课程的实验教学,帮助解决从基础运算单元… · 2026/11/3 23:17:48

清华开源VisionReward-Image:多维度评分重构AI视觉生成质量标准
清华开源VisionReward-Image:多维度评分重构AI视觉生成质量标准

清华开源VisionReward-Image:多维度评分重构AI视觉生成质量标准 【免费下载链接】VisionReward-Image-bf16 项目地址: https://ai.gitcode.com/zai-org/VisionReward-Image-bf16 导语:清华大学最新开源的VisionReward-Image模型通过五大维度拆解… · 2026/11/4 1:43:00

Mineradio 2.2.0 更新指南:沉浸式音乐播放器的登录修复、换源稳定与手势操控
Mineradio 2.2.0 更新指南:沉浸式音乐播放器的登录修复、换源稳定与手势操控

Mineradio 2.2.0 更新指南:沉浸式音乐播放器的登录修复、换源稳定与手势操控 【免费下载链接】Mineradio-paused 一款以电影镜头、粒子视觉和歌词舞台为核心的沉浸式音乐播放器。 项目地址: https://gitcode.com/gh_mirrors/mi/Mineradio-paused Mineradio 2… · 2026/11/4 1:43:00

训练效率翻倍:Moonlight-16B-A3B如何重塑大模型行业成本结构
训练效率翻倍:Moonlight-16B-A3B如何重塑大模型行业成本结构

训练效率翻倍:Moonlight-16B-A3B如何重塑大模型行业成本结构 【免费下载链接】Moonlight-16B-A3B 项目地址: https://ai.gitcode.com/MoonshotAI/Moonlight-16B-A3B 导语 月之暗面发布的Moonlight-16B-A3B模型通过Muon优化器实现训练效率跃升,5… · 2026/11/4 1:43:00

FastAPI API 文档美化实战:4 步把默认 Swagger UI 换成你的品牌风格
FastAPI API 文档美化实战:4 步把默认 Swagger UI 换成你的品牌风格

FastAPI API 文档美化实战:4 步把默认 Swagger UI 换成你的品牌风格 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAP… · 2026/11/4 1:43:00

Osiris入门指南:用Next.js 16 + MapLibre搭建全球OSINT仪表盘
Osiris入门指南:用Next.js 16 + MapLibre搭建全球OSINT仪表盘

Osiris入门指南:用Next.js 16 MapLibre搭建全球OSINT仪表盘 【免费下载链接】osiris Open Source Global Intelligence Platform - Real-Time OSINT Dashboard - A Palantir Alternative - 2nZNHm3Lr9umG3DVrzYwHgktwkuKuJRXqqRqs3ewpump 项目地址: https://git… · 2026/11/4 1:43:00

如何快速构建智能交通流量预测系统:Hermes Agent机器学习模型应用指南
如何快速构建智能交通流量预测系统:Hermes Agent机器学习模型应用指南

如何快速构建智能交通流量预测系统:Hermes Agent机器学习模型应用指南 智能交通流量预测系统是现代城市管理的重要组成部分,而Hermes Agent作为一款强大的AI代理框架,提供了丰富的机器学习模型应用能力,帮助开发者快速实现这一目… · 2026/11/4 1:42:00

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码