网络知识
Debian下PostgreSQL复制如何配置
2025-07-08 17:02  点击:0

在Debian系统下配置PostgreSQL复制,通常涉及设置主服务器(Master)和从服务器(Slave)。以下是详细的步骤指南:

1. 安装PostgreSQL

首先,确保在主服务器和从服务器上都安装了PostgreSQL。

sudo apt updatesudo apt install postgresql postgresql-contrib
2. 配置主服务器2.1 编辑postgresql.conf

编辑主服务器的postgresql.conf文件,通常位于/etc/postgresql/<version>/main/目录下。

sudo nano /etc/postgresql/<version>/main/postgresql.conf

找到并修改以下参数:

listen_addresses = '*'# 允许所有IP连接wal_level = replica# 设置为replica以启用流复制max_wal_senders = 10 # 最大WAL发送者数量wal_keep_segments = 64 # 保留的WAL段数量
2.2 编辑pg_hba.conf

编辑主服务器的pg_hba.conf文件,通常位于同一目录下。

sudo nano /etc/postgresql/<version>/main/pg_hba.conf

添加以下行以允许从服务器连接:

hostreplication replicator <slave_ip>/32md5

<slave_ip>替换为从服务器的IP地址。

2.3 创建复制用户

在主服务器上创建一个用于复制的用户,并授予必要的权限。

sudo -u postgres psql

在psql命令行中执行以下SQL语句:

CREATE USER replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;GRANT ALL PRIVILEGES ON DATAbase your_database TO replicator;

your_password替换为复制用户的密码,your_database替换为你想要复制的数据库名称。

2.4 重启PostgreSQL服务

重启PostgreSQL服务以应用更改。

sudo systemctl restart postgresql
3. 配置从服务器3.1 停止从服务器上的PostgreSQL服务

在从服务器上停止PostgreSQL服务。

sudo systemctl stop postgresql
3.2 备份主服务器数据

在主服务器上备份整个数据库集群。

sudo pg_basebackup -D /var/lib/postgresql/<version>/main -U replicator --password --wal-method=stream

按照提示输入复制用户的密码。

3.3 配置从服务器

将备份的数据复制到从服务器的相应目录。

sudo rsync -a /var/lib/postgresql/<version>/main/ /var/lib/postgresql/<version>/main/

编辑从服务器的postgresql.conf文件,通常位于/etc/postgresql/<version>/main/目录下。

sudo nano /etc/postgresql/<version>/main/postgresql.conf

找到并修改以下参数:

listen_addresses = '*'# 允许所有IP连接hot_standby = on # 启用热备模式

编辑从服务器的recovery.conf文件,通常位于同一目录下。

sudo nano /var/lib/postgresql/<version>/main/recovery.conf

添加以下内容:

standby_mode = 'on'primary_conninfo = 'host=<master_ip> dbname=your_database user=replicator password=your_password'restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'trigger_file = '/tmp/postgresql.trigger.5432'

<master_ip>替换为主服务器的IP地址,your_database替换为你想要复制的数据库名称,your_password替换为复制用户的密码。

3.4 启动从服务器上的PostgreSQL服务

启动从服务器上的PostgreSQL服务。

sudo systemctl start postgresql
4. 验证复制

在主服务器上插入一些数据,然后在从服务器上检查这些数据是否同步。

在主服务器上:

sudo -u postgres psql
INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2');

在从服务器上:

sudo -u postgres psql
SELECT * FROM your_table;

如果数据同步成功,你应该能在从服务器上看到相同的数据。

通过以上步骤,你就可以在Debian系统下成功配置PostgreSQL的主从复制。