postgre建立主从数据库
时间: 2023-07-08 19:37:50 浏览: 109
要在 PostgreSQL 中建立主从数据库,可以采用以下步骤:
1. 在主服务器上,编辑 `postgresql.conf` 文件,将 `wal_level` 参数设置为 `replica`,将 `max_wal_senders` 参数设置为主服务器可以同时向多少个从服务器发送 WAL 日志,将 `wal_keep_segments` 参数设置为主服务器应该保留的 WAL 日志段数量。例如:
```
wal_level = replica
max_wal_senders = 10
wal_keep_segments = 100
```
2. 在主服务器上,编辑 `pg_hba.conf` 文件,将从服务器的连接方式添加到文件中。例如:
```
host replication replica 192.168.1.0/24 md5
```
其中,`replication` 是从服务器连接时所使用的用户名,`192.168.1.0/24` 是从服务器的 IP 地址,`md5` 表示使用 MD5 加密方式进行身份验证。
3. 在主服务器上,重启 PostgreSQL 服务以使配置生效。
4. 在从服务器上,创建一个空的数据库,并使用 `pg_basebackup` 命令从主服务器上复制数据。例如:
```
pg_basebackup -D /data/postgresql/data -h master.example.com -p 5432 -U replica -X stream -P
```
其中,`/data/postgresql/data` 是从服务器上数据库的数据目录,`master.example.com` 是主服务器的主机名或 IP 地址,`5432` 是主服务器的端口号,`replica` 是从服务器连接时所使用的用户名,`stream` 表示使用流复制方式进行备份,`-P` 表示在复制过程中输出进度信息。
5. 在从服务器上,编辑 `postgresql.conf` 文件,将 `hot_standby` 参数设置为 `on`。例如:
```
hot_standby = on
```
6. 在从服务器上,创建一个名为 `recovery.conf` 的文件,并设置以下内容:
```
standby_mode = on
primary_conninfo = 'host=master.example.com port=5432 user=replica'
```
其中,`master.example.com` 是主服务器的主机名或 IP 地址,`5432` 是主服务器的端口号,`replica` 是从服务器连接时所使用的用户名。
7. 在从服务器上,启动 PostgreSQL 服务。从服务器将自动连接到主服务器并开始进行流复制。
这样,主从数据库就建立完成了。主服务器将自动将 WAL 日志发送到从服务器,从服务器将自动将 WAL 日志应用到自己的数据中。可以通过查询 `pg_stat_replication` 视图来查看主从服务器之间的复制状态。
阅读全文