我有两个数据库服务器,我正在尝试对具有TimescaleDB扩展名的PostgreSQL进行主从复制。
我经历了这个过程:
[两者]在CentOS 7上安装PostgreSQL 12。
[两者]初始化数据库并安装TimescaleDB。(以下官方网站教程)
[全部]是不是所有的firewall-cmd
,postgresql.conf
和pg_hba.conf
作品。
[Master]创建初始数据库。
[奴隶]停止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
)
[从属]设置hot_standby = on
并创建recovery.conf
[从站]启动PostgreSQL检查复制工作。
[从站]发生此错误,无法启动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.conf
或postgresql.auto.conf
(对于自动编辑,建议使用后者)。
然后standby.signal
在数据目录中创建一个文件,该文件告诉PostgreSQL启动并保持在恢复模式。
然后启动备用服务器。
注意:该standby_mode
参数已消失。相反,standby.signal
如果你希望待机模式和recovery.signal
结束的恢复模式,请使用。
严重地?从来不知道。非常感谢!我会尝试。
真高兴,我明白了。内容
recovery.conf
移至postgresql.conf
PostgreSQL 12中。我还必须创建standby.signal
和recovery.signal
。现在,它完美地工作了!谢谢劳伦斯。你需要要么
standby.signal
或recovery.signal
-这是更换为参数standby_mode
。实际上,
standby.signal
只有当我使用它时,它才行不通。我都需要某种方式。但是我听说那recovery.signal
是被忽略的时候standby.signal
。所以我创造了两者。您只需要其中之一。我经常这样做。