Debian MariaDB集群部署方案
导读:Debian MariaDB 集群部署方案 一 方案选型与拓扑 推荐采用 MariaDB Galera Cluster(多主同步复制),具备真正的 multi‑master、同步复制、自动节点管理、失效节点自动剔除、新节点自动全量/增量同...
Debian MariaDB 集群部署方案
一 方案选型与拓扑
- 推荐采用 MariaDB Galera Cluster(多主同步复制),具备真正的 multi‑master、同步复制、自动节点管理、失效节点自动剔除、新节点自动全量/增量同步 等能力,适合对高可用与数据一致性要求较高的业务。
- 典型拓扑(示例):3 节点 Galera 集群(IP:192.168.100.111/112/113),前端使用 Nginx(Stream)+ Keepalived 提供 VIP(192.168.100.110) 的数据库接入与故障切换,避免单点。Debian 12 上可直接使用 MariaDB 10.11 与 galera‑4 软件包完成部署。
二 环境准备与基础配置
- 软件与版本
- 操作系统:Debian 12 Bookworm
- 数据库与组件:mariadb-server(10.11)、galera‑4
- 安装命令:
apt update & & apt install -y mariadb-server mariadb-client galera-4
- 主机与解析
- 建议配置 /etc/hosts 或使用 DNS,确保节点间可解析主机名。
- 安全与初始化
- 运行
mysql_secure_installation完成 root 密码、匿名用户、test 库、远程 root 等安全项设置。
- 运行
- 网络与防火墙
- 放通端口:3306/TCP(MySQL)、4567/TCP+UDP(Galera 复制)、4568/TCP(IST)、4444/TCP(SST)。示例(firewalld):
firewall-cmd --permanent --add-port={ 3306,4567,4568,4444} /tcp --permanent --add-port=4567/udp & & firewall-cmd --reload。如使用云安全组,同样需放行上述端口段。
- 放通端口:3306/TCP(MySQL)、4567/TCP+UDP(Galera 复制)、4568/TCP(IST)、4444/TCP(SST)。示例(firewalld):
三 Galera 集群部署步骤
- 配置 MariaDB 基础(所有节点)
- 编辑
/etc/mysql/mariadb.conf.d/50-server.cnf,注释或调整bind-address,确保监听 0.0.0.0(或指定内网地址),并开启必要的 InnoDB 与复制参数(见下一节示例片段)。
- 编辑
- 配置 Galera(所有节点)
- 新建
/etc/mysql/mariadb.conf.d/galera.cnf,设置wsrep_*关键参数(集群名、节点地址、SST 方法、节点名/IP 等)。
- 新建
- 初始化第一个节点
- 逐台停止数据库服务后,在第一个节点执行:
systemctl start mariadb --wsrep-new-cluster
- 逐台停止数据库服务后,在第一个节点执行:
- 加入其余节点
- 其余节点直接:
systemctl start mariadb(将自动与集群同步)
- 其余节点直接:
- 验证集群状态
- 在任一节点执行:
mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'; "应返回集群节点数(如 3)。
- 在任一节点执行:
- 常见排错要点
- 首次引导只能有一个节点以
--wsrep-new-cluster启动,其余节点常规启动即可加入。 - 若出现
debian-sys-maint访问被拒,确保各节点/etc/mysql/debian.cnf内容一致(尤其是密码)。
- 首次引导只能有一个节点以
四 高可用接入与运维要点
- 数据库接入高可用(推荐)
- 使用 Nginx Stream 模块做四层转发,配合 Keepalived 提供 VIP 与主机故障自动切换,实现数据库连接的透明漂移与单点消除。
- 重要参数与建议
- InnoDB 行级复制:
binlog_format=ROW - 自增锁模式:
innodb_autoinc_lock_mode=2 - 默认存储引擎:
default-storage-engine=InnoDB - 绑定地址:
bind-address=0.0.0.0(或内网地址) - SST 方法:测试/内网可用
rsync;生产建议mariabackup(需安装相应包并配置凭据) - 建议显式设置
wsrep_node_address与wsrep_node_name,避免自动探测异常。
- InnoDB 行级复制:
- 备份与恢复
- 定期物理/逻辑备份(如
mariabackup/mysqldump),并在变更窗口外执行;SST 选用mariabackup可获得一致性更好的全量同步。
- 定期物理/逻辑备份(如
- 扩缩容
- 扩容:新增节点按常规安装、配置
galera.cnf后直接启动,将自动完成 IST/SST 同步;缩容:先迁移业务连接,再下线节点,确保wsrep_cluster_size符合预期。
- 扩容:新增节点按常规安装、配置
五 配置片段示例
- 节点通用基础配置(/etc/mysql/mariadb.conf.d/50-server.cnf 片段)
[mysqld] bind-address = 0.0.0.0 skip-name-resolve binlog_format = ROW default-storage-engine = InnoDB innodb_autoinc_lock_mode= 2 innodb_flush_log_at_trx_commit = 1 sync_binlog = 1 - Galera 配置(/etc/mysql/mariadb.conf.d/galera.cnf 片段,三节点示例)
注:首次引导仅在一个节点执行[mysqld] wsrep_on = ON wsrep_provider = /usr/lib/galera/libgalera_smm.so wsrep_cluster_name = "galera_prod" wsrep_cluster_address = "gcomm://192.168.100.111,192.168.100.112,192.168.100.113" wsrep_node_address = "本机内网IP" wsrep_node_name = "本机主机名" wsrep_sst_method = rsync # 生产建议 mariabackup wsrep_sst_auth = "sstuser:StrongPass" # 仅 mariabackup 需要systemctl start mariadb --wsrep-new-cluster,其余节点直接systemctl start mariadb。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MariaDB集群部署方案
本文地址: https://pptw.com/jishu/751646.html
