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

Docker容器化高可用架构部署方案(十二)

11-MySQL-MGR初始化本文档详细介绍MySQL MGRGroup Replication集群的初始化步骤。初始化前提三个MySQL容器已正常运行MySQL容器healthcheck通过网络连通性正常初始化步骤步骤1等待MySQL容器就绪# 查看MySQL容器状态 docker ps | grep mysql ​ # 等待healthcheck通过 until docker exec mysql-01 mysqladmin -uroot -pYourStr0ng!Pass ping -h127.0.0.1 /dev/null; do echo Waiting for MySQL-01 to be ready... sleep 5 done ​ echo MySQL-01 is ready! ​ until docker exec mysql-02 mysqladmin -uroot -pYourStr0ng!Pass ping -h127.0.0.1 /dev/null; do echo Waiting for MySQL-02 to be ready... sleep 5 done ​ echo MySQL-02 is ready! ​ until docker exec mysql-03 mysqladmin -uroot -pYourStr0ng!Pass ping -h127.0.0.1 /dev/null; do echo Waiting for MySQL-03 to be ready... sleep 5 done ​ echo MySQL-03 is ready!步骤2在Node1创建复制用户重要必须使用mysql_native_password认证插件。# 登录MySQL-01 docker exec -it mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1在MySQL命令行中执行-- 创建复制用户使用mysql_native_password CREATE USER repl_user% IDENTIFIED WITH mysql_native_password BY YourStr0ng!Pass; ​ -- 授予复制权限 GRANT BACKUP_ADMIN ON *.* TO repl_user%; GRANT REPLICATION SLAVE ON *.* TO repl_user%; GRANT GROUP_REPLICATION_STREAM ON *.* TO repl_user%; ​ -- 刷新权限 FLUSH PRIVILEGES; ​ -- 退出 EXIT;步骤3在Node1启动MGRdocker exec -it mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1在MySQL命令行中执行-- 设置恢复渠道凭据 CHANGE MASTER TO MASTER_USERrepl_user, MASTER_PASSWORDYourStr0ng!Pass FOR CHANNEL group_replication_recovery; ​ -- 启动组复制作为引导节点 START GROUP_REPLICATION; ​ -- 验证MGR状态 SELECT * FROM performance_schema.replication_group_members;预期输出--------------------------------------------------------------------------------------------------------- | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | --------------------------------------------------------------------------------------------------------- | group_replication_applier | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 172.20.4.11 | 3306 | ONLINE | ---------------------------------------------------------------------------------------------------------MEMBER_STATE为ONLINE表示Node1已成功加入MGR。步骤4在Node2加入MGRdocker exec -it mysql-02 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1在MySQL命令行中执行-- 设置恢复渠道凭据 CHANGE MASTER TO MASTER_USERrepl_user, MASTER_PASSWORDYourStr0ng!Pass FOR CHANNEL group_replication_recovery; ​ -- 启动组复制 START GROUP_REPLICATION; ​ -- 验证MGR状态 SELECT * FROM performance_schema.replication_group_members;预期输出--------------------------------------------------------------------------------------------------------- | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | --------------------------------------------------------------------------------------------------------- | group_replication_applier | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 172.20.4.11 | 3306 | ONLINE | | group_replication_applier | yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy | 172.20.4.12 | 3306 | ONLINE | ---------------------------------------------------------------------------------------------------------步骤5在Node3加入MGRdocker exec -it mysql-03 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1在MySQL命令行中执行-- 设置恢复渠道凭据 CHANGE MASTER TO MASTER_USERrepl_user, MASTER_PASSWORDYourStr0ng!Pass FOR CHANNEL group_replication_recovery; -- 启动组复制 START GROUP_REPLICATION; -- 验证MGR状态 SELECT * FROM performance_schema.replication_group_members;预期输出--------------------------------------------------------------------------------------------------------- | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | --------------------------------------------------------------------------------------------------------- | group_replication_applier | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 172.20.4.11 | 3306 | ONLINE | | group_replication_applier | yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy | 172.20.4.12 | 3306 | ONLINE | | group_replication_applier | zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz | 172.20.4.13 | 3306 | ONLINE | ---------------------------------------------------------------------------------------------------------三个节点都是ONLINE表示MGR初始化成功步骤6验证Primary节点docker exec -it mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e SELECT member_id, member_host, member_port, member_role, member_state FROM performance_schema.replication_group_members WHERE channel_name group_replication_applier; 预期输出------------------------------------------------------------------------------------------- | member_id | member_host | member_port | member_role | member_state | ------------------------------------------------------------------------------------------- | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx | 172.20.4.11 | 3306 | PRIMARY | ONLINE | | yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy | 172.20.4.12 | 3306 | SECONDARY | ONLINE | | zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz | 172.20.4.13 | 3306 | SECONDARY | ONLINE | -------------------------------------------------------------------------------------------Node1为PRIMARYNode2和Node3为SECONDARY。数据同步测试在Primary写入数据docker exec -it mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1-- 切换到数据库 USE app_db; -- 创建测试表 CREATE TABLE IF NOT EXISTS test_mgr ( id INT AUTO_INCREMENT PRIMARY KEY, content VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 插入测试数据 INSERT INTO test_mgr (content) VALUES (Test from Primary); -- 验证插入 SELECT * FROM test_mgr;在Secondary验证数据docker exec -it mysql-02 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e USE app_db; SELECT * FROM test_mgr; docker exec -it mysql-03 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e USE app_db; SELECT * FROM test_mgr; 预期所有节点都能看到相同的数据。完整一键初始化脚本#!/bin/bash # MySQL MGR初始化脚本 set -e MYSQL_ROOTroot MYSQL_PASSYourStr0ng!Pass REPL_USERrepl_user REPL_PASSYourStr0ng!Pass echo Waiting for MySQL containers # 等待所有MySQL容器就绪 for container in mysql-01 mysql-02 mysql-03; do echo Waiting for $container... until docker exec $container mysqladmin -u$MYSQL_ROOT -p$MYSQL_PASS ping -h127.0.0.1 /dev/null; do sleep 2 done echo $container is ready done echo All MySQL containers are ready # 在Node1创建复制用户 echo Creating replication user on Node1 docker exec mysql-01 mysql -u$MYSQL_ROOT -p$MYSQL_PASS -h127.0.0.1 EOF CREATE USER IF NOT EXISTS $REPL_USER% IDENTIFIED WITH mysql_native_password BY $REPL_PASS; GRANT BACKUP_ADMIN ON *.* TO $REPL_USER%; GRANT REPLICATION SLAVE ON *.* TO $REPL_USER%; GRANT GROUP_REPLICATION_STREAM ON *.* TO $REPL_USER%; FLUSH PRIVILEGES; EOF echo Starting Group Replication on Node1 docker exec mysql-01 mysql -u$MYSQL_ROOT -p$MYSQL_PASS -h127.0.0.1 EOF CHANGE MASTER TO MASTER_USER$REPL_USER, MASTER_PASSWORD$REPL_PASS FOR CHANNEL group_replication_recovery; START GROUP_REPLICATION; EOF sleep 5 echo Adding Node2 to Group Replication docker exec mysql-02 mysql -u$MYSQL_ROOT -p$MYSQL_PASS -h127.0.0.1 EOF CHANGE MASTER TO MASTER_USER$REPL_USER, MASTER_PASSWORD$REPL_PASS FOR CHANNEL group_replication_recovery; START GROUP_REPLICATION; EOF sleep 5 echo Adding Node3 to Group Replication docker exec mysql-03 mysql -u$MYSQL_ROOT -p$MYSQL_PASS -h127.0.0.1 EOF CHANGE MASTER TO MASTER_USER$REPL_USER, MASTER_PASSWORD$REPL_PASS FOR CHANNEL group_replication_recovery; START GROUP_REPLICATION; EOF sleep 5 echo Verifying Group Replication Status docker exec mysql-01 mysql -u$MYSQL_ROOT -p$MYSQL_PASS -h127.0.0.1 -e SELECT * FROM performance_schema.replication_group_members; echo MySQL MGR initialization completed 验证命令汇总# 查看MGR成员状态 docker exec mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e SELECT * FROM performance_schema.replication_group_members; # 查看MGR统计信息 docker exec mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e SELECT * FROM performance_schema.replication_group_statistics; # 查看一致性统计 docker exec mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e SELECT * FROM performance_schema.replication_connection_stats; # 查看当前主节点 docker exec mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e SELECT member_id, member_host, member_role FROM performance_schema.replication_group_members WHERE member_role PRIMARY; # 查看复制延迟 docker exec mysql-01 mysql -uroot -pYourStr0ng!Pass -h127.0.0.1 -e SHOW SLAVE STATUS\G 常见问题Q1: START GROUP_REPLICATION失败检查错误日志docker logs mysql-01确认复制用户认证插件正确验证网络连通性Q2: 节点一直处于RECOVERING状态检查网络延迟确认源数据同步完成查看performance_schema.replication_group_member_statsQ3: 数据复制延迟检查网络带宽查看慢查询调整group_replication_member_weight下一步12-验证测试.md - 完整验证测试13-快速部署.md - 一键部署脚本

