debian

Debian PostgreSQL复制怎么实现

小樊
37
2025-06-01 19:51:11
栏目: 云计算

在Debian系统上实现PostgreSQL数据库的复制,通常指的是设置一个主从复制(Master-Slave replication)环境。在这种配置中,一个PostgreSQL实例(主节点)处理写操作,而一个或多个其他实例(从节点)复制主节点的数据并处理读操作。以下是实现PostgreSQL复制的基本步骤:

准备工作

  1. 确保PostgreSQL版本兼容:确保主节点和从节点上的PostgreSQL版本相同或兼容。
  2. 配置防火墙:确保主节点可以从从节点接收连接。
  3. 备份数据:在进行任何复制设置之前,备份主节点的数据。

步骤

1. 配置主节点

编辑主节点的postgresql.conf文件:

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

添加或修改以下配置:

wal_level = replica
max_wal_senders = 10
wal_keep_segments = 64
hot_standby = on

编辑pg_hba.conf文件以允许从节点连接:

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

添加以下行:

host    replication     replica_user     <从节点IP>/32    md5

创建复制用户:

CREATE USER replica_user WITH REPLICATION PASSWORD 'your_password';

重启PostgreSQL服务:

sudo systemctl restart postgresql

2. 配置从节点

停止从节点的PostgreSQL服务:

sudo systemctl stop postgresql

复制主节点的数据目录到从节点(假设数据目录在/var/lib/postgresql/<version>/main):

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

编辑从节点的postgresql.conf文件:

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

添加或修改以下配置:

hot_standby = on

编辑recovery.conf文件(如果不存在则创建):

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

添加以下内容:

standby_mode = 'on'
primary_conninfo = 'host=<主节点IP> dbname=postgres user=replica_user password=your_password'
restore_command = 'cp /var/lib/postgresql/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'

确保从节点的数据目录权限正确:

sudo chown -R postgres:postgres /var/lib/postgresql/<version>/main

启动从节点的PostgreSQL服务:

sudo systemctl start postgresql

验证复制

在主节点上创建一个测试数据库和表,并插入一些数据:

CREATE DATABASE test_db;
\c test_db
CREATE TABLE test_table (id SERIAL PRIMARY KEY, name VARCHAR(100));
INSERT INTO test_table (name) VALUES ('Test Data');

在从节点上检查是否同步:

\c test_db
SELECT * FROM test_table;

如果从节点上显示了相同的数据,说明复制配置成功。

注意事项

通过以上步骤,你可以在Debian系统上实现PostgreSQL的主从复制。

0
看了该问题的人还看了