pg_rewind 无法同步第二个数据库

pg_rewind failing to sync second database

我有一个 PostgreSQL 集群,其中包含以下数据库,用户 myuser:

  1. 数据库1
  2. 数据库2

我已经设置了一个主服务器(192.168.50.8)和一个从服务器(192.168.50.9)的复制。我故障转移到从服务器,当我尝试对每个数据库使用 pg_rewind 故障回复到原始主服务器时,第一个数据库 pg_rewind 成功但第二个数据库失败。

对于数据库 1,运行 以下命令在 (192.168.50.8) 上有效:

/usr/pgsql-11/bin/pg_rewind -D "data_dir_path_here" --source-server="port=pg_port_here user=myuser dbname=database1 host=192.168.50.9"

对于数据库 2,运行 (192.168.50.8) 上的以下命令给我一个错误:

/usr/pgsql-11/bin/pg_rewind -D "data_dir_path_here" --source-server="port=pg_port_here user=myuser dbname=database2 host=192.168.50.9"

错误:

target server must be shut down cleanly
failure, exiting

你和老主人(192.168.50.8)一起使用pg_rewind,让它变成奴隶。如果关闭不干净,您必须 运行 在 PostgreSQL 上进行崩溃恢复(只需启动服务器并在崩溃恢复完成后立即再次停止它)。那么你可以 运行 pg_rewind.

pg_rewind 影响整个数据库集群,因此您 而不是 运行 每个数据库。你运行它曾经在应该成为新奴隶的旧主人身上。

如果你使用pg_rewind--source-server选项连接到新的master,你指定哪个数据库都没有关系。任何数据库都行,效果都一样