当前位置: 首页 > news >正文

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地址和认证方法连接到主库。例如:
host replication replica 192.168.222.12/24 md5

其中replica是连接用户名,192.168.222.12/24是备库的IP地址段,md5是认证方法。
3. 创建复制用户:

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

三、配置备库

  1. 安装与初始化:
  • 在备库上安装PostgreSQL软件,但不需要初始化数据库目录。
  1. 数据同步:
  • 使用pg_basebackup工具从主库同步基础数据到备库。
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操作,查看备库是否能够实时同步这些更改。
  • 检查主库和备库的日志文件,确认没有错误或警告信息。
  • 进行故障转移测试,确保在主库故障时能够顺利切换到备库。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBoot 整合 Easy_Trans 实现翻译的具体介绍
  • 人工智能有助于解决 IT/OT 集成安全挑战
  • 《动手学深度学习》笔记1.9——丢弃法 (一种正则化方法)
  • JVM基本组成
  • 【AI算法岗面试八股面经【超全整理】——深度学习】
  • PLC Twincat3 对传感器数据滑动平均滤波
  • HTML与JavaScript结合实现简易计算器
  • hadoop大数据平台操作笔记(上)
  • 聚合函数count 和 group by
  • Android Input系统原理一
  • MAC如何获取文件数字签名和进程名称
  • QT开发: Qt 框架中字符串核心类QString详解
  • Linux上Java项目环境安装
  • 深度学习:常见损失函数简介--名称、作用和用法
  • Git基本用法总结
  • JS 中的深拷贝与浅拷贝
  • 【comparator, comparable】小总结
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 78. Subsets
  • interface和setter,getter
  • Map集合、散列表、红黑树介绍
  • PHP 小技巧
  • 百度地图API标注+时间轴组件
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 简单基于spring的redis配置(单机和集群模式)
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 微信小程序设置上一页数据
  • 我有几个粽子,和一个故事
  • 无服务器化是企业 IT 架构的未来吗?
  • 移动端唤起键盘时取消position:fixed定位
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 阿里云服务器如何修改远程端口?
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • ​马来语翻译中文去哪比较好?
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #1015 : KMP算法
  • #Java第九次作业--输入输出流和文件操作
  • #VERDI# 关于如何查看FSM状态机的方法
  • #控制台大学课堂点名问题_课堂随机点名
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (3)nginx 配置(nginx.conf)
  • (day6) 319. 灯泡开关
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (十七)devops持续集成开发——使用jenkins流水线pipeline方式发布一个微服务项目
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (已解决)什么是vue导航守卫
  • (转)EXC_BREAKPOINT僵尸错误
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .DFS.
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET 分布式技术比较