在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地址。
在主服务器上创建一个用于复制的用户,并授予必要的权限。
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
替换为你想要复制的数据库名称。
重启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
替换为复制用户的密码。
启动从服务器上的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的主从复制。