PostgreSQl 9.1 では、マスターのデータに対する UPDATE および DELETE によって生成される WAL レコードをストリーミングすることによって、ストリーミング レプリケーションが行われます。
DDL の変更はどのようにレプリケートされますか? これらは WAL の一部ではありません。
PostgreSQl 9.1 では、マスターのデータに対する UPDATE および DELETE によって生成される WAL レコードをストリーミングすることによって、ストリーミング レプリケーションが行われます。
DDL の変更はどのようにレプリケートされますか? これらは WAL の一部ではありません。
Postgresql の Write Ahead Log (WAL)にはDDL が含まれています。Postgresql では、DDL は DML と同様にトランザクションです。すべてがWALを通過します。
http://wiki.postgresql.org/wiki/Transactional_DDL_in_PostgreSQL:_A_Competitive_Analysisを参照してください。
Colin の回答を詳しく説明すると、ほとんどすべてが先行書き込みログを通過します。これは、任意のデータベース構造に対して行われるすべての書き込みを記録するブロック レベルのジャーナルです。データ ディレクトリの任意の部分に対するすべての変更は、最初に WAL に記録されます。これは、WAL の主な目的が、システムがクラッシュしたり電源が失われた場合に変更を再生できるようにすることであるため、計画されたすべてのディスク書き込みを記録する必要があるためです。
PostgreSQL では、テーブル、ビューなどはシステム カタログ テーブルの単なるエントリです。これらのカタログへの変更は、他のすべてと一緒に先行書き込みログに記録されます。同じことがデータベースの作成にも当てはまります。pg_database
db は、対応するディレクトリ構造の単なるエントリです。
VACUUM
、CLUSTER
、TRUNCATE
などによって行われたテーブルへの変更。それらはすべて、ブロックレベルの変更レコードまたは操作を説明する特別な WAL エントリを使用して、WAL を通過します。
次のように、いくつかの非永続的なものだけが WAL を通過しません。
UNLOGGED
およびTEMPORARY
テーブルへの変更