0

0

如何使用galera cluster_mysql多节点同步方案

P粉602998670

P粉602998670

发布时间:2025-12-26 08:44:02

|

561人浏览过

|

来源于php中文网

原创

Galera Cluster for MySQL 是基于同步复制的多主集群方案,需通过 Percona XtraDB Cluster 或 MariaDB Galera Cluster 部署,不支持原生 Oracle MySQL;仅兼容 InnoDB,依赖 write-set 认证复制,要求小事务、显式提交、避免非确定性函数。

如何使用galera cluster_mysql多节点同步方案

Galera Cluster for MySQL 是一种基于同步复制的多主集群方案,适用于需要高可用、强一致性、读写扩展能力的 MySQL 场景。它不是 MySQL 官方原生功能,而是由 Codership 开发的 wsrep(Write Set Replication)插件实现,常与 MariaDB 或 Percona XtraDB Cluster(PXC)配合使用。MySQL 官方版本(如 Oracle MySQL)本身不直接支持 Galera,需通过 Percona XtraDB Cluster 或 MariaDB Galera Cluster 来部署。

确认 MySQL 兼容性与选型

原生 MySQL 社区版或企业版不支持 Galera 协议。若想用 Galera 方案,必须选择以下之一:

  • Percona XtraDB Cluster(PXC):基于 MySQL 源码 + XtraDB(增强版 InnoDB)+ wsrep 插件,兼容 MySQL 协议和语法,推荐用于生产环境;
  • MariaDB Galera Cluster:MariaDB 官方集成 Galera,配置更轻量,适合中小规模或快速验证场景;
  • 不建议尝试给 Oracle MySQL 手动编译 wsrep 插件——无官方支持、版本难对齐、稳定性风险高。

基础部署三节点集群(以 PXC 为例)

以 Ubuntu/Debian 系统为例,三节点(node1/node2/node3)部署要点如下:

剪映
剪映

一款全能易用的桌面端剪辑软件

下载
  • 所有节点安装相同版本的 percona-xtradb-cluster(如 8.0.32-24),确保内核、glibc、openssl 版本一致;
  • 配置 /etc/mysql/my.cnf,每个节点需设置唯一 wsrep_node_namewsrep_node_address
  • 首个节点启动时加 --wsrep-new-cluster 参数引导集群;其余节点直接启动服务,自动加入已存在的集群;
  • 检查状态:登录 MySQL 执行 SHOW STATUS LIKE 'wsrep%';,重点关注 wsrep_cluster_size(应为3)、wsrep_ready(ON)、wsrep_local_state_comment(Synced)。

关键配置与同步行为说明

Galera 的同步不是传统主从式,而是全节点实时认证复制,需注意:

  • 仅支持 InnoDB 引擎,MyISAM 表无法同步且会导致集群异常;
  • 所有写操作在本地预执行 → 生成 write-set → 广播至集群 → 全体认证通过后才提交(冲突则回滚);
  • 事务必须小而快:大事务会阻塞认证队列,引发 flow control(可通过 wsrep_flow_control_paused 监控);
  • 推荐关闭 autocommit=1,显式使用 BEGIN/COMMIT 控制事务边界;
  • 避免跨节点的非确定性函数(如 NOW()RAND()),可能导致认证失败。

日常运维与故障恢复要点

集群稳定运行依赖规范操作:

  • 单节点宕机后自动剔除,重启并启动 mysqld 即可自动同步追平(需磁盘日志完整,gcache.size 足够);
  • 若整个集群意外崩溃,需人工指定最后一个安全关机的节点执行 --wsrep-recover 获取 safe_to_bootstrap 值,再用 --wsrep-new-cluster 重建;
  • 禁止直接修改 grastate.dat 或强制清空 gcache,易导致数据不一致;
  • 监控建议接入 wsrep_cluster_statuswsrep_local_recv_queue_avgwsrep_cert_deps_distance 等指标,预警延迟或瓶颈。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

652

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

244

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

278

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

513

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

249

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

384

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

522

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

593

2023.08.14

笔记本电脑卡反应很慢处理方法汇总
笔记本电脑卡反应很慢处理方法汇总

本专题整合了笔记本电脑卡反应慢解决方法,阅读专题下面的文章了解更多详细内容。

1

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 1.4万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 771人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号