插件窝 干货文章 如何在Linux上配置数据库集群

如何在Linux上配置数据库集群

配置 集群 REPLICATION PostgreSQL 731    来源:    2025-04-16

Linux上配置数据库集群的完整指南

数据库集群配置是确保高可用性和负载均衡的关键步骤。以下是几种主流数据库在Linux上的集群配置方法:

一、MySQL集群配置

1. MySQL主从复制

# 主服务器配置 (my.cnf)
[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW

# 从服务器配置
[mysqld]
server-id=2
relay-log=mysql-relay-bin
read-only=1

# 在主服务器上创建复制用户
CREATE USER 'replica'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO 'replica'@'%';

# 在从服务器上配置复制
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='replica',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;

2. MySQL Group Replication (5.7+)

# 所有节点的my.cnf配置
[mysqld]
plugin-load-add=group_replication.so
group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
group_replication_start_on_boot=OFF
group_replication_local_address= "node1:33061"
group_replication_group_seeds= "node1:33061,node2:33061,node3:33061"
group_replication_bootstrap_group=OFF

二、PostgreSQL集群配置

1. PostgreSQL流复制

# 主服务器配置 (postgresql.conf)
wal_level = replica
max_wal_senders = 3
wal_keep_segments = 8

# 从服务器配置
hot_standby = on

# 创建复制用户
CREATE USER replicator WITH REPLICATION ENCRYPTED PASSWORD 'password';

# 配置pg_hba.conf
host replication replicator slave_ip/32 md5

# 在从服务器上初始化
pg_basebackup -h master_ip -U replicator -D /var/lib/pgsql/data -P --wal-method=stream

2. PostgreSQL + Patroni高可用

# 安装Patroni
pip install patroni[etcd]

# 示例Patroni配置 (patroni.yml)
scope: postgres
name: node1

restapi:
  listen: 0.0.0.0:8008
  connect_address: node1:8008

etcd:
  hosts: etcd1:2379,etcd2:2379,etcd3:2379

bootstrap:
  dcs:
    ttl: 30
    loop_wait: 10
    retry_timeout: 10
    maximum_lag_on_failover: 1048576
    postgresql:
      use_pg_rewind: true
      parameters:
        wal_level: replica
        hot_standby: "on"

三、MongoDB副本集配置

# 每个节点的mongod.conf配置
replication:
  replSetName: "rs0"
  oplogSizeMB: 1024

# 初始化副本集
mongo --host primary_node
> rs.initiate({
  _id: "rs0",
  members: [
    { _id: 0, host: "node1:27017" },
    { _id: 1, host: "node2:27017" },
    { _id: 2, host: "node3:27017", arbiterOnly: true }
  ]
})

四、Redis集群配置

# 每个节点的redis.conf配置
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

# 创建集群 (至少3主3从)
redis-cli --cluster create \
  node1:6379 node2:6379 node3:6379 \
  node4:6379 node5:6379 node6:6379 \
  --cluster-replicas 1

五、通用集群管理工具

  1. Corosync + Pacemaker - 通用集群资源管理器
  2. Keepalived - 提供VIP漂移
  3. HAProxy - 负载均衡
  4. PgBouncer - PostgreSQL连接池
  5. ProxySQL - MySQL高级代理

六、监控和维护

  1. 监控工具:

    • Prometheus + Grafana
    • Percona PMM (MySQL)
    • pgMonitor (PostgreSQL)
  2. 维护命令:

    • 检查复制状态
    • 故障转移测试
    • 定期备份验证

七、安全注意事项

  1. 使用SSL/TLS加密节点间通信
  2. 配置适当的防火墙规则
  3. 使用强密码和最小权限原则
  4. 定期更新数据库软件

根据您的具体需求和数据库类型选择合适的集群方案,并确保在生产环境部署前进行充分测试。