news 2026/11/6 4:31:46

Ubuntu 22.04下MySQL 8.0 MGR集群部署实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 22.04下MySQL 8.0 MGR集群部署实战

1. Ubuntu 22.04 搭建 MySQL 8.0.45 MGR 集群实战指南

作为一名长期从事数据库运维的工程师,我最近在项目中成功部署了MySQL 8.0的MGR集群。相比传统的复制方案,MGR提供了真正的多主复制能力,同时保证了数据一致性。本文将详细记录我在Ubuntu 22.04系统上搭建三节点MGR集群的全过程,包括环境准备、软件安装、配置优化和集群初始化等关键步骤。

2. 环境准备与规划

2.1 硬件与网络配置

我们使用三台虚拟机搭建集群,每台配置为4核CPU和2GB内存。这种配置适合中小型应用的数据库需求,如果业务量较大,建议适当增加资源。以下是节点信息:

主机名IP地址MySQL版本操作系统
node0192.168.143.1288.0.45Ubuntu 22.04
node1192.168.143.1298.0.45Ubuntu 22.04
node2192.168.143.1308.0.45Ubuntu 22.04

提示:生产环境中建议将节点部署在不同物理机上,避免单点故障风险。

2.2 系统基础配置

2.2.1 设置主机名

为每个节点设置唯一的主机名,便于后续管理和识别:

# 在node0执行 hostnamectl set-hostname node0 # 在node1执行 hostnamectl set-hostname node1 # 在node2执行 hostnamectl set-hostname node2
2.2.2 配置hosts文件

在所有节点上编辑/etc/hosts文件,添加集群节点信息:

vi /etc/hosts

添加以下内容:

192.168.143.128 node0 192.168.143.129 node1 192.168.143.130 node2

注意:确保所有节点的hosts文件内容一致,这是MGR集群正常通信的基础。

3. MySQL安装与初始化

3.1 软件包准备

我们选择手动安装MySQL 8.0.45社区版,这种方式可以更好地控制安装过程和版本一致性。

3.1.1 创建安装目录
mkdir /usr/src/mysql && cd /usr/src/mysql
3.1.2 下载软件包

有两种方式获取安装包:

  1. 直接使用wget下载:
wget -c --load-cookies=cookies.txt "http://seafile.szzt.com.cn/f/2003ef096e584044b8cb/?dl=1" -O "mysql-server_8.0.45-1ubuntu22.04_amd64.deb-bundle.tar"
  1. 本地下载后上传到服务器
3.1.3 解压软件包
tar -xvf mysql-server_8.0.45-1ubuntu22.04_amd64.deb-bundle.tar

解压后会得到多个deb包,包括客户端、服务端和各种组件。

3.2 安装MySQL组件

3.2.1 安装基础依赖
dpkg -i mysql-common_8.0.45-1ubuntu22.04_amd64.deb dpkg -i mysql-community-client-plugins_8.0.45-1ubuntu22.04_amd64.deb
3.2.2 安装客户端库
dpkg -i libmysqlclient21_8.0.45-1ubuntu22.04_amd64.deb dpkg -i libmysqlclient-dev_8.0.45-1ubuntu22.04_amd64.deb
3.2.3 安装客户端核心组件
dpkg -i mysql-community-client-core_8.0.45-1ubuntu22.04_amd64.deb dpkg -i mysql-community-client_8.0.45-1ubuntu22.04_amd64.deb dpkg -i mysql-client_8.0.45-1ubuntu22.04_amd64.deb
3.2.4 安装服务端组件

安装服务端时可能会遇到依赖问题:

dpkg -i mysql-community-server-core_8.0.45-1ubuntu22.04_amd64.deb

如果报错提示缺少libmecab2和libnuma1,先安装这些依赖:

apt install -y libmecab2 libnuma1

然后重新安装服务端组件:

dpkg -i mysql-community-server-core_8.0.45-1ubuntu22.04_amd64.deb
3.2.5 完成服务端安装
apt install -y psmisc --fix-broken apt -f install ./mysql-community-server_8.0.45-1ubuntu22.04_amd64.deb

安装过程中会提示设置root密码,建议设置强密码并选择"Use Strong Password Encryption"选项。

