配置 PostgreSQL 的主备环境通常涉及以下步骤:
- 安装和配置主服务器 (Primary)。
- 安装和配置备服务器 (Standby)。
- 在主服务器上配置流复制。
- 启动流复制进程。
一、安装PostgreSQL软件
- 下载与安装:
- 可以从PostgreSQL官网下载适合操作系统的安装包或使用包管理器(如yum、apt等)进行安装。
- 如果是源码安装,需要下载源码包,解压缩,配置,编译并安装。
- 初始化数据库:
- 使用initdb命令初始化数据库目录。
- 创建PostgreSQL用户和组(如果需要的话),并设置数据库目录的权限。
二、配置主库
- 修改postgresql.conf:
- listen_addresses = '*':设置PostgreSQL监听所有IP地址。
- wal_level = hot_standby:启用热备模式,以便支持实时复制。
- max_wal_senders = 2:设置最多可以同时发送WAL(Write-Ahead Logging)数据的客户端数量。
- wal_keep_segments = 32:设置保留的WAL文件段数,每个段通常16MB。
- max_connections = 100:设置最大连接数。
- 其他可能需要设置的参数,如checkpoint_timeout、archive_mode等,根据实际需求配置。
- 修改pg_hba.conf:
- 添加或修改规则以允许备库通过特定的用户、IP地址和认证方法连接到主库。例如:
bash
host replication replica 192.168.222.12/24 md5
其中replica是连接用户名,192.168.222.12/24是备库的IP地址段,md5是认证方法。
- 创建复制用户:
- 在主库上创建一个具有复制权限的用户,用于备库连接到主库。
sql
CREATE ROLE replica LOGIN REPLICATION ENCRYPTED PASSWORD 'replica';
- 重启PostgreSQL服务:
- 应用上述更改后,需要重启PostgreSQL服务。
三、配置备库
- 安装与初始化:
- 在备库上安装PostgreSQL软件,但不需要初始化数据库目录。
- 数据同步:
- 使用pg_basebackup工具从主库同步基础数据到备库。
bash
pg_basebackup -D $PGDATA -h 主库IP -p 5432 -U replica -X stream -P
- 确保备库的数据目录具有正确的权限。
- 修改postgresql.conf:
- 在备库的postgresql.conf文件中,设置一些关键的参数以支持热备模式。
- 注意,从PostgreSQL 12开始,recovery.conf文件已经被移除,相关配置已合并到postgresql.conf中。
- 配置hot_standby = on,以及其他与复制相关的参数,如primary_conninfo。
- 创建standby.signal文件(如果版本要求):
- 在备库的数据目录下创建一个名为standby.signal的空文件,以表明该数据库实例是备库。
- 启动备库:
- 使用pg_ctl start命令启动备库。
四、验证与测试
- 在主库上执行一些DML操作,查看备库是否能够实时同步这些更改。
- 检查主库和备库的日志文件,确认没有错误或警告信息。
- 进行故障转移测试,确保在主库故障时能够顺利切换到备库。