論理レプリケーションの使い方
表ごとに、変更を別のサーバーへ写す
書き方
ALTER SYSTEM SET wal_level = logical;(再起動が要る) CREATE PUBLICATION 名前 FOR TABLE 表; CREATE SUBSCRIPTION 名前 CONNECTION 'host=… dbname=… user=… password=…' PUBLICATION 名前;(受け取る側) ALTER SUBSCRIPTION 名前 REFRESH PUBLICATION; SELECT * FROM pg_stat_subscription;
発行する側で PUBLICATION を作り、受け取る側で SUBSCRIPTION を作ると、まず表の中身を写し、そのあとは INSERT・UPDATE・DELETE を行ごとに送ります。受け取る側には同じ名前の表を先に作っておきます(定義は写りません)。UPDATE・DELETE を送るには主キー(REPLICA IDENTITY)が要ります。受け取る側で行がぶつかると、エラーで止まり、ログに出ます。
例
CREATE PUBLICATION shop_pub FOR TABLE orders; \! psql -p 5434 -c "SELECT subname, received_lsn FROM pg_stat_subscription"
実際に打って練習する
PostgreSQL DBA コースの Lv61「論理レプリケーション」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。
すべてのレベルが、プラチナ以上のプランで遊べます。