プライマリサーバーPostgreSQLのホットスタンバイWALファイルの復元がどのように起動されますか?
# postgresql.conf
wal_level = hot_standby
archive_mode = on
archive_timeout = 10
archive_command = 'test ! -f /archive/%f && cp %p /archive/%f'
スタンバイサーバ
hot_standby = on
私はスタンバイに$PGDATA/pg_xlog
にプライマリサーバで/archive/*
をコピーして、何も起こりません。
2016-11-21 17:56:09 CST [17762-3] LOG: invalid primary checkpoint record
2016-11-21 17:56:09 CST [17762-4] LOG: record with zero length at 0/6000100
2016-11-21 17:56:09 CST [17762-5] LOG: invalid secondary checkpoint record
2016-11-21 17:56:09 CST [17762-6] PANIC: could not locate a valid checkpoint record
2016-11-21 17:56:09 CST [17761-1] LOG: startup process (PID 17762) was terminated by signal 6: Aborted
2016-11-21 17:56:09 CST [17761-2] LOG: aborting startup due to startup process failure
質問:私は、スタンバイサーバを再起動すると、私は、サーバログからのエラーメッセージまし
それは十分に単純に
$PGDATA/pg_xlog
にプライマリサーバで/archive/*
をコピーすることによって、スタンバイサーバーにデータを同期することですスタンバイ?ホットスタンバイサーバーでトリガーされたWALファイルを復元する方法と時期はいつですか?スタンバイサーバは定期的に
$PGDATA/pg_xlog
ディレクトリに新しいWALファイルをチェックしていますか?それとも手動で起動する必要がありますか?私はおよそホットスタンバイを、話しているないストリーミングレプリケーション。だから私は
conninfo
を設定する必要はないと仮定します。私は正しい?hot_standby = on
を設定してサーバを再起動した後でも、エラーなしでINSERT
を実行できます。本当に読み取り専用にするにはどうすれば設定できますか?
ステップスタンバイを作成する手順は次のとおりです。1. 'psql postgres -c" pg_start_backup( 'backup') "を選択します。 2. $ PGDATAディレクトリをスタンバイのファイルシステムにコピーします。 3. 'psql postgres -c" pg_stop_backup() "を選択します。 4. 'postgresql.conf'に' hot_standby = on'を設定します。 5. postgresqlサーバを再起動します。 –
これはうまく見えます( 'fsync = on'がある場合)。おそらくあなたは十分なWALアーカイブをコピーしておらず、 'backup_label'からのチェックポイントを含むものは存在しないでしょう。あなたは 'backup_label'ファイルを持っていますよね? 「START WAL LOCATION」の項目を読み、対応するWALファイルがあることを確認します。 –