相关文章:

Docker容器化高可用架构部署方案(十二)

11-MySQL-MGR初始化 本文档详细介绍MySQL MGR(Group Replication)集群的初始化步骤。 初始化前提 三个MySQL容器已正常运行 MySQL容器healthcheck通过 网络连通性正常 初始化步骤 步骤1:等待MySQL容器就绪 # 查看MySQL容器状态 docke…...

openLCA 2.6.2 完整安装与使用指南:免费开源的生命周期评估解决方案

openLCA 2.6.2 完整安装与使用指南:免费开源的生命周期评估解决方案 【免费下载链接】olca-app Source code of openLCA 项目地址: https://gitcode.com/gh_mirrors/ol/olca-app openLCA 是一款功能强大的开源生命周期评估软件,专门用于产品从原材…...

终极指南:Visual C++运行库合集AIO - 一站式解决Windows软件依赖问题

终极指南:Visual C运行库合集AIO - 一站式解决Windows软件依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为运行软件时遇到"找不到…...

Windows 11 LTSC微软商店安装终极指南:5分钟快速解决方案

Windows 11 LTSC微软商店安装终极指南:5分钟快速解决方案 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore Windows 11 LTSC版本以其卓越的稳…...

Qt C++ 集成 SQLite 实现本地数据持久化:从原理到宠物投喂器实战

