在Debian系统下配置PostgreSQL的复制功能,通常涉及设置主服务器(Master)和从服务器(Slave)。以下是详细的步骤指南:
首先,确保在主服务器和从服务器上都安装了PostgreSQL。
sudo apt update
sudo apt install postgresql postgresql-contrib
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段数量
pg_hba.conf编辑主服务器的pg_hba.conf文件,以允许从服务器连接。
sudo nano /etc/postgresql/<version>/main/pg_hba.conf
添加以下行以允许从服务器连接:
host replication replica_user <slave_ip>/32 md5
将<slave_ip>替换为从服务器的IP地址。
在主服务器上创建一个用于复制的用户,并授予必要的权限。
sudo -u postgres psql
在psql命令行中执行以下SQL语句:
CREATE USER replica_user WITH REPLICATION PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE your_database TO replica_user;
将your_password替换为复制用户的密码,your_database替换为你要复制的数据库名称。
sudo systemctl stop postgresql
在主服务器上备份数据目录,并将其传输到从服务器。
sudo tar -cvpzf /var/lib/postgresql/<version>/main-backup.tar.gz /var/lib/postgresql/<version>/main
将备份文件传输到从服务器:
scp /var/lib/postgresql/<version>/main-backup.tar.gz <slave_ip>:/tmp/
在从服务器上解压备份文件并恢复数据目录。
sudo tar -xvpzf /tmp/main-backup.tar.gz -C /
修改从服务器上的postgresql.conf和pg_hba.conf文件,类似于主服务器的配置。
在从服务器上启动PostgreSQL服务。
sudo systemctl start postgresql
在从服务器上初始化复制。
sudo -u postgres psql
在psql命令行中执行以下SQL语句:
SELECT pg_create_restore_point('initial_backup');
然后退出psql。
在从服务器上编辑recovery.conf文件(通常位于/var/lib/postgresql/<version>/main/目录下)。
sudo nano /var/lib/postgresql/<version>/main/recovery.conf
添加以下内容:
standby_mode = 'on'
primary_conninfo = 'host=<master_ip> dbname=your_database user=replica_user password=your_password'
restore_command = 'cp /var/lib/postgresql/archive/%f %p'
trigger_file = '/tmp/postgresql.trigger.5432'
将<master_ip>替换为主服务器的IP地址,your_database替换为你要复制的数据库名称,replica_user和your_password替换为复制用户的凭据。
在从服务器上启动复制进程。
sudo systemctl restart postgresql
在主服务器和从服务器上分别检查复制状态。
在主服务器上:
sudo -u postgres psql
SELECT * FROM pg_stat_replication;
在从服务器上:
sudo -u postgres psql
SELECT * FROM pg_stat_replication;
如果一切配置正确,你应该能够看到从服务器正在从主服务器接收WAL数据。
通过以上步骤,你应该能够在Debian系统下成功配置PostgreSQL的复制功能。