ちょっとタイトルとはズレているかもしれませんが、
Postgresのデータを冗長化する上での質問です。
サーバが2台あり、1台を本番機とし、もう1台を待機用とします。
本番機にarchive_commandで待機用のサーバのディレクトリを設定します。
【質問1】
ログファイルが貯まっていくと思いますが、
こちらはログが16MBになるまで掃き出されないのでしょうか?
その場合、本番機が消滅した場合、16MB分のログがなくなる可能性があるという事でしょうか?
【質問2】
前提:本番機のログファイルを自作シェルで待機用のサーバへコピーします。この間隔を1分にします。
上記の場合、最悪1分以内のデータまで冗長化されると思います。
1分以内にログが16MB以上貯まるようなシステムでなければ、archive_commandによる冗長化は
必要ないのではないでしょうか?
必要性があれば、教えてください。
Postgresのバージョンは8.3.x でお願いいたします。
No.1ベストアンサー
- 回答日時:
【質問 1】への回答
はい、アーカイブ先のディレクトリに保管されていない WAL ファイル分の更新は消失します。また、更新の頻度が高い場合には 1 つ以上の WAL ファイル分の更新が消失する可能性があります。
なお、WAL ファイルがアーカイブ先のディレクトリに保管されるのはサイズが 16MB になったときではありません。WAL ファイルは最初からデフォルトで 16MB 分のサイズが確保されており、メモリ上の更新がディスクに反映されて不要になった場合 (完了済み WAL ファイルになった場合) にアーカイブ先のディレクトリに保管されます。
【質問 2】への回答
前述のように WAL ファイルのサイズは最初から 16MB であり、完了済み WAL ファイルになっていない状態で保管しても、正常に復旧できない可能性があります。
WAL ファイルを強制的にアーカイブ先のディレクトリに保管する方法がいくつかあります。
1 つは以下のように pg_switch_xlog 関数を実行することです。
=# SELECT pg_switch_xlog();
もう 1 つは archive_timeout パラメータを設定することです。前回 WAL ファイルがアーカイブ先のディレクトリに保管されてから archive_timeout パラメータに指定した時間を経過するとアーカイブ先のディレクトリへの保管が強制的に行われます。ただ、WAL ファイルのサイズは 16MB に固定されているため、あまりに短い時間を指定してしまうとディスク容量を圧迫してしまいます。
いずれにしても PITR (ウォームスタンバイ) では WAL ファイルがアーカイブ先のディレクトリに保管されるのは非同期なので更新が消失することは回避できません。
9.0 で追加されたストリーミングレプリケーションを使用すれば、16MB の WAL ファイル単位ではなく WAL レコード単位でデータを同期できるので、消失する更新はより少なくなります。とは言え、ストリーミングレプリケーションも非同期なので更新が消失することは回避できません。
更新の消失を回避するには、pgpool-II などの同期レプリケーションのミドルウェアを使用するか、現在、開発中の 9.1 で追加される同期のストリーミングレプリケーションを使用する必要があります。
詳しく説明いただきまして、ありがとうございます。
おかげで、わからなかった事がほとんど、理解できたのですが、1点だけ質問があります。
WAL ファイルがアーカイブ先のディレクトリに保管されるタイミングですが、
>メモリ上の更新がディスクに反映されて不要になった場合
とありますが、ディスクに反映されるのは、どのくらいの量(単位、頻度)なのでしょうか?
たとえば、メモリ上の更新が100MBあり、これがディスクに反映されたとすると、
16MB分のアーカイブログがたくさん出来るのかと想像します。
とすると、ディスクに反映されないうちは、この100MB分が消失すると思われますが、
どうでしょうか?
すみません、わかりづらくなってしまいましたが、
知りたいのはメモリ上の更新がディスクに反映されるタイミングです。
No.2
- 回答日時:
【No.1 の回答へのお礼での質問】への回答
メモリ上のすべての更新をディスクに反映する処理のことをチェックポイント処理と呼びます。チェックポイント処理は、完了済み WAL ファイルが checkpoint_segments パラメータに指定された個数を超えたとき、または、前回のチェックポイント処理の実行から checkpoint_timeout パラメータに指定された時間を過ぎたときに実行されます。
ただ、チェックポイント処理ですべての更新を一気に反映すると、一時的にディスク I/O への高負荷が発生してしまうので、チェックポイント処理とは別に少しずつディスクに反映させる writer プロセスが動作しています。
また、チェックポイント処理は CHECKPOINT コマンドで手動で実行することもできます。
ディスクに未反映の更新がメモリ上に存在しており、チェックポイント処理が実行されていない場合には、完了済み WAL ファイルとなっておらず、アーカイブ先のディレクトリに保管されません。従って、アーカイブ先のディレクトリに保管する前の WAL ファイルが消失した場合には、その WAL ファイル分の更新は復旧することができません。
参考URL:http://www.postgresql.jp/document/9.0/html/wal-c …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 政治 震度7もありえる場所に使用済み核燃料の中間貯蔵施設を作るそうですが、舐めてるのですか? 5 2023/08/07 12:43
- サーバー FTPサーバについて詳しい方(アクセス権のないディレクトリを非表示にする方法) 4 2022/08/22 22:33
- サーバー ファイルサーバのデータのバックアップ 1 2023/03/15 10:30
- Access(アクセス) ACSESS初心者です マンション管理をACCESSで出来ないかとチャレンジしています。 リレーショ 3 2022/10/08 11:45
- その他(OS) 素朴な疑問なのですが、教えてください。 1.サーバ(Windows系)のOSのバージョン更新というの 4 2022/11/21 16:56
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- WordPress(ワードプレス) WordPressの編集画面がいつもと違うのですがこれは何でしょう? 1 2023/03/29 10:26
- ガラケー・PHS 22年前のガラケーの譲渡について 1 2022/07/03 22:27
- Android(アンドロイド) いま3台のAndroidを使っています。 AndroidってiPhoneには無いmicroSDXCが 1 2022/05/06 11:42
- 大学受験 今日三者面談で、先生に出願したか聞かれました 僕の志望校がインターネット出願かつ 募集要項もインター 1 2023/07/20 11:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
AccessのOLEオブジェクト型につ...
-
PostgresのPITR
-
ヤフーショッピングでPayPay支...
-
ディスク上のサイズの乖離が大...
-
oracle spool SJIS → UTF-8
-
Windows版 pg_dumpの結果をログ...
-
SJISのDBは作れますか?
-
Windows上のPostgreSQLの完全削...
-
pg_restoreでエラー
-
ACCESSのフォームだけを起動す...
-
データベースの復元について
-
\\copyコマンドでのCSV取り込み...
-
Oracle / UNIX ファイルコマン...
-
DB2のbindコマンドの"+o""-o"オ...
-
長期間使っていると更新処理速...
-
エクセルVBAでcommit,rollback
-
バイナリデータ格納について
-
createdbでいきなりつまづいて...
-
アクセスで、OLEサーバーも...
-
リコーimagioneo630 エラーs...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PostgresのPITR
-
EXPORTファイルのINITIAL EXTEN...
-
AccessのOLEオブジェクト型につ...
-
so-02jお使いの方
-
ヤフーショッピングでPayPay支...
-
ディスク上のサイズの乖離が大...
-
oracle spool SJIS → UTF-8
-
Windows版 pg_dumpの結果をログ...
-
PostgreSQLについて教えてくだ...
-
Windows上のPostgreSQLの完全削...
-
createdbでいきなりつまづいて...
-
アクセスで、OLEサーバーも...
-
tar.gzファイルのリストアについて
-
ACCESSのフォームだけを起動す...
-
CSVファイルをBULK INSERTでSQL...
-
階層型データベースとVSAM...
-
ACCESS VBA;コマンドボックス...
-
shellからpostgresqlへの変数の...
-
ソケットの異常終了について
-
pg_restoreでエラー
おすすめ情報