PostgreSQL 12: Recovery.conf 文件参数合并到 postgresql.conf

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: PostgreSQL 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用,我们看看手册的说明,如下: 发行说明 Move recovery.

PostgreSQL 12 的一个重要变化是 recovery.conf 配置文件中的参数合并到 postgresql.conf,recovery.conf 不再使用,我们看看手册的说明,如下:

发行说明

Move recovery.conf settings into postgresql.conf (Fujii Masao, Simon Riggs, Abhijit Menon-Sen, Sergei Kornilov)

recovery.conf is no longer used, and the server will not start if the file exists. recovery.signal and standby.signal are now used to switch into non-primary mode. trigger_file has been renamed to promote_trigger_file. The standby_mode setting has been removed.

手册提到变化信息不少,包括以下几点:

  • recovery.conf 配置文件不再支持,此文件中的参数合并到 postgresql.conf,若 recovery.conf 存在,数据库无法启动
  • 新增 recovery.signal 标识文件,表示数据库处于 recovery 模式
  • 新增加 standby.signal 标识文件,表示数据库处于 standby 模式
  • trigger_file 参数更名为 promote_trigger_file
  • standby_mode 参数不再支持

以上变化对于部署 PostgreSQL 流复制有哪些地方需要注意?本文本简单演示,流复制的部署可参考 PostgreSQL:使用 pg_basebackup 搭建流复制环境

pg_basebackup 命令差异

12 版本pg_basebackup 命令的 -R 参数的效果和之前不同,主要体现在:

  • 命令执行后在 $PGDATA 目录创建 standby.signal 标识文件,文件内容为空
  • 命令执行后在 $PGDATA 目录的 postgresql.auto.conf 文件中添加 primary_conninfo 参数信息

接着验证下,测试环境信息如下:

pghost1 192.168.2.11 主节点
pghost2 192.168.2.12 备节点

在 pghost2 执行 pg_basebackup 命令,如下:

[pg12@pghost2 pg12]$ pg_basebackup -R -D /pgdata/pg12/pg_root -Fp -Xs -v -P -h 192.168.2.11 -p 1921 -U repuser
pg_basebackup: initiating base backup, waiting for checkpoint to complete
pg_basebackup: checkpoint completed
pg_basebackup: write-ahead log start point: 0/5B000028 on timeline 1
pg_basebackup: starting background WAL receiver
pg_basebackup: created temporary replication slot "pg_basebackup_34159"
1144035/1144035 kB (100%), 2/2 tablespaces
pg_basebackup: write-ahead log end point: 0/5B000138
pg_basebackup: waiting for background process to finish streaming ...
pg_basebackup: syncing data to disk ...
pg_basebackup: base backup completed

验证 standby.signal 文件,如下:

[pg12@pghost2 pg_root]$ ll $PGDATA/standby.signal
-rw-------. 1 pg12 pg12 0 Jul 18 10:30 /pgdata/pg12/pg_root/standby.signal

验证 postgresql.auto.conf 文件,如下:

[pg12@pghost2 pg_root]$ cat $PGDATA/postgresql.auto.conf
# Do not edit this file manually!
# It will be overwritten by the ALTER SYSTEM command.
primary_conninfo = 'user=repuser passfile=''/home/pg12/.pgpass'' host=192.168.2.11 port=1921 sslmode=disable sslcompression=0 gssencmode=disable target_session_attrs=any'

果然 $PGDATA 目录下产生了 standby.signa 标识文件,同时 postgresql.auto.conf 配置文件增加了 primary_conninfo 参数信息。

之后启动备库,如下:

[pg12@pghost2 pg_root]$ pg_ctl start

并验证主备角色,流复制正常工作。

recovery.conf 不再支持

之前版本 PostgreSQL 的流复制备库是通过在 $PGDATA 目录中创建 recovery.conf 文件来标识的,这是流复制部署的重要文件,若 $PGDATA 目录下不存在此文件,数据库无法以流复制备库角色启动。

12 版本开始 recovery.conf 文件不再支持,若数据目录中存在此文件,数据库启动报错。

总结

虽然 PostgreSQL 12 部署流复制在操作层面和之前版几乎没有区别,但在处理机制上 12 版本和之前版本相差较大,同时 pg_basebackup 命令的 -R 参数的效果也和之前版本不一样,这些是需要注意的地方。

参考

源文链接: https://postgres.fun/20190718155800.html

新书推荐

最后推荐和张文升共同编写的《PostgreSQL实战》,本书基于PostgreSQL 10 编写,共18章,重点介绍SQL高级特性、并行查询、分区表、物理复制、逻辑复制、备份恢复、高可用、性能优化、PostGIS等,涵盖大量实战用例!

_5_PostgreSQL_

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
1月前
|
DataWorks Java 关系型数据库
DataWorks常见问题之将预警信息发送至邮箱
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
35 1
|
3月前
|
关系型数据库 Linux PostgreSQL
这个错误是因为Flink CDC在尝试访问PostgreSQL的"decoderbufs"文件时,发现该文件不存在
【1月更文挑战第23天】【1月更文挑战第111篇】这个错误是因为Flink CDC在尝试访问PostgreSQL的"decoderbufs"文件时,发现该文件不存在
40 11
|
5月前
|
缓存 关系型数据库 数据库
PostgreSQL技术大讲堂 - 第32讲:数据库参数调整
从零开始学PostgreSQL技术大讲堂 - 第32讲:数据库参数调整
449 2
|
4月前
|
SQL 关系型数据库 数据库
postgresql数据库修改参数的方式
在PostgreSQL数据库中,你可以通过多种方式修改数据库参数,以更改其行为。以下是一些常见的修改数据库参数的方式: 1. **通过配置文件修改(postgresql.conf):** PostgreSQL的配置文件是 `postgresql.conf`。你可以直接编辑该文件,找到要修改的参数,修改其值,然后重新启动PostgreSQL服务以使更改生效。 通常,`postgresql.conf` 文件位于 PostgreSQL 数据目录下。修改完毕后,确保重新启动 PostgreSQL 服务。 2. **使用 ALTER SYSTEM 命令:** PostgreSQL
105 1
|
2月前
|
关系型数据库 Java 分布式数据库
PolarDB for PostgreSQL参数问题之参数删除失败如何解决
PolarDB for PostgreSQL是基于PostgreSQL开发的一款云原生关系型数据库服务,它提供了高性能、高可用性和弹性扩展的特性;本合集将围绕PolarDB(pg)的部署、管理和优化提供指导,以及常见问题的排查和解决办法。
|
3月前
|
关系型数据库 PostgreSQL
PostgreSQL 的哪些参数不能通过ALTER SYSTEM SET 修改
在 PostgreSQL 中,有一些参数是不能通过 `ALTER SYSTEM SET` 语句进行动态修改的,这些参数通常需要在 PostgreSQL 的配置文件中进行手动修改。以下是一些不能通过 `ALTER SYSTEM SET` 修改的常见参数: 1. **track_activities** 2. **track_counts** 3. **track_io_timing** 4. **track_functions** 5. **track_activity_query_size** 6. **track_commit_timestamp** 7. **shared_preload
|
4月前
|
SQL 关系型数据库 MySQL
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
MySQL【实践 02】MySQL迁移到PostgreSQL数据库的语法调整说明及脚本分享(通过bat命令修改mapper文件内的SQL语法)
113 0
|
4月前
|
SQL 关系型数据库 Shell
postgresql|数据库|批量执行SQL脚本文件的shell脚本
postgresql|数据库|批量执行SQL脚本文件的shell脚本
124 0
|
9月前
|
关系型数据库 PostgreSQL
PostgreSQL如何删除不使用的xlog文件
PostgreSQL如何删除不使用的xlog文件
121 0
|
10月前
|
Oracle 安全 关系型数据库
如何在openGauss/PostgreSQL手动清理XLOG/WAL 文件?
openGauss/PostgreSQL中的预写式日志WAL(Write Ahead Log),又名Xlog或redo log,相当于oracle的online redo log, 不同的是oracle online redo log是提前创建几组滚动使用,但在opengauss中只需要本配置参数控制WAL日志的周期,数据库会一直的创建并自动清理,但存在一些情况WAL日志未清理导致目录空间耗尽,或目录空间紧张时手动删除wal日志时,比如如何确认在非归档模式下哪些WAL日志文件可以安全删除?
568 0