Postgresql 10 复制模式错误
Postgresql 10 replication mode error
我正在尝试为 postgres 10 和 docker
使用流复制设置基本的主从配置
由于官方 docker 图像提供了一个 docker-entrypoint-initdb.d
文件夹用于放置初始化脚本,我认为开始将我的准备代码放在这里是一个不错的主意。
我想做的是在以待机模式启动从属之前自动恢复数据库的方式,所以我 运行
rm -rf /var/lib/postgresql/data/* && pg_basebackup 'host=postgres-master port=5432 user=foo password=foo' -D /var/lib/postgresql/data/
这就成功了。
然后根据 docker 初始化脚本关闭并重新启动服务器,弹出一条消息说
database system identifier differs between the primary and standby
现在我上网已经有一段时间了,我得到的唯一 2 个解释是我的 recovery.conf
文件配置错误,看起来像这样
standby_mode = 'on'
primary_conninfo = 'host=postgres-master port=5432 user=foo password=foo'
trigger_file = '/tmp/postgresql.trigger'
连接字符串与我用于基本备份的连接字符串相同。
流传的第二个解决方案是备份命令可能会被搞乱,但备份后我唯一添加到数据文件夹的是 recovery.conf
文件。
有人知道我哪里搞砸了吗?
我应该去 repmgr 收工吗?
提前致谢
为了回答我自己的问题,问题在于如何调用 dockerfile 入口点脚本。相反,他们最终会根据我未正确设置的变量将实例作为主实例或从实例启动。
我正在尝试为 postgres 10 和 docker
使用流复制设置基本的主从配置由于官方 docker 图像提供了一个 docker-entrypoint-initdb.d
文件夹用于放置初始化脚本,我认为开始将我的准备代码放在这里是一个不错的主意。
我想做的是在以待机模式启动从属之前自动恢复数据库的方式,所以我 运行
rm -rf /var/lib/postgresql/data/* && pg_basebackup 'host=postgres-master port=5432 user=foo password=foo' -D /var/lib/postgresql/data/
这就成功了。
然后根据 docker 初始化脚本关闭并重新启动服务器,弹出一条消息说
database system identifier differs between the primary and standby
现在我上网已经有一段时间了,我得到的唯一 2 个解释是我的 recovery.conf
文件配置错误,看起来像这样
standby_mode = 'on'
primary_conninfo = 'host=postgres-master port=5432 user=foo password=foo'
trigger_file = '/tmp/postgresql.trigger'
连接字符串与我用于基本备份的连接字符串相同。
流传的第二个解决方案是备份命令可能会被搞乱,但备份后我唯一添加到数据文件夹的是 recovery.conf
文件。
有人知道我哪里搞砸了吗?
我应该去 repmgr 收工吗?
提前致谢
为了回答我自己的问题,问题在于如何调用 dockerfile 入口点脚本。相反,他们最终会根据我未正确设置的变量将实例作为主实例或从实例启动。