PostgreSQL主备环境配置

配置 PostgreSQL 的主备环境通常涉及以下步骤:

  1. 安装和配置主服务器 (Primary)。
  2. 安装和配置备服务器 (Standby)。
  3. 在主服务器上配置流复制。
  4. 启动流复制进程。

一、安装PostgreSQL软件

  1. 下载与安装:
  • 可以从PostgreSQL官网下载适合操作系统的安装包或使用包管理器(如yum、apt等)进行安装。
  • 如果是源码安装,需要下载源码包,解压缩,配置,编译并安装。
  1. 初始化数据库:
  • 使用initdb命令初始化数据库目录。
  • 创建PostgreSQL用户和组(如果需要的话),并设置数据库目录的权限。

二、配置主库

  1. 修改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等,根据实际需求配置。
  1. 修改pg_hba.conf:
  • 添加或修改规则以允许备库通过特定的用户、IP地址和认证方法连接到主库。例如:
bash 复制代码
host replication replica 192.168.222.12/24 md5

其中replica是连接用户名,192.168.222.12/24是备库的IP地址段,md5是认证方法。

  1. 创建复制用户:
  • 在主库上创建一个具有复制权限的用户,用于备库连接到主库。
sql 复制代码
CREATE ROLE replica LOGIN REPLICATION ENCRYPTED PASSWORD 'replica';
  1. 重启PostgreSQL服务:
  • 应用上述更改后,需要重启PostgreSQL服务。

三、配置备库

  1. 安装与初始化:
  • 在备库上安装PostgreSQL软件,但不需要初始化数据库目录。
  1. 数据同步:
  • 使用pg_basebackup工具从主库同步基础数据到备库。
bash 复制代码
pg_basebackup -D $PGDATA -h 主库IP -p 5432 -U replica -X stream -P
  • 确保备库的数据目录具有正确的权限。
  1. 修改postgresql.conf:
  • 在备库的postgresql.conf文件中,设置一些关键的参数以支持热备模式。
  • 注意,从PostgreSQL 12开始,recovery.conf文件已经被移除,相关配置已合并到postgresql.conf中。
  • 配置hot_standby = on,以及其他与复制相关的参数,如primary_conninfo。
  1. 创建standby.signal文件(如果版本要求):
  • 在备库的数据目录下创建一个名为standby.signal的空文件,以表明该数据库实例是备库。
  1. 启动备库:
  • 使用pg_ctl start命令启动备库。

四、验证与测试

  • 在主库上执行一些DML操作,查看备库是否能够实时同步这些更改。
  • 检查主库和备库的日志文件,确认没有错误或警告信息。
  • 进行故障转移测试,确保在主库故障时能够顺利切换到备库。
相关推荐
Jerry.张蒙3 小时前
SAP业财一体化实现的“隐形桥梁”-价值串
大数据·数据库·人工智能·学习·区块链·aigc·运维开发
无名修道院3 小时前
DVWA 靶场搭建:Windows11(phpstudy 搭建)(步骤 + 截图 + 常见问题)
数据库·网络安全·渗透测试·靶场·php·dvwa·phpstudy
CodeAmaz5 小时前
MySQL 事务隔离级别详解
数据库·mysql·事务隔离级别
千寻技术帮5 小时前
10398_基于SSM的教学评价管理系统
数据库·mysql·毕业设计·ssm·教学评价
晨星3345 小时前
使用 IntelliJ IDEA 轻松连接 Java 与 MySQL 8 数据库
java·开发语言·数据库
PWRJOY6 小时前
【MySQL】使用mycli查看数据库的基本操作
数据库·mysql
SadSunset6 小时前
(16)Bean的实例化
java·数据库·笔记·spring
JIngJaneIL6 小时前
基于Java + vue干洗店预约洗衣系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
cui_win7 小时前
MySQL 压测实战:sysbench 从入门到精通
数据库·mysql·压测·sysbench
屋外雨大,惊蛰出没7 小时前
小白安装Redis
数据库·redis·缓存