PostgreSQL で参照(リードオンリー)モード

スポンサーリンク

5261389796_bcb6270ff0_z

本番稼働中のDBで、一時的に参照のみ可能としたいことがたまにある。
Oracleでは読み取り専用モードなるものが存在して、表領域やテーブル単位で読み取り専用にすることが可能であるが、PostgreSQLの場合は?
select以外の権限を剥奪する?いやいや面倒くさいです(笑)

調べてみたが意外とこの情報が見つからない。
無停止のシステムで新DBに移行を行う時など、旧DBを参照のみさせたい場合など必要な場面は多々あると思うが、世の中のDBAの方々は実際の運用ではどのように対応しているのだろうか?

結論から言えば、ポスグレの場合は、インスタンス、DB、ユーザ単位で参照モードに設定することが可能だ。
また設定の変更は再起動無しで動的に可能である。

インスタンスの場合

postgresql.confの default_transaction_read_only をoffにしてpg_ctl でreloadする。

DB指定の場合

alter database データベース名 set default_transaction_read_only = on;

ユーザ指定の場合

alter user ユーザ名 set default_transaction_read_only = on;

いずれも即時に設定が反映される。
戻す場合は、onをoffにして実行すれば戻る。

注意点としては、設定変更時に既に接続が確立しているセッションは、その接続は変更が有効にならず、接続し直す必要がある。?

photo by Brittany H.

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする