postgresql 9.5 双主复制详细步骤
时间: 2023-09-28 20:10:19 浏览: 79
PostgreSQL9.5安装
PostgreSQL 9.5 双主复制可以实现两个主节点之间的数据同步,以实现高可用性和容错性。下面是详细的步骤:
1. 确认系统环境
确保两台服务器的 Postgres 版本一致,同时需要安装和启动 Postgres 服务。
2. 修改 postgresql.conf 文件
在两台服务器上找到 postgresql.conf 文件,修改以下参数:
```
listen_addresses = '*' # 允许其他主机连接
wal_level = hot_standby # 设置 WAL 级别
max_wal_senders = 10 # 设置最大的 WAL 发送进程数
wal_keep_segments = 32 # 设置保存 WAL 日志段的数量
hot_standby = on # 启用热备
```
3. 修改 pg_hba.conf 文件
在两台服务器上找到 pg_hba.conf 文件,添加以下规则:
```
host replication <user> <slave_ip>/32 md5
```
其中 `<user>` 是用于复制的用户名,`<slave_ip>` 是从服务器的 IP 地址。这里使用 `md5` 加密方式进行认证。
4. 创建复制用户
在主服务器上创建一个用于复制的用户,并授予 REPLICATION 权限:
```
CREATE USER <user> REPLICATION LOGIN CONNECTION LIMIT 10 ENCRYPTED PASSWORD '<password>';
```
其中 `<user>` 是复制用户的名称,`<password>` 是密码。
5. 停止 Postgres 服务
在两台服务器上停止 Postgres 服务。
6. 备份数据目录
在两台服务器上备份数据目录,以便在出现问题时进行恢复。
7. 复制数据目录
将主服务器的数据目录复制到从服务器,确保文件属主和权限正确。
8. 启动 Postgres 服务
在两台服务器上启动 Postgres 服务。
9. 创建复制槽
在主服务器上创建一个复制槽,并设置复制用户的密码:
```
SELECT * FROM pg_create_physical_replication_slot('<slot_name>');
ALTER ROLE <user> SET wal_sender_timeout = '60s';
```
其中 `<slot_name>` 是复制槽的名称,`<user>` 是复制用户的名称。
10. 启动复制进程
在从服务器上启动复制进程:
```
pg_basebackup -h <master_host> -U <user> -R -D <data_directory>
```
其中 `<master_host>` 是主服务器的 IP 地址,`<user>` 是复制用户的名称,`<data_directory>` 是从服务器的数据目录。
11. 修改从服务器配置文件
在从服务器上修改 postgresql.conf 文件:
```
hot_standby = on
```
12. 启动从服务器
在从服务器上启动 Postgres 服务。
13. 启动复制进程
在主服务器上启动复制进程:
```
SELECT pg_start_backup('<label>');
rsync -cva --inplace --exclude=*pg_xlog* <data_directory> <slave_ip>:<data_directory>
SELECT pg_stop_backup();
```
其中 `<label>` 是备份标签,`<data_directory>` 是主服务器的数据目录,`<slave_ip>` 是从服务器的 IP 地址。
14. 启动从服务器
在从服务器上启动 Postgres 服务。
15. 测试复制
在主服务器上创建一个测试表,并在从服务器上查询是否已经同步:
```
CREATE TABLE test (id SERIAL PRIMARY KEY, name VARCHAR(20));
INSERT INTO test (name) VALUES ('test');
```
在从服务器上查询:
```
SELECT * FROM test;
```
如果查询到了刚才插入的数据,说明复制已经成功。
以上就是 PostgreSQL 9.5 双主复制的详细步骤。需要注意的是,在实际应用中,还需要进行一些配置和调优,以确保复制的可靠性和性能。
阅读全文