在Debian系统中配置PostgreSQL复制功能,可以按照以下步骤进行:
安装PostgreSQL: 确保在主服务器和从服务器上都安装了PostgreSQL。
配置主服务器:
/etc/postgresql/<版本号>/main/postgresql.conf
文件。listen_addresses
为'*'
或指定的IP地址,以允许来自从服务器的连接。wal_level
为replica
或更高,以启用流复制。max_wal_senders
和wal_keep_segments
以控制复制进程的数量和WAL文件的保留。配置pg_hba.conf:
/etc/postgresql/<版本号>/main/pg_hba.conf
文件。md5
)。在主服务器上创建一个用于复制的用户,并授予其必要的权限:
CREATE USER replicator WITH REPLICATION PASSWORD 'your_password' LOGIN;
停止从服务器上的PostgreSQL服务:
sudo systemctl stop postgresql
备份主服务器的数据目录:
使用pg_basebackup
工具从主服务器备份数据到从服务器:
sudo pg_basebackup -h <主服务器IP> -U replicator -D /var/lib/postgresql/<版本号>/main -P --wal-method=stream
修改从服务器的数据目录权限:
sudo chown -R postgres:postgres /var/lib/postgresql/<版本号>/main
编辑从服务器的postgresql.conf
文件:
listen_addresses
为'*'
或指定的IP地址。hot_standby
为on
。primary_conninfo
指向主服务器的信息。编辑从服务器的recovery.conf
文件:
创建或编辑/var/lib/postgresql/<版本号>/main/recovery.conf
文件,添加以下内容:
standby_mode = 'on'
primary_conninfo = 'host=<主服务器IP> dbname=postgres user=replicator password=your_password'
restore_command = 'cp /var/lib/postgresql/wal_archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'
启动从服务器上的PostgreSQL服务:
sudo systemctl start postgresql
在主服务器上执行以下SQL命令,查看复制状态:
SELECT * FROM pg_stat_replication;
在从服务器上执行以下SQL命令,查看复制状态:
SELECT * FROM pg_stat_replication;
max_wal_senders
、wal_keep_segments
等。通过以上步骤,你应该能够在Debian系统中成功配置PostgreSQL的复制功能。