数据库集群配置是确保高可用性和负载均衡的关键步骤。以下是几种主流数据库在Linux上的集群配置方法:
# 主服务器配置 (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;
# 所有节点的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.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
# 安装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"
# 每个节点的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.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
监控工具:
维护命令:
根据您的具体需求和数据库类型选择合适的集群方案,并确保在生产环境部署前进行充分测试。