如何部署参与投票且含完整数据库副本的Galera专用节点(替代Garbd)
解决方案建议
针对你的需求——添加一个参与Galera集群投票、保留完整数据库副本、轻量化的节点,推荐以下两种适配PMOS环境Fire Tablet 5的方案:
1. 最小化部署MariaDB Galera节点(优先推荐)
这是最直接的方案,利用Galera原生节点特性,既参与集群投票仲裁,又同步完整数据副本,还能通过配置精简资源占用。
核心配置思路
- 仅启用必要的MariaDB组件,关闭非必要功能降低资源消耗
- 配置为
read_only模式,不对外提供WordPress的数据库服务 - 仅绑定Tailscale内网IP,限制集群内节点通信
精简配置示例(/etc/my.cnf.d/server.cnf)
[mysqld] # 基础精简配置 bind-address = <你的Fire Tablet Tailscale IP> default-storage-engine = InnoDB skip-name-resolve = ON innodb_buffer_pool_size = 128M # 根据设备内存调整,1G内存设128M,2G可设256M innodb_log_file_size = 64M query_cache_type = 0 query_cache_size = 0 slow_query_log = 0 general_log = 0 # Galera集群配置 wsrep_on = ON wsrep_provider = /usr/lib/galera/libgalera_smm.so # 路径根据PMOS包调整 wsrep_cluster_name = "你的Galera集群名称" wsrep_cluster_address = "gcomm://节点1-TailscaleIP,节点2-TailscaleIP,节点3-TailscaleIP,节点4-TailscaleIP" wsrep_node_name = "fire-tablet-arb-node" wsrep_node_address = <你的Fire Tablet Tailscale IP> read_only = ON # 禁止外部写请求
部署步骤
- 在PMOS上安装MariaDB Galera包:
sudo apk add mariadb-galera-server - 配置Tailscale确保节点加入同一网络,开放Galera所需端口(3306、4567、4568、4444)
- 初始化数据库并启动服务,节点会自动同步集群完整数据
- 验证节点状态:登录数据库执行
SHOW STATUS LIKE 'wsrep_%';,确认wsrep_cluster_size为5,wsrep_ready为ON
2. 配置带完整数据副本的Garbd(极致轻量化)
Garbd默认仅做仲裁不保存数据,但可通过修改配置让它同步完整数据库文件,资源占用远低于完整MariaDB节点。
核心启动命令
启动Garbd时指定SST同步方法和数据存储目录,拉取完整集群数据并保持同步:
garbd --address="gcomm://节点1-TailscaleIP,节点2-TailscaleIP,节点3-TailscaleIP,节点4-TailscaleIP" \ --group="你的Galera集群名称" \ --sst-method=rsync \ --datadir=/var/lib/garbd-data \ --node-name="fire-tablet-garbd"
注意事项
- 确保
/var/lib/garbd-data目录有足够存储权限和空间 - PMOS上garbd通常包含在mariadb-galera包中,无需额外安装
- 可配置systemd服务让garbd开机自启,保证节点稳定性
适配Fire Tablet 5的额外优化
- 存储:若设备内部存储不足,可挂载SD卡作为数据库数据目录
- 内存:关闭PMOS上非必要后台服务,释放内存给数据库节点
- 网络:配置Tailscale开机自启并常驻后台,确保集群通信稳定
内容的提问来源于stack exchange,提问作者Joseph Tucker
相关产品推荐
相关产品推荐

