Postgresql

在兩個 PostgreSQL 實例之間設置二進制複製

  • November 4, 2014

我有兩個虛擬機:( dbrepa)-.175dbrepb( -.191)。兩者都安裝了 PostgreSQL 9.2;一旦 PG 在 上安裝(從未初始化)dbrepadbrepb就被製作為複製。我需要讓數據庫上的數據庫dbrepb成為dbrepa.

因此,我設置了適當的設置dbrepa/postgresql.conf

listen_address = '*'
wal_level = hot_standby
max_wal_senders = 3 # Aside, I assume '3' is arbitrary

dbrepa/pg_hba.conf(注意間距):

host   replication   all   192.168.108.191/32   trust

dbrepb/postgresql.conf

hot_standby = on

dbrepb/recovery.conf(一個新文件):

standby_mode = 'on'
primary_conninfo = 'host=192.168.108.175'

每個數據庫都是空的,但在兩個數據庫上都執行了以下命令:

[root@dbrep-]# service postgresql-9.2 initdb

現在,由於沒有數據庫,我不必擔心它們是否不同步(因為沒有數據不同步)。我啟動大師:

[root@dbrepa]# service postgresql-9.2 start
Starting postregsql-9.2 service:   [  OK  ]

我開始待機:

[root@dbrepb]# service postgresql-9.2 start
Starting postregsql-9.2 service:   [FAILED]

檢查每個日誌文件:

dbrepa/data/pg_log/-.log是空的。

dbrepb/data/pg_log/-.log:

LOG:  entering standby mode
WARNING:  WAL was generated with wal_level=minimal, data may be missing
HINT:  This happens if you temporarily set wal_level=minimal without taking a new base backup.
FATAL:  hot standby is not possible because wal_level was not set to "hot_standby" on the master server
HINT:  Either set wal_level to "hot_standby" on the master, or turn off hot_standby here.
LOG:  startup process (PID 4320) exited with exit code 1
LOG:  aborting startup due to startup process failure

但是當我仔細檢查時*,*dbrepa/data/postgres.conf顯然wal_level設置為.hot_standby

還有什麼問題?

您的最後兩個步驟的順序錯誤。

適當的步驟

  • _ 5.先啟動standby,這樣就不會不同步了。(將記錄有關無法連接到主伺服器的消息,這沒關係。)
  • _6。啟動主。

您應該在備用後啟動主控。

嘗試按如下方式反轉所有內容:

  • [root@dbrepa]# service postgresql-9.2 stop
  • [root@dbrepb]# service postgresql-9.2 stop
  • rsync 從 Master(除了 pg_xlog 和 config 文件(您的第 4 步))到 Standby的所有內容
  • [root@dbrepb]# service postgresql-9.2 start
  • [root@dbrepa]# service postgresql-9.2 start

試一試 !!!

我知道這是一個老問題,但我想我剛剛找到了答案。如果您修改範例initdb -D /tmp/foo -s | grep POSTGRESQL_CONF_SAMPLE配置wal_level=hot_standby

我還沒有弄清楚如何initdb直接將其傳遞給。我已經嘗試過PGOPTIONS="-c wal_level=hot_standby"許多類似的呼叫,但都沒有成功。YMMV。

引用自:https://dba.stackexchange.com/questions/47876