0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

H2 データベースのバックアップ時にデータベースは停止すべきか?

Posted at

【結論】
H2 データベースのバックアップ時には基本的に停止しておくことが推奨されます。ただし、H2 にはオンラインバックアップの方法も用意されています。


  1. 推奨:データベースを停止してバックアップ
    最も安全な方法は、H2 データベースを停止した状態で .mv.db ファイルをコピーすることです。

【手順】

  1. アプリケーションを停止する
  2. .mv.db ファイルをコピー
  3. アプリケーションを再起動
cp mydb.mv.db mydb_backup.mv.db

【メリット】

  • データの一貫性が保証される
  • 破損のリスクが低い

【デメリット】

  • 一時的にシステムを停止する必要がある

  1. オンラインバックアップ(データベースを動作させたまま)
    データベースを停止せずにバックアップを取得する場合、H2 の BACKUP TO コマンドを使用するのが最も安全な方法です。

【手順】

BACKUP TO 'backup.zip';

【メリット】

  • データベースを停止しなくてもバックアップ可能
  • 破損のリスクが低い

【デメリット】

  • 一部のトランザクションが未確定の状態で保存される可能性

  1. スクリプトを利用したバックアップ
    データベース全体を SQL スクリプトとしてエクスポートする方法もあります。

【手順】

java -cp h2*.jar org.h2.tools.Script -url jdbc:h2:file:./mydb -script backup.sql

【メリット】

  • データベースを停止しなくても取得可能
  • テキスト形式のバックアップなので、手動で修正しやすい

【デメリット】

  • 大規模なデータベースでは時間がかかる
  • インデックス情報などは再構築が必要になる

  1. 結論
    | バックアップ方法 | データベース停止 | メリット | デメリット |
    |----------------|--------------|-----------|------------|
    | ファイルコピー | 必要 | 簡単・確実 | 一時的にDBを停止する必要あり |
    | BACKUP TO コマンド | 不要 | DB を動かしたままバックアップ可能 | 一部のデータが未確定の状態で保存される可能性 |
    | Script コマンド | 不要 | テキスト形式で復元しやすい | 大規模なデータベースでは時間がかかる |
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?