既知の正常な Home Assistant データベースバックアップは、まず何を復元したいのかを明確にしたときに最も役立ちます。Home Assistant のインストール全体をバックアップ時点の状態に戻す場合は、サポートされている Home Assistant の復元ワークフローを使用してください。設定が正常で、Recorder の履歴だけを復元する必要がある場合は、データベースのみを復元することで、新しいオートメーションやインテグレーションを上書きせずに済みます。
Home Assistant がデータベースに書き込み中の状態で、稼働中のデータベースを置き換えないでください。まず現在のデータベースを保持し、Home Assistant を停止するか、その他の方法で Recorder を停止状態にしてから、既知の正常なコピーを分離または管理されたパスに復元します。その後、起動して確認してから、どちらかのバージョンを削除してください。
Home Assistant 全体の復元とデータベースのみの復旧を選択する
Home Assistant の完全バックアップを復元すると、現在のアプリケーション状態がバックアップの内容に置き換えられます。設定、インテグレーション、アプリ、データベースをすべて同じ既知の時点に戻す必要がある場合に適しています。
現在の完全バックアップの復元アクションでは、現在の変更がバックアップの状態によって上書きされると明示的に警告されています。障害が Recorder の履歴だけである場合、この復元範囲は必要以上に広い可能性があります。
データベースのみを復旧する場合は、既知の正常な Recorder データベースのコピーを正確に特定し、現在の設定ツリーは変更せずに保持してください。バックアップのタイムスタンプを記録しておくと、その時点に戻すことでどれだけの履歴が失われるかを把握できます。
Home Assistant が実際に使用しているデータベースを確認する
Home Assistant はデフォルトで SQLite を使用し、通常は /config/home-assistant_v2.db に保存されます。ただし、Recorder は db_url を通じて MariaDB、MySQL、PostgreSQL を使用するように設定することもできます。実際には外部データベースに書き込んでいる環境へ、SQLite ファイルをコピーしないでください。
SQLite は Home Assistant Recorder のデフォルトデータベースで、通常は /config/home-assistant_v2.db に保存されます。Recorder は db_url を通じて、サポートされている外部データベースを使用するようにも設定できます。ファイルを操作する前に、実効的な Recorder 設定を確認し、復旧用アセットが Home Assistant の実際の使用データベースと一致していることを確認してください。
データベースが外部にある場合は、データベースエンジン固有のバックアップ方法で復元し、アプリケーションのバージョンとスキーマを調整してください。SQL ダンプと SQLite ファイルを、相互に置き換え可能な復旧用アセットとして扱わないでください。
SQLite データベースファイルを置き換える前に書き込みを停止する
既知の正常なバックアップが home-assistant_v2.db のクリーンな物理コピーである場合は、ライブファイルを置き換える前に Home Assistant を停止してください。現在のデータベースは削除せず、別の名前で保持します。
SQLite のバックアップに関するガイダンスでは、データベースのコピーは一貫性のあるスナップショットを表す必要があると説明されています。SQLite オンラインバックアップ API は、データベースが稼働中でも一貫性のあるコピーを作成するために用意されています。停止中に取得した既知の正常なコピー、またはデータベースを認識したオンラインバックアップのほうが、書き込み中に任意のファイルコピーを取得するより安全です。
また、障害が発生したデータベースのサイドカー WAL やジャーナルの状態が、復元したコピーと混在していないことを確認してください。異なるタイムスタンプのファイルを組み合わせたハイブリッドではなく、完全な既知の正常な復旧用アセットから開始します。
バックアップコピーをそのまま使い、Home Assistant に検証させる
復元したデータベースを正しい所有者と権限で想定パスに配置し、Home Assistant を起動して Recorder のログを監視します。最初の検証起動中は、パージ、再パック、手動 SQL メンテナンスを実行しないでください。
データベーススキーマが現在の Home Assistant バージョンより古い場合、Recorder による移行が必要になることがあります。パフォーマンスを判断したり、再起動したりする前に、その処理が完了するまで待ってください。同じ復元データベースに対して古いバージョンと新しいバージョンの Home Assistant を何度も切り替えて使用することは避けてください。スキーマ移行は、一般的なダウングレードの仕組みではありません。
実践的な復旧手順でも、同じ管理された原則が示されています。コピー上で作業し、置き換え用データベースの準備が完了してから Home Assistant を起動します。
失敗したデータベースを削除する前に履歴を検証する
- Recorder が破損エラーや移行エラーなしで起動することを確認します。
- バックアップに存在するはずの期間を指定して、履歴とログブックを開きます。
- 該当する場合は、長期統計またはエネルギーデータを確認します。
- 新しい状態変化を発生させ、復元時点以降の新しい履歴が書き込まれることを確認します。
- Home Assistant を一度再起動し、Recorder が再び同じデータベースを開くことを確認します。
ZimaSpace のデータベースと整合性のあるバックアップおよび復元テストに関するガイドが、そのまま当てはまります。バックアップが信頼できるものになるのは、データベースがそれを受け入れ、復元後にアプリケーションが新しい状態を書き込めることを確認できたときだけです。
この受け入れテストに合格するまで、失敗したデータベースを保持してください。既知の正常なバックアップが想定より古い場合、失敗したデータベースには、調査または選択的な復旧が可能な新しい履歴が残っていることがあります。
よくある質問
オートメーションをロールバックせずに、Home Assistant の履歴だけを復元できますか?
既知の正常な Recorder データベースのコピーがあり、現在の Home Assistant 設定が正常であれば可能です。書き込みを停止し、現在のデータベースを保持したうえで、Recorder データベースだけを復元し、削除や整理を行う前に検証してください。
かなり古い Home Assistant バージョンで取得したデータベースバックアップを復元すべきですか?
慎重に行う必要があります。新しい Home Assistant が古い Recorder スキーマを前方移行できる場合はありますが、1つのデータベースに対してバージョンをダウングレードしたり、バージョンを何度も切り替えたりするのは危険です。バックアップを保持し、互換性のある復旧経路を使用してください。
サポートとヒント
もっと読む

Home Assistantのデータベースにメンテナンスまたは交換が必要な兆候
大容量のHome Assistantデータベースでは通常、保存期間の管理やパージ作業が必要です。繰り返し発生する破損や整合性エラーは、交換を検討すべき強い兆候です。

Home Assistantは動作が遅くなる前に、同時に何人のユーザーに対応できますか?
Home Assistantには、実用上の固定されたユーザー数上限はありません。実際のダッシュボードとエンティティの更新を使ってアクティブなクライアントをベンチマークし、再現性のある遅延が発生する前に止めてください。

Home Assistantはアップグレードで問題を起こさずに外部データベースを利用できますか?
外部のRecorderデータベースはアップグレード後も維持できますが、可用性、スキーマ移行、バックアップ、復元、バージョン管理に関する独自の責任が生じます。