1. 项目概述与核心需求解析最近在做一个宠物智能投喂器的数据管理后台,核心需求是把设备上传的各种运行数据持久化存储起来,方便后续分析和查看。设备会上传投喂间隔时间、水温、剩余重量这几个关键参数,我需要一个轻量、可靠且易于集成的本地…...

RISC-V SoC中TileLink互连验证IP的设计与实战应用

1. 项目概述:为什么RISC-V SoC需要一个专门的TileLink验证IP?如果你正在设计或验证一个基于RISC-V的片上系统(SoC),尤其是当它集成了多个处理器核心、加速器、DMA控制器和各种内存控制器时,那么“互连”这个…...

CANN/asc-devkit ClearBias接口文档

ClearBias 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/…...

C51结构体内存分配限制与解决方案

1. C51结构体成员的内存空间限制解析在8051单片机开发中,C51编译器对结构体成员的内存分配有着严格限制。这个问题困扰过不少从标准C转向嵌入式开发的工程师。让我用一个实际案例来解释这个技术细节:struct sensor_data {float data temperature; // 试…...

2026届必备的五大AI写作网站实测分析

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 现如今人工智能内容生成技术被广泛运用,好多创作者依靠它迅速生成文章标题。然而…...

Avidemux:开源视频剪辑神器,5分钟学会专业级视频处理

Avidemux:开源视频剪辑神器,5分钟学会专业级视频处理 【免费下载链接】avidemux2 Avidemux2, simple video editor 项目地址: https://gitcode.com/gh_mirrors/avi/avidemux2 你知道吗?在开源视频编辑领域,有一款轻量级但功…...

从算法理想向工程现实的跨越:SLAM 核心架构、思维误区与 Nav2 实战避坑指南

前言:直面 SLAM 的“先有鸡还是先有蛋” 在机器人领域,SLAM(Simultaneous Localization and Mapping,同时定位与地图构建) 毫无疑问是最耀眼的明珠之一。简单来说,它的核心任务就是让一个机器人在未知环境中…...

极域电子教室防控制软件JiYuTrainer:重获学习自主权的智能解决方案

极域电子教室防控制软件JiYuTrainer:重获学习自主权的智能解决方案 【免费下载链接】JiYuTrainer 极域电子教室防控制软件, StudenMain.exe 破解 项目地址: https://gitcode.com/gh_mirrors/ji/JiYuTrainer 你是否曾在计算机课堂上被极域电子教室的全屏广播限…...

Multisim仿真避坑:手把手教你搞定MOS管共源放大电路的静态工作点(含参数扫描技巧)

Multisim实战:MOS管共源放大电路静态工作点优化全攻略 刚接触Multisim仿真的电子工程师常会遇到这样的困境:明明按照教科书步骤搭建了MOS管共源放大电路,仿真结果却与理论计算相差甚远。静态工作点(Q点)不是偏高就是偏…...

保姆级教程:用YOLOv5 v6.0训练自己的数据集(从环境配置到模型导出)

从零构建工业级YOLOv5 v6.0检测系统:环境配置到模型部署全流程实战 在工业质检、安防监控等场景中,快速构建高精度目标检测系统已成为工程师的核心竞争力。YOLOv5以其卓越的平衡性——兼顾速度与精度、完善的工程化支持,成为落地首选。本文将…...

告别编译报错!手把手教你为最新版Keil MDK安装ARM Compiler 5(保姆级图文)

嵌入式开发者的救星:彻底解决Keil MDK缺失ARM Compiler 5的终极方案 当你满怀信心地打开一个历史遗留的嵌入式项目,准备进行功能迭代时,Keil MDK突然弹出一个冰冷的错误窗口:"Error: Compiler V5.06 update 7 (build 960) no…...

告别繁琐配置!用EB和S32DS快速搭建AutoSar MCAL基础工程(附完整文件结构解析)

从零构建AutoSar MCAL工程:EB与S32DS高效协作实战指南 当第一次打开AutoSar MCAL的官方示例工程时,多数工程师都会被密密麻麻的文件夹和配置文件淹没。Base、Platform、ECUC、MemIf等模块交织在一起,而EB生成的generate文件夹里又充斥着大量看…...

告别AT指令恐惧:用STM32F407驱动SIM800C实现短信报警(附完整代码)

STM32F407与SIM800C实战:构建工业级短信报警系统的完整指南 在工业自动化、智能家居和远程监控领域,可靠的异常通知机制往往决定着系统响应速度与故障处理效率。传统有线报警方式受限于物理距离,而基于Wi-Fi的解决方案又面临网络覆盖的挑战。…...

接入TaoToken后API服务稳定性提升与延迟波动的实际体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 接入TaoToken后API服务稳定性提升与延迟波动的实际体验 在构建依赖大模型能力的应用时,服务稳定性与响应延迟是直接影响…...

STM32F407的PWM呼吸灯太简单?试试用DMA+定时器实现‘无CPU干预’的渐变效果

STM32F407的PWM呼吸灯进阶:DMA定时器实现零CPU占用的智能光效 在嵌入式开发中,PWM呼吸灯常被视为入门级练习,但将其提升到工业级应用时,传统CPU轮询方式会暴露明显缺陷。当系统需要同时处理网络通信、传感器采集等任务时&#xff…...

3步解锁开源字体编辑器:从零基础到专业字体设计师的蜕变之路

3步解锁开源字体编辑器:从零基础到专业字体设计师的蜕变之路 【免费下载链接】fontforge Free (libre) font editor for Windows, Mac OS X and GNULinux 项目地址: https://gitcode.com/gh_mirrors/fo/fontforge FontForge是一款跨平台的开源字体编辑器&…...

Visual C++运行库终极修复指南:如何3步解决95%的DLL缺失问题?

Visual C运行库终极修复指南:如何3步解决95%的DLL缺失问题? 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C运行库是Windows系统…...

OpenClaw 接入 DeepSeek 模型完整配置教程(2026 最新版)

OpenClaw 接入 DeepSeek 模型完整配置教程 一、前置准备 已安装并正常运行 OpenClaw Windows 客户端;OpenClaw 顶部 Gateway 状态保持在线;电脑网络正常,可稳定访问 DeepSeek 开放平台;准备可接收验证码的手机号或微信账号&…...

英飞凌TC3XX芯片GPIO配置避坑指南:从PDR驱动强度到IOCR上下拉,手把手调优信号质量

英飞凌TC3XX芯片GPIO实战调优:从寄存器配置到信号完整性设计 在嵌入式系统开发中,GPIO接口的稳定性往往决定了整个系统的可靠性。当工程师面对30MHz SPI时钟信号的振铃问题、I2C总线上的电平冲突或是EMC测试中的辐射超标时,对英飞凌Aurix TC…...

OpenClaw 环境搭建|可视化操作零门槛

📌 OpenClaw 一键安装包|一键部署,告别复杂环境配置 适配系统:Windows10/11 64 位当前版本:v2.7.5(虾壳云版) ⭐ 核心优势 全程可视化操作,无需命令行、无需手动配置 Python/Node…...

FPGA 51,基于 ZYNQ 7Z010 的 FPGA 高速路由转发加速系统架构设计(Xilinx ZYNQ-MINI 7Z010 CLG400 -1)

目录 前言 一、系统整体架构设计 1.1 设计目标与性能指标...

3分钟搞定B站缓存视频转换:m4s-converter无损合并完整指南

3分钟搞定B站缓存视频转换:m4s-converter无损合并完整指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的情…...

如何快速提高能力

人机协作,AI模型:Deepseek仅供参考如何快速提高能力在快节奏的现代社会中,每个人都渴望快速提升自己的能力,无论是职场竞争力、专业技能,还是通用素养。能力的提升并非一蹴而就,但遵循科学有效的方法&#…...

用GNU Radio和USRP N310/X310手把手搭建一个雷达通信一体化系统(附完整GRC流程图)

从零构建基于GNU Radio与USRP的雷达通信融合系统实战指南 在软件定义无线电(SDR)技术蓬勃发展的今天,将雷达探测与无线通信功能集成到同一硬件平台已成为可能。这种一体化设计不仅能降低设备成本,还能实现频谱资源共享&#xff0c…...

终极虚拟定位指南:FakeLocation让你的Android设备位置自由

终极虚拟定位指南:FakeLocation让你的Android设备位置自由 【免费下载链接】FakeLocation Xposed module to mock locations per app. 项目地址: https://gitcode.com/gh_mirrors/fak/FakeLocation 你是否厌倦了应用的位置限制?想要在社交软件中保…...

燃油车的“催命符”还是环保的“里程碑”?2026年Euro 7标准下的汽车变局

如果你正打算换车,或者对汽车行业的未来走向充满好奇,那么“Euro 7”(欧7排放标准)绝对是你绕不开的一个关键词。这项被业内称为“史上最严”的排放法规,将于2026年11月29日正式对新车型实施强制认证。它不仅给内燃机戴…...