3.3 验证安装

安装完成后,检查MySQL服务状态和端口监听:

ss -atnl

应该能看到3306和33060端口处于监听状态。

4. MySQL集群配置

4.1 基础配置调整

4.1.1 停止MySQL服务
service mysql stop
4.1.2 修改配置文件

编辑MySQL配置文件:

vim /etc/mysql/mysql.conf.d/mysqld.cnf

在文件末尾添加以下配置内容。注意不同节点的server_id和loose-group_replication_local_address需要修改:

# 业务数据库必要配置 character-set-server=utf8 log_bin_trust_function_creators=1 lower_case_table_names = 1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES transaction_isolation = READ-COMMITTED group_concat_max_len = 102400 # MGR集群核心配置 server_id = 128 # 每个节点唯一,建议使用IP尾数 gtid_mode = ON enforce_gtid_consistency = ON binlog_checksum = NONE log_slave_updates = ON binlog_format = ROW transaction_write_set_extraction = XXHASH64 # MGR专用配置 loose-group_replication_group_name = "161ec121-861b-4f61-b6ed-c969087cc1be" loose-group_replication_start_on_boot = OFF loose-group_replication_recovery_get_public_key = ON loose-group_replication_recovery_use_ssl = ON loose-group_replication_local_address = "192.168.143.128:33061" # 当前节点IP loose-group_replication_group_seeds = "192.168.143.128:33061,192.168.143.129:33061,192.168.143.130:33061" loose-group_replication_bootstrap_group = OFF

重要提示:group_replication_group_name需要所有节点保持一致,可以使用uuidgen命令生成一个新的UUID。

4.1.3 重新初始化数据目录

由于我们修改了lower_case_table_names参数,需要重新初始化数据目录:

rm -rf /var/lib/mysql mkdir /var/lib/mysql chown -R mysql:mysql /var/lib/mysql mysqld --initialize-insecure --user mysql --datadir=/var/lib/mysql --lower-case-table-names=1

4.2 启动服务并配置用户

4.2.1 启动MySQL服务
service mysql start
4.2.2 配置root用户

登录MySQL并设置root密码:

mysql -uroot -p

执行以下SQL:

use mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Szzt@123'; FLUSH PRIVILEGES; CREATE USER 'root'@'%' IDENTIFIED BY 'Szzt@123'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

5. MGR集群初始化

5.1 创建同步用户和安装插件

在所有节点上执行:

CREATE USER 'rpl_user'@'%' IDENTIFIED BY '@Password1122!'; GRANT REPLICATION SLAVE ON *.* TO 'rpl_user'@'%'; CREATE USER 'warton'@'%' identified by '@Password1122!'; GRANT ALL PRIVILEGES ON *.* TO 'warton'@'%'; FLUSH PRIVILEGES; RESET MASTER; INSTALL PLUGIN group_replication SONAME 'group_replication.so';

5.2 初始化主节点

在node0上执行:

SET GLOBAL group_replication_bootstrap_group=ON; START GROUP_REPLICATION; SET GLOBAL group_replication_bootstrap_group=OFF;

5.3 加入其他节点

在node1和node2上分别执行:

CHANGE MASTER TO MASTER_USER="rpl_user", MASTER_PASSWORD="@Password1122!" FOR CHANNEL 'group_replication_recovery'; START GROUP_REPLICATION;

5.4 验证集群状态

在主节点上执行:

SELECT * FROM performance_schema.replication_group_members;

正常输出应该显示三个节点都为ONLINE状态,其中一个为PRIMARY,其他为SECONDARY。

6. 集群管理与维护

6.1 常见问题排查

  1. 节点无法加入集群:

    • 检查防火墙设置,确保33061端口开放
    • 验证group_replication_group_seeds配置是否正确
    • 检查各节点的server_id是否唯一
  2. 数据同步延迟:

    • 监控网络延迟
    • 检查系统资源使用情况(CPU、内存、IO)
    • 考虑调整group_replication_flow_control_mode参数

6.2 日常维护建议

  1. 定期检查集群状态:
