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

Cannot start Postgresql 12 after pg_basebackup (replication)

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

我经历了这个过程:

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

  2. [两者]初始化数据库并安装TimescaleDB。 (按照官网教程)

  3. [两者] 完成所有 firewall-cmdpostgresql.confpg_hba.conf 工作。

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

  5. [Slave] 停止 PostgreSQL,删除 /var/lib/pgsql/12/data 中的所有内容,并从 Master pg_basebackup 中删除所有内容。

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

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

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

  8. [Slave]出现这个错误,无法启动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 在所有配置后都没有启动。

请问我任何详细的问题。

提前致谢。

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

相反,您必须将恢复配置参数添加到 postgresql.confpostgresql.auto.conf(后者在自动编辑方面值得称赞)。

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

然后启动备用服务器

注意:standby_mode参数没有了。相反,如果您想要待机模式,请使用 standby.signal,对于结束的恢复模式,请使用 recovery.signal