温馨提示×

Linux MySQL如何进行集群部署

小樊
42
2026-01-08 12:04:08
栏目: 云计算

Linux MySQL 集群部署实操指南

一 方案选型与架构

  • 常见方案对比
    • MySQL NDB Cluster(共享无共享架构):由管理节点 mgmd数据节点 ndbd/ndbmtdSQL 节点 mysqld组成,数据在内存与磁盘间管理,具备高可用、自动分片能力,适合高并发与低时延场景。
    • 主从复制/组复制(InnoDB):基于binlog/GTID或**组复制(MGR)**实现高可用与读写分离,部署简单,适合通用业务,但对跨节点事务一致性要求更高的场景需谨慎评估。
  • 建议的最小可用拓扑(NDB Cluster)
    • 3 台主机1 台 mgmd + 2 台 ndbd + 2 台 SQL(两台主机可同时承载 ndbd 与 mysqld,节省机器)。
    • 端口:1186 mgmd 管理端口2202 ndbd 数据节点端口3306 mysqld 端口;需放通防火墙与安全组。
    • 数据冗余:设置NoOfReplicas=2(每台数据节点互为镜像),单节点故障不影响可用性。

二 基于 NDB Cluster 的快速部署步骤

  • 环境准备(示例)
    • 主机与角色:192.168.1.2 mgmd192.168.1.3 ndbd+sql192.168.1.4 ndbd+sql;系统为 CentOS 7 x64,已安装常用工具(wget、tar、gcc 等)。
  • 安装与目录
    • 3 台主机下载并解压 mysql-cluster-gpl-7.4.9-linux-glibc2.5-x86_64.tar.gz 至统一目录(如 /usr/mysql-cluster)。
  • 管理节点配置与启动
    • 192.168.1.2 创建 /usr/mysql-cluster/config.ini
      [ndbd default]
      NoOfReplicas=2
      MaxNoOfTables=1024
      MaxNoOfUniqueHashIndexes=1024
      MaxNoOfOrderedIndexes=1024
      MaxNoOfAttributes=10000
      
      [ndb_mgmd]
      HostName=192.168.1.2
      DataDir=/usr/mysql-cluster/data
      
      [ndbd]
      HostName=192.168.1.3
      DataDir=/usr/mysql-cluster/data
      
      [ndbd]
      HostName=192.168.1.4
      DataDir=/usr/mysql-cluster/data
      
      [mysqld]
      HostName=192.168.1.3
      
      [mysqld]
      HostName=192.168.1.4
      
    • 启动管理节点:
      /usr/mysql-cluster/bin/ndb_mgmd --config-file=/usr/mysql-cluster/config.ini --configdir=/usr/mysql-cluster
      /usr/mysql-cluster/bin/ndb_mgm -e show
      
  • SQL/数据节点配置与启动(在 192.168.1.3/1.4 各执行一次)
    • my.cnf(路径可为 /usr/mysql-cluster/my.cnf/etc/my.cnf):
      [mysqld]
      character_set_server=utf8
      basedir=/usr/mysql-cluster
      datadir=/usr/mysql-cluster/data
      ndbcluster
      ndb-connectstring=192.168.1.2
      user=root
      
      [mysql_cluster]
      ndb-connectstring=192.168.1.2
      
    • 初始化数据目录(首次):
      /usr/mysql-cluster/scripts/mysql_install_db --basedir=/usr/mysql-cluster --datadir=/usr/mysql-cluster/data
      
    • 启动顺序(务必先数据节点后 SQL 节点):
      # 仅首次启动数据节点加 --initial
      /usr/mysql-cluster/bin/ndbd --defaults-file=/usr/mysql-cluster/my.cnf --initial
      # 以后启动
      /usr/mysql-cluster/bin/ndbd --defaults-file=/usr/mysql-cluster/my.cnf
      
      # 启动 SQL 节点
      /usr/mysql-cluster/bin/mysqld_safe --defaults-file=/usr/mysql-cluster/my.cnf &
      
    • 在管理节点查看状态:
      /usr/mysql-cluster/bin/ndb_mgm -e show
      
  • 建库建表与验证
    • 任一 SQL 节点登录(如未设密码可直接回车):
      /usr/mysql-cluster/bin/mysql -u root -p
      
    • 创建集群表并验证:
      CREATE DATABASE cluster_test;
      USE cluster_test;
      CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
      INSERT INTO ctest VALUES (1);
      SELECT * FROM ctest;
      
    • 在另一台 SQL 节点查询应可见相同数据,表明 NDB 共享存储生效。

三 运维与常用操作

  • 启动/停止顺序
    • 启动:mgmd → 所有 ndbd → 所有 mysqld
    • 停止:在 mgmd 执行
      /usr/mysql-cluster/bin/ndb_mgm -e shutdown
      
  • 节点管理
    • 管理终端:
      /usr/mysql-cluster/bin/ndb_mgm
      ndb_mgm> show
      ndb_mgm> <id> restart|stop|start   # 滚动重启单节点
      
    • 配置变更重载:
      /usr/mysql-cluster/bin/ndb_mgmd -f /usr/mysql-cluster/config.ini --reload
      
  • 常见问题与处理
    • 依赖缺失(CentOS 常见):
      yum install -y libaio perl-Data-Dumper
      
    • 首次初始化与再次初始化
      • 首次启动 ndbd 加 –initial;之后不要加,除非变更配置/恢复备份。
    • 防火墙与连通性
      • 放通 1186/2202/3306;若 mysqld(API) not connected,优先排查防火墙与 ndb-connectstring 配置。

四 其他常见集群方案简述

  • 主从复制(异步/半同步)
    • 配置要点:每个节点设置唯一 server-id,主库开启 log-bin,从库配置 CHANGE MASTER TO …; START SLAVE;,用 SHOW SLAVE STATUS\G 检查 Slave_IO_Running/Slave_SQL_Running=Yes
  • 组复制 MGR(InnoDB 多主/单主)
    • 基于 Paxos 实现强一致多主,需 InnoDBGTIDROW 格式、网络稳定;适合对一致性与高可用要求较高的通用业务。

0