SELECT * FROM performance_schema.replication_group_members; SHOW STATUS LIKE 'group_replication%';
  1. 备份策略:

    • 使用mysqldump定期全量备份
    • 考虑使用Percona XtraBackup进行物理备份
    • 测试备份恢复流程
  2. 监控指标:

    • 集群节点状态
    • 复制延迟
    • 事务冲突计数
    • 网络延迟

7. 性能优化建议

7.1 参数调优

根据业务特点调整以下参数:

group_replication_flow_control_mode = "QUOTA" group_replication_flow_control_applier_threshold = 25000 group_replication_flow_control_certifier_threshold = 25000 group_replication_transaction_size_limit = 209715200

7.2 硬件优化

  1. 使用SSD存储提高IO性能
  2. 为MySQL分配足够的innodb_buffer_pool_size
  3. 考虑使用高性能网络设备

7.3 架构优化

  1. 读写分离:将读操作路由到SECONDARY节点
  2. 分片:对于超大规模数据考虑分片方案
  3. 多活部署:跨机房部署MGR集群提高容灾能力

8. 总结

通过本文的详细步骤,我们成功在Ubuntu 22.04上搭建了MySQL 8.0.45的MGR集群。相比传统的主从复制,MGR提供了自动故障转移、多主写入等高级特性,适合对高可用要求较高的场景。

在实际生产环境中,还需要注意以下几点:

  1. 做好监控和告警,及时发现集群异常
  2. 定期演练故障转移流程
  3. 根据业务特点调整集群参数
  4. 制定完善的备份和恢复策略

MySQL Group Replication是一个功能强大但相对复杂的组件,需要DBA投入时间深入理解其工作原理和最佳实践。希望本文能为读者提供一个可靠的部署参考。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 4:31:45

手写四阶Runge-Kutta:从泰勒展开到可调试数值求解器

简介:本资源是一份面向Matlab初学者与数值计算实践者的Runge-Kutta方法原理精讲与代码实现指南,聚焦常微分方程(ODE)数值求解这一核心工程计算问题。内容系统剖析ode45等内置函数背后的四阶五阶Runge-Kutta算法机理,详…

作者头像 李华
网站建设 2026/11/6 4:31:25

SQL WHERE子句:数据过滤与性能优化全解析

1. WHERE子句的本质与核心价值WHERE子句是SQL查询中最基础也最强大的数据过滤工具。它就像筛子上的网眼,决定了哪些数据行能通过查询进入结果集。在实际业务场景中,90%的查询都会包含WHERE条件,因为原始数据表往往包含大量无关记录。举个实际…

作者头像 李华
网站建设 2026/11/6 4:29:53

哈希表原理与应用:高效数据存储与检索技术

1. 哈希表:数据存储与检索的魔法抽屉想象一下你有一个巨大的文件柜,里面装着成千上万的文件夹。如果你每次找文件都要从头到尾翻一遍,那效率得多低啊!哈希表就是那个给每个文件贴上智能标签的魔术师,让你能瞬间定位到任…

作者头像 李华
网站建设 2026/11/6 4:29:37

基于Spark的二手交易评论情感分析系统设计与优化

1. 项目概述:二手交易平台评论情感分析系统这个项目构建了一个完整的二手交易平台评论情感分析系统,采用HadoopSpark作为大数据处理框架,Django作为Web应用框架,Python作为主要开发语言。系统能够对海量用户评论进行实时情感倾向分…

作者头像 李华
网站建设 2026/11/6 4:29:37

开源IDF编辑器:提升EnergyPlus建筑能耗模拟效率

1. 项目背景与核心价值EnergyPlus作为目前全球最权威的建筑能耗模拟引擎之一,其核心输入文件IDF(Input Data File)的编辑一直是行业痛点。传统文本编辑器缺乏语法支持,商业前处理软件又存在学习成本高、灵活性差的问题。这个开源I…

作者头像 李华
网站建设 2026/11/6 4:29:33

Sward开源文档管理工具使用指南与最佳实践

1. Sward文档管理工具概述作为一名长期使用各类知识管理工具的从业者,我最近深度体验了Sward这款开源知识管理工具。它给我的第一印象是界面简洁但功能全面,特别适合中小团队或个人进行系统化的文档管理。与Notion、Confluence等商业产品相比&#xff0c…

作者头像 李华