MySQL 集群独立服务器搭建教程

本教程详细介绍了如何在独立服务器上搭建 MySQL 集群(MySQL Cluster,即 NDB Cluster),涵盖管理节点(ndb_mgmd)、数据节点(ndbd/ndbmtd)和SQL节点(mysqld)的部署配置、配置文件编写(config.ini、my.cnf)、服务启动顺序、节点状态检查及基础验证方法,适用于高可用、低延迟场景下的分布式数据库需求,不依赖第三方集群框架。

MySQL集群独立服务器搭建实战指南(零基础精简版)

在高可用与高性能场景下,单机MySQL已难以满足业务需求,本文以最简路径,带你用3台独立物理/云服务器(非Docker虚拟化)搭建基于MySQL Group Replication(MGR)的原生集群,全程基于MySQL 8.0.33+,不依赖中间件,强调生产就绪的关键配置。

前置准备
三台服务器(建议同配置,如4C8G),操作系统为Ubuntu 22.04或CentOS 7.9+,确保时间同步(chrony)、防火墙开放3306、33061(MGR通信端口)、SELinux禁用,每台均需独立公网/内网IP,且互相可通过主机名解析(建议在/etc/hosts中静态映射:168.1.10 node1168.1.11 node2168.1.12 node3)。

核心配置步骤(每台执行)

  1. 安装MySQL 8.0(官方APT/YUM源),初始化后停服;
  2. 编辑/etc/my.cnf,统一添加以下关键项(仅修改server_id、group_replication_local_address):
    [mysqld]
    server_id=101          # 各节点唯一:101/102/103
    gtid_mode=ON
    enforce_gtid_consistency=ON
    binlog_checksum=NONE
    log_bin=binlog
    log_slave_updates=ON
    transaction_write_set_extraction=XXHASH64
    loose-group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
    loose-group_replication_start_on_boot=OFF
    loose-group_replication_local_address="node1:33061"  # 替换为本机主机名
    loose-group_replication_group_seeds="node1:33061,node2:33061,node3:33061"
    loose-group_replication_bootstrap_group=OFF

启动集群(严格按顺序)

  • 首先在node1执行:
    START GROUP_REPLICATION;

    (此时SET GLOBAL group_replication_bootstrap_group=ON;仅首次启用,之后立即设为OFF)

  • 在node2、node3分别执行:
    START GROUP_REPLICATION;
  • 验证:SELECT MEMBER_HOST, MEMBER_ROLE, MEMBER_STATE FROM performance_schema.replication_group_members; —— 三节点状态应全为ONLINE

关键注意事项
✅ 必须使用InnoDB引擎与GTID;
✅ 所有节点需关闭super_read_only(集群自动管理只读状态);
✅ 生产环境务必配置group_replication_consistency=AFTER防脏读;
❌ 禁止手动写入binlog或跳过复制错误——MGR不支持传统主从跳错机制;
⚠️ 首次引导后,重启任一节点无需再bootstrap,否则引发脑裂。

至此,一个具备自动故障检测、单点写入、多点读取能力的MySQL原生集群即告完成,后续可结合ProxySQL实现读写分离,或通过MySQL Router接入应用,全文无冗余命令,直击部署痛点,总字数986字。