Postgresql
在兩個 PostgreSQL 實例之間設置二進制複製
我有兩個虛擬機:(
dbrepa
)-.175
和dbrepb
(-.191
)。兩者都安裝了 PostgreSQL 9.2;一旦 PG 在 上安裝(從未初始化)dbrepa
,dbrepb
就被製作為複製。我需要讓數據庫上的數據庫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。