首页主机资讯ubuntu mysql集群搭建步骤

ubuntu mysql集群搭建步骤

时间2025-11-29 00:33:03发布访客分类主机资讯浏览843
导读:Ubuntu 上搭建 MySQL 集群的三种常用方案与步骤 一、方案选型与适用场景 MySQL NDB Cluster(共享无共享架构) 组件:管理节点 ndb_mgmd、数据节点 ndbd/ndbmtd、SQL 节点 mysqld...

Ubuntu 上搭建 MySQL 集群的三种常用方案与步骤


一、方案选型与适用场景

  • MySQL NDB Cluster(共享无共享架构)

    • 组件:管理节点 ndb_mgmd数据节点 ndbd/ndbmtdSQL 节点 mysqld
    • 特点:内存型、强一致、实时高可用,适合高吞吐与低延迟场景。
    • 建议:至少 1 管理 + 2 数据 + 2 SQL,数据节点需为偶数便于副本分布。
  • Galera Cluster(多主同步复制)

    • 实现:MariaDB GaleraPercona XtraDB Cluster(PXC),基于 wsrep 的同步多主。
    • 特点:多主写入、自动节点自愈、对应用透明,适合读写分离与高可用。
    • 建议:至少 3 节点,网络稳定,SST 方法优先 rsync/xtrabackup
  • MySQL 主从复制(异步/半同步)

    • 组件:1 主 + N 从,基于 binlog 的复制。
    • 特点:部署简单、成本低,读扩展友好,主库单点需业务侧容错。
    • 建议:关键业务配合 半同步GTID 提升一致性。

二、方案一 MySQL NDB Cluster 快速搭建

  • 节点规划(示例)

    • mgmd192.168.1.10
    • ndbd1192.168.1.11
    • ndbd2192.168.1.12
    • mysqld1192.168.1.13
    • mysqld2192.168.1.14
  • 管理节点 mgmd

    1. 安装软件(Ubuntu 18.04 示例)
      • 安装依赖:sudo apt-get update & & sudo apt-get install -y libaio1 libmecab2
      • 下载并安装 MySQL Cluster 7.6 二进制包(.deb-bundle),按依赖顺序 dpkg -i 安装。
    2. 创建配置 /var/lib/mysql-cluster/config.ini
      [ndb_mgmd DEFAULT]
      PortNumber=1186
      
      [ndb_mgmd]
      HostName=192.168.1.10
      DataDir=/var/lib/mysql-cluster
      
      [ndbd DEFAULT]
      NoOfReplicas=2
      DataMemory=80M
      IndexMemory=18M
      DataDir=/usr/local/mysql/data
      
      [ndbd]
      HostName=192.168.1.11
      
      [ndbd]
      HostName=192.168.1.12
      
      [mysqld]
      HostName=192.168.1.13
      
      [mysqld]
      HostName=192.168.1.14
      
    3. 启动管理节点
      • ndb_mgmd -f /var/lib/mysql-cluster/config.ini --configdir=/var/lib/mysql-cluster
      • ndb_mgm 进入控制台,执行 show 查看节点状态。
  • 数据节点 ndbd

    1. 安装同版本 MySQL Cluster 二进制包(同上)。
    2. 配置 /etc/mysql/my.cnf
      [mysqld]
      ndbcluster
      
      [mysql_cluster]
      ndb-connectstring=192.168.1.10:1186
      
    3. 创建数据目录:sudo mkdir -p /usr/local/mysql/data & & sudo chown mysql:mysql /usr/local/mysql/data
    4. 启动:sudo ndbd(首次可加 --initial 做初始化)。
  • SQL 节点 mysqld

    1. 安装 MySQL Server(与 Cluster 版本匹配)。
    2. 配置 /etc/mysql/my.cnf
      [mysqld]
      ndbcluster
      ndb-connectstring=192.168.1.10:1186
      
    3. 启动:sudo systemctl restart mysql
    4. 验证:ndb_mgm -e "show" 应看到 ndbd/ndbmtd 与 mysqld 均已连接

三、方案二 Galera Cluster(MariaDB 或 PXC)快速搭建

  • 节点规划(示例)

    • node1192.168.1.21
    • node2192.168.1.22
    • node3192.168.1.23
  • 所有节点安装

    • Ubuntu 16.04/18.04 可直接安装 MariaDB(自带 Galera):sudo apt-get install -y mariadb-server rsync
    • 安全初始化:sudo mysql_secure_installation
    • 防火墙放行端口(UFW):sudo ufw allow 3306,4567,4568,4444/tcpsudo ufw allow 4567/udp
  • 统一配置 /etc/mysql/conf.d/galera.cnf

    [mysqld]
    binlog_format=ROW
    default-storage-engine=innodb
    innodb_autoinc_lock_mode=2
    bind-address=0.0.0.0
    
    wsrep_on=ON
    wsrep_provider=/usr/lib/galera/libgalera_smm.so
    wsrep_cluster_name="my_galera"
    wsrep_cluster_address="gcomm://192.168.1.21,192.168.1.22,192.168.1.23"
    wsrep_sst_method=rsync
    wsrep_node_address="this_node_ip"
    wsrep_node_name="this_node_name"
    

    this_node_ip/name 替换为各节点实际值。

  • 启动集群

    • node1 初始化:sudo galera_new_cluster(或 systemctl start mysql --wsrep-new-cluster
    • node2/node3 启动:sudo systemctl start mysql
    • 验证:mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'; " 应返回 3

四、方案三 MySQL 主从复制快速搭建

  • 节点规划(示例)

    • master192.168.1.31
    • slave192.168.1.32
  • 主库配置 /etc/mysql/mysql.conf.d/mysqld.cnf

    [mysqld]
    server-id=1
    log_bin=/var/log/mysql/mysql-bin.log
    bind-address=192.168.1.31
    
    • 重启:sudo systemctl restart mysql
    • 创建复制账号并授权:
      CREATE USER 'replica'@'192.168.1.32' IDENTIFIED BY 'ReplicaPass!';
          
      GRANT REPLICATION SLAVE ON *.* TO 'replica'@'192.168.1.32';
          
      FLUSH PRIVILEGES;
          
      SHOW MASTER STATUS;
            -- 记录 File 与 Position
      
  • 从库配置 /etc/mysql/mysql.conf.d/mysqld.cnf

    [mysqld]
    server-id=2
    relay_log=/var/log/mysql/mysql-relay-bin.log
    bind-address=192.168.1.32
    read_only=1
    
    • 重启:sudo systemctl restart mysql
    • 配置复制链路并启动:
      CHANGE MASTER TO
        MASTER_HOST='192.168.1.31',
        MASTER_USER='replica',
        MASTER_PASSWORD='ReplicaPass!',
        MASTER_LOG_FILE='mysql-bin.000001',
        MASTER_LOG_POS=629;
          
      START SLAVE;
          
      SHOW SLAVE STATUS\G  -- 确认 Slave_IO_Running/Slave_SQL_Running 均为 Yes
      
  • 验证:在主库创建库表,在从库 SHOW DATABASES; 应可见同步结果。


五、通用排错与运维要点

  • 网络与防火墙
    • 确认节点间 互通,必要时仅放通内网网段;Galera 需放行 3306/4567(tcp& udp)/4568/4444
  • 服务启动顺序
    • NDB:先 ndb_mgmd,再 ndbd,最后 mysqld;用 ndb_mgm> show 检查。
    • Galera:首个节点用 galera_new_cluster--wsrep-new-cluster 初始化,其余节点正常 start mysql
  • 数据与一致性
    • 首次部署建议全量备份/恢复;Galera 选择 rsync/xtrabackup 作为 SST;NDB 注意 NoOfReplicas 与内存参数。
  • 监控与验证
    • NDB:ndb_mgm -e "show";Galera:SHOW STATUS LIKE 'wsrep%'; ;复制:SHOW SLAVE STATUS\G
  • 安全加固
    • 限制数据库端口来源 IP、使用 强口令/SSL、定期备份与演练恢复。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu mysql集群搭建步骤
本文地址: https://pptw.com/jishu/759638.html
ubuntu mysql故障排查思路 ubuntu环境下如何恢复数据

游客 回复需填写必要信息