3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

PostgreSQLでリストアの時間がかかるときに見るべきところ

Posted at

PostgreSQLでリストアかけようとしたのですが、妙に時間がかかってました。
fsyncをoffにすると早くなると記事を見たので試してみました。(参考)

fsyncとは

公式ドキュメントによると、fsyncはこんな効果があるみたいです。
以下は公式ドキュメントの引用です。

このパラメータがオンの場合、PostgreSQLサーバはfsync()システム・コールを発行したり、もしくはこれに相当する方法で(wal_sync_methodを参照)更新が物理的にディスクに書き込まれたかの確証を得ようと試みます。 これは、オペレーティングシステムもしくはハードウェアがクラッシュした後、確実にデータベースクラスタを一貫した状態に復旧させることを保証します。
fsyncを停止することはしばしば性能上の利益になるとは言っても、予期せぬシステム停止やクラッシュの際に回復不可能なデータ破壊になることがあります。 従って外部データから全てのデータベースを簡単に再構築できる場合のみfsyncを停止してください。

つまり性能が遅くなるものの、データベースの復旧ができるようになるようです。
リストアの場合はクラッシュした場合も復旧が容易であるので、fsyncは切っておいてもかまわなさそうです。

fsyncを切る

というわけでfsyncを一旦切ってからリストアするようにしました。
postgresql.confファイルを探して'fsync=off'と書き換えて保存。
そこまでやったらいつも通りリストアします。2時間かかっても終わらなかったリストアが30分程度で終わるようになりました。
リストア終わったら'fsync=on'に戻して作業終了です。

設定ファイル切り替える手間を考えても一旦切ってからリストアしたほうが圧倒的に早いですね。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?