Vagrant+VirtualBoxな仮想マシン上で動くPostgreSQLのデータファイル類を訳あってsynced_folderでホストOS側と共有した状態でUPDATE文を大量に発行したらこんなエラーが出た。
Vagrantfile
:
config.vm.synced_folder "./pgsql/data", "/var/lib/pgsql/data", owner: "postgres", group: "postgres", mount_options: ["dmode=700", "fmode=600"]
:
[Native message: PANIC: ファイル"pg_xlog/00000001000000030000009C"(ログファイル3、セグメント156)をオープンできませんでした: そのようなファイルやディレクトリはありません
PANIC: ファイル"pg_xlog/00000001000000030000009C"(ログファイル3、セグメント156)をオープンできませんでした: そのようなファイルやディレクトリはありません]
再起動してもPostgreSQLは同じエラーで起動しなくて検索しても答えが出なかったんだけど恐らくsynced_folderが遅いのが原因。
PostgreSQLはWALファイルにロギングしていくけどデフォルトのサイズが16MBもある。
このサイズのファイルを作成し終わる時間を追い越してトランザクションログを書き込もうとして上記のエラーになっているのと、カレントのWALファイルを指すポインタが先に進んでしまっているけど実態がないために再起動してもエラーとなるようだ。
synced_folderやめたら起きなかった。