現在、HA postgresql アーキテクチャのストリーミング レプリケーションをセットアップする方法について調査を行っています。しかし、この問題は、一般的に混合環境でのバックアップ/復元およびメンテナンスにも関連しています。
「メイン」の postgresql サーバーは、Windows ボックスで実行されています。私は pg_dump を使用して毎日論理バックアップを作成し、pg_basebackup と WAL アーカイブを使用して PITR を提供する完全バックアップを作成しています (これはまだテストしていません)。
次のステップは、ストリーミング レプリケーションを介してレプリカを保持するスレーブ マシンをセットアップすることです。postgresql エコシステムのサポートが向上したため、この新しいホストは Ubuntu Server 16.04 LTS を実行しています。
pg_basebackup -h <main host> -D <datadirectory> --xlog-method=stream
スレーブデータディレクトリを初期化しました。- 次に、テーブルスペース ファイルへのシンボリック リンクをいくつか修正する必要がありました。これは、これらが Linux ファイル システムではなく Windows パスを指していたためです。
standby_mode = on
次に、connectioninfo を使用して recovery.conf ファイルを作成しました。- サーバーが構成されていることを確認
hot_standby = on
し、デーモンを開始しました
postgres が教えてくれるように、「データベース ロケール (明らかに Windows 固有の English_United_States.1252) はオペレーティング システムと互換性がありません」という問題が発生しています。
1252 は Windows 固有のロケールであり、Linux では en_US.UTF8 を使用する必要があることは承知していますが、このような混合環境では、次のようにする必要があります。
- Windows 上のメイン DB も en_US.UTF8 ロケールで初期化しますか?
- それは可能ですか?
- pg_basebackup フォーマットがオペレーティング システム固有である理由、またはそうでないバックアップ フォーマットがあるのはなぜですか?
- これを変換するために設定するコマンド ライン フラグはありますか?
- Linux のみ (または Windows のみ) を使用することも歓迎しますが、お客様が両方のオペレーティング システムにかなりの期間依存することになるのではないかと心配しています。