Warm tip: This article is reproduced from serverfault.com, please click

centos-pg_basebackup(复制)后无法启动Postgresql 12

(centos - Cannot start Postgresql 12 after pg_basebackup (replication))

发布于 2020-12-02 09:09:01

我有两个数据库服务器,我正在尝试对具有TimescaleDB扩展名的PostgreSQL进行主从复制。

我经历了这个过程:

  1. [两者]在CentOS 7上安装PostgreSQL 12。

  2. [两者]初始化数据库并安装TimescaleDB。(以下官方网站教程)

  3. [全部]是不是所有的firewall-cmdpostgresql.confpg_hba.conf作品。

  4. [Master]创建初始数据库。

  5. [奴隶]停止PostgreSQL,从中删除所有内容/var/lib/pgsql/12/data,然后pg_basebackup从Master中删除所有内容

    (命令我使用的:pg_basebackup -h [MASTER_DB_IP] -D /var/lib/pgsql/12/data -U [REP_USER] -vP -W

  6. [从属]设置hot_standby = on并创建recovery.conf

  7. [从站]启动PostgreSQL检查复制工作。

  8. [从站]发生此错误,无法启动PostgreSQL。

-- Subject: Unit postgresql-12.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit postgresql-12.service has begun starting up.
Dec 02 17:53:40 localhost.localdomain postmaster[10439]: 2020-12-02 17:53:40.116 KST [10439] LOG:  starting PostgreSQL 12.5 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red
Dec 02 17:53:40 localhost.localdomain postmaster[10439]: 2020-12-02 17:53:40.116 KST [10439] LOG:  listening on IPv4 address "0.0.0.0", port 5432
Dec 02 17:53:40 localhost.localdomain postmaster[10439]: 2020-12-02 17:53:40.116 KST [10439] LOG:  listening on IPv6 address "::", port 5432
Dec 02 17:53:40 localhost.localdomain postmaster[10439]: 2020-12-02 17:53:40.122 KST [10439] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
Dec 02 17:53:40 localhost.localdomain postmaster[10439]: 2020-12-02 17:53:40.130 KST [10439] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
Dec 02 17:53:40 localhost.localdomain postmaster[10439]: 2020-12-02 17:53:40.142 KST [10439] LOG:  redirecting log output to logging collector process
Dec 02 17:53:40 localhost.localdomain postmaster[10439]: 2020-12-02 17:53:40.142 KST [10439] HINT:  Future log output will appear in directory "log".
Dec 02 17:53:42 localhost.localdomain systemd[1]: postgresql-12.service: main process exited, code=exited, status=1/FAILURE
Dec 02 17:53:42 localhost.localdomain systemd[1]: Failed to start PostgreSQL 12 database server.

据我所知,这是复制的最后一步。但是PostgreSQL并非在所有配置后都启动。

请问我任何详细的问题。

先感谢你。

Questioner
David YK Han
Viewed
11
Laurenz Albe 2020-12-03 11:20:00

从版本12开始,PostgreSQL不再recovery.conf用于恢复配置。

相反,你必须将恢复配置参数添加到postgresql.confpostgresql.auto.conf(对于自动编辑,建议使用后者)。

然后standby.signal在数据目录中创建一个文件,该文件告诉PostgreSQL启动并保持在恢复模式。

然后启动备用服务器。

注意:该standby_mode参数已消失。相反,standby.signal如果你希望待机模式和recovery.signal结束的恢复模式,请使用。