温馨提示×

debian如何设postgresql主从

小樊
47
2026-10-17 03:20:10
栏目: 云计算

下面给你一份**在 Debian(以 Debian 11 / 12 为例)上配置 PostgreSQL 主从(流复制,Streaming Replication)**的实用步骤。假设:

  • 主库 IP:192.168.1.10
  • 从库 IP:192.168.1.11
  • PostgreSQL 版本:15(其他 12+ 版本基本一致)
  • 使用 物理流复制(最常用)

一、主库配置(Primary)

1. 安装 PostgreSQL

sudo apt update
sudo apt install postgresql postgresql-contrib

2. 修改 PostgreSQL 配置

编辑配置文件:

sudo nano /etc/postgresql/15/main/postgresql.conf

关键配置:

listen_addresses = '*'
wal_level = replica
max_wal_senders = 10
wal_keep_size = 1GB
hot_standby = on

3. 配置 pg_hba.conf(允许从库连接)

sudo nano /etc/postgresql/15/main/pg_hba.conf

添加:

host    replication     replicator      192.168.1.11/32    md5

4. 创建复制用户

sudo -u postgres psql
CREATE ROLE replicator WITH REPLICATION PASSWORD 'StrongPassword' LOGIN;

5. 重启主库

sudo systemctl restart postgresql

二、从库配置(Standby)

1. 安装 PostgreSQL(不初始化数据)

sudo apt update
sudo apt install postgresql

2. 停止从库服务

sudo systemctl stop postgresql

3. 清空从库数据目录

sudo rm -rf /var/lib/postgresql/15/main/*

4. 使用 pg_basebackup 拉取主库数据

sudo -u postgres pg_basebackup \
  -h 192.168.1.10 \
  -U replicator \
  -D /var/lib/postgresql/15/main \
  -Fp -Xs -P -R

参数说明:

  • -R:自动生成 standby 配置
  • -Xs:流复制模式

三、启动从库

sudo systemctl start postgresql

查看状态:

sudo -u postgres psql -c "SELECT pg_is_in_recovery();"

返回:

  • t → 从库 ✅
  • f → 主库

四、验证主从同步

主库

sudo -u postgres psql
SELECT * FROM pg_stat_replication;

能看到从库连接即成功。


五、常见补充

1. 防火墙

sudo ufw allow from 192.168.1.11 to any port 5432

2. 自动故障切换(进阶)

  • repmgr
  • Patroni + etcd
  • Pgpool-II

3. 只读查询

从库默认可读:

SELECT * FROM big_table;

如果你愿意,我可以:

  • 给你 Docker 版主从
  • 给你 Debian + TimescaleDB
  • 或帮你写 一键脚本

你现在是测试环境还是生产环境?

0 踩