PostgreSQLでリストアかけようとしたのですが、妙に時間がかかってました。
fsync
をoffにすると早くなると記事を見たので試してみました。(参考)
fsyncとは
公式ドキュメントによると、fsyncはこんな効果があるみたいです。
以下は公式ドキュメントの引用です。
このパラメータがオンの場合、PostgreSQLサーバはfsync()システム・コールを発行したり、もしくはこれに相当する方法で(wal_sync_methodを参照)更新が物理的にディスクに書き込まれたかの確証を得ようと試みます。 これは、オペレーティングシステムもしくはハードウェアがクラッシュした後、確実にデータベースクラスタを一貫した状態に復旧させることを保証します。
fsyncを停止することはしばしば性能上の利益になるとは言っても、予期せぬシステム停止やクラッシュの際に回復不可能なデータ破壊になることがあります。 従って外部データから全てのデータベースを簡単に再構築できる場合のみfsyncを停止してください。
つまり性能が遅くなるものの、データベースの復旧ができるようになるようです。
リストアの場合はクラッシュした場合も復旧が容易であるので、fsyncは切っておいてもかまわなさそうです。
fsyncを切る
というわけでfsyncを一旦切ってからリストアするようにしました。
postgresql.confファイルを探して'fsync=off'と書き換えて保存。
そこまでやったらいつも通りリストアします。2時間かかっても終わらなかったリストアが30分程度で終わるようになりました。
リストア終わったら'fsync=on'に戻して作業終了です。
設定ファイル切り替える手間を考えても一旦切ってからリストアしたほうが圧倒的に早いですね。