バックアップおよび復元
Red Hat build of MicroShift データベースのバックアップと復元
概要
第1章 MicroShift データのバックアップと復元 リンクのコピーリンクがクリップボードにコピーされました!
サポート対象のすべてのシステムで、MicroShift データベースを手動でバックアップおよび復元できます。greenboot ヘルスチェックを完了する必要があります。バックアップの前に MicroShift サービスを停止する必要があります。
次の手順では、MicroShift データのみがバックアップされます。アプリケーションデータは付属しません。
-
rpm-ostreeシステムでは、MicroShift は起動するたびに自動的にバックアップを作成します。これらの自動バックアップは、システムが再起動されるたびに削除され、最新のバックアップに置き換えられます。 -
rpm-ostreeシステムを使用している場合は、greenboot がシステムをロールバックした後にデータが自動的に復元されます。このデータ復元により、ロールバックが完了した後のデータベースは、ホスト上で実行されているソフトウェアと必ず一致します。 - 他のタイプのシステムでは、手動でデータをバックアップおよび復元する必要があります。
1.1. MicroShift サービスの停止 リンクのコピーリンクがクリップボードにコピーされました!
次の手順を使用して、MicroShift サービスを停止します。
前提条件
- MicroShift サービスが実行されている。
手順
次のコマンドを入力して、MicroShift サービスを停止します。
sudo systemctl stop microshift
$ sudo systemctl stop microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow MicroShift にデプロイされたワークロードは、MicroShift サービスが停止した後も引き続き実行されます。次のコマンドを入力して、実行中のワークロードを表示します。
sudo crictl ps -a
$ sudo crictl ps -aCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、デプロイされたワークロードを停止します。
sudo systemctl stop kubepods.slice
$ sudo systemctl stop kubepods.sliceCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.2. MicroShift データを手動でバックアップする リンクのコピーリンクがクリップボードにコピーされました!
MicroShift データは、いつでも手動でバックアップできます。システムを更新する前にデータをバックアップし、更新が失敗した場合やその他のシステムトラブルに備えてデータを保存してください。自動バックアップは、/var/lib/microshift-backups ディレクトリーに作成されます。このディレクトリーを各コマンドで指定すると、手動でデータをバックアップおよび復元するために使用できます。バックアップを作成する際は、出力ファイルのファイルパス全体を使用する必要があります。
前提条件
- ホストへの root アクセス権限がある。
- MicroShift が停止している。
手順
次のコマンドを実行して、親ディレクトリーを使用し、
/var/lib/microshift-backups/<my_manual_backup>などの名前を指定してバックアップを手動で作成します。sudo microshift backup /var/lib/microshift-backups/<my_manual_backup>
$ sudo microshift backup /var/lib/microshift-backups/<my_manual_backup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <my_manual_backup>を、使用するバックアップ名に置き換えます。出力例
??? I1017 07:38:16.770506 5900 data_manager.go:92] "Copying data to backup directory" storage="/var/lib/microshift-backups" name="test" data="/var/lib/microshift" ??? I1017 07:38:16.770713 5900 data_manager.go:227] "Starting copy" cmd="/bin/cp --verbose --recursive --preserve --reflink=auto /var/lib/microshift /var/lib/microshift-backups/test" ??? I1017 07:38:16.776162 5900 data_manager.go:241] "Finished copy" cmd="/bin/cp --verbose --recursive --preserve --reflink=auto /var/lib/microshift /var/lib/microshift-backups/test" ??? I1017 07:38:16.776256 5900 data_manager.go:125] "Copied data to backup directory" backup="/var/lib/microshift-backups/test" data="/var/lib/microshift"
??? I1017 07:38:16.770506 5900 data_manager.go:92] "Copying data to backup directory" storage="/var/lib/microshift-backups" name="test" data="/var/lib/microshift" ??? I1017 07:38:16.770713 5900 data_manager.go:227] "Starting copy" cmd="/bin/cp --verbose --recursive --preserve --reflink=auto /var/lib/microshift /var/lib/microshift-backups/test" ??? I1017 07:38:16.776162 5900 data_manager.go:241] "Finished copy" cmd="/bin/cp --verbose --recursive --preserve --reflink=auto /var/lib/microshift /var/lib/microshift-backups/test" ??? I1017 07:38:16.776256 5900 data_manager.go:125] "Copied data to backup directory" backup="/var/lib/microshift-backups/test" data="/var/lib/microshift"Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: 次のコマンドを実行し、カスタム名を使用して特定の親ディレクトリーにバックアップを手動で作成します。
sudo microshift backup /mnt/<other_backups_location>/<another_manual_backup>
$ sudo microshift backup /mnt/<other_backups_location>/<another_manual_backup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <other_backups_location>を使用するディレクトリーに置き換え、<my_manual_backup>を使用するバックアップ名に置き換えます。
検証
-
選択したディレクトリー内のデータを表示して、バックアップが存在することを確認できます。たとえば、
/var/lib/microshift-backups/<my_manual_backup>/または/mnt/<other_backups_location>/<another_manual_backup>などです。
1.3. MicroShift データのバックアップを手動で復元する リンクのコピーリンクがクリップボードにコピーされました!
MicroShift データをバックアップから手動で復元できます。更新後や、必要なデータを削除または損傷する他のシステムイベント後にバックアップを復元できます。自動バックアップは、デフォルトで /var/lib/microshift-backups ディレクトリーにあります。このディレクトリーを各コマンドで指定すると、手動でデータをバックアップおよび復元するために使用できます。バックアップを復元する場合は、ファイルパス全体を使用する必要があります。
rpm-ostree システムの場合、MicroShift はデータを自動的にバックアップおよび復元します。
前提条件
- ホストへの root アクセス。
- データのバックアップファイルに対する完全パス。
- MicroShift サービスを停止している。
手順
次のコマンドを実行して、復元するバックアップの完全なファイルパスを使用して MicroShift データを手動で復元します。
sudo microshift restore /var/lib/microshift-backups/<my_manual_backup>
$ sudo microshift restore /var/lib/microshift-backups/<my_manual_backup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <my_manual_backup>を、使用したバックアップ名に置き換えます。オプション: 完全なファイルパスを使用して、自動ostreeバックアップを復元することもできます。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: バックアップの完全なファイルパスを使用して、カスタマイズされたディレクトリーからデータを手動で復元します。以下のコマンドを実行します。
sudo microshift restore /<mnt>/<other_backups_location>/<another_manual_backup>
$ sudo microshift restore /<mnt>/<other_backups_location>/<another_manual_backup>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <other_backups_location>を使用したディレクトリーに置き換え、<my_manual_backup>を復元するバックアップを作成する際に使用したバックアップ名に置き換えます。- ホストを再起動します。ホストを再起動すると、すべてのワークロードと Pod が再起動できるようになります。
検証
oc get pods -Aコマンドを使用してノードが実行中であることを確認してから、復元されたデータを確認します。oc get pods -A
$ oc get pods -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この出力例は、基本的な MicroShift インストールを示しています。オプションの RPM をインストールした場合、それらのサービスを実行している Pod のステータスも出力で予想されます。
第2章 手動バックアップからの自動リカバリー リンクのコピーリンクがクリップボードにコピーされました!
自動リカバリーを設定すると、MicroShift の起動に失敗した場合、手動バックアップからデータを自動的に復元できます。
2.1. バックアップおよび復元コマンドを変更してデータ復旧を自動化する リンクのコピーリンクがクリップボードにコピーされました!
自動リカバリーオプションを使用して、すべてのバックアップを 1 つのディレクトリーに保存し、復元する最新のバックアップを自動的に選択します。既存の backup および restore コマンドを変更すると、自動リカバリーを設定できます。
--auto-recovery オプションは、PATH 引数を、特定のバックアップファイルへのパスとしてではなく、自動リカバリーのすべてのバックアップを保持するディレクトリーへのパスとして扱います。--auto-recovery オプションは、backup と restore コマンドの両方で使用できます。
-
たとえば、
microshift restore --auto-recovery PATHなど、restoreで自動リカバリーオプションを使用する場合は、変更されたコマンドを実行すると、最新のバックアップが自動的に選択および復元されます。 -
microshift backup --auto-recovery PATHなど、microshift backupコマンドで同じオプションを使用すると、新しいバックアップが PATH に作成されます。 -
デフォルトでは、
microshift restore --auto-recovery PATHは、失敗した MicroShift データをPATH/failedに作成します。失敗したバックアップデータの作成を無効にする場合は、--dont-save-failedオプションを追加できます。
restore コマンドでは、--dont-save-failed オプションのみを使用できます。
2.2. 自動回復機能を使用したバックアップの作成 リンクのコピーリンクがクリップボードにコピーされました!
自動リカバリーオプションを使用してバックアップを作成するには、次の手順を実行します。
バックアップを作成するには、MicroShift を停止する必要があります。MicroShift を停止するために最適な時間を決定する必要があります。
前提条件
- MicroShift を停止した。
手順
次のコマンドを実行して、バックアップを作成して選択したディレクトリーに保存します。
sudo microshift backup --auto-recovery <path_of_directory>
$ sudo microshift backup --auto-recovery <path_of_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<path_of_directory>を、バックアップを保存するディレクトリーのパスに置き換えます。たとえば、/var/lib/microshift-auto-recoveryです。
注記--auto-recoveryオプションは、PATH引数の解釈を、最終バックアップパスから、自動リカバリーの全バックアップを格納するディレクトリーに変更します。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、作成したバックアップがカスタマイズされたストレージディレクトリーに存在することを確認します。
sudo ls -la <path_of_directory>
$ sudo ls -la <path_of_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<path_of_directory>を、バックアップを保存するディレクトリーのパスに置き換えます。たとえば、/var/lib/microshift-auto-recoveryです。
2.3. 自動回復機能を使用したバックアップの復元 リンクのコピーリンクがクリップボードにコピーされました!
必要なデータが削除または破損するシステムイベントが発生した後でも、バックアップを復元できます。自動リカバリーを使用してバックアップを復元するには、次の手順を実行します。自動リカバリーは最新のバックアップを選択して復元します。これまでに自動リカバリーを使用して復元されたバックアップは、PATH/restored ディレクトリーに移動されます。
前提条件
- MicroShift を停止している。
手順
次のコマンドを実行して、バックアップディレクトリーから最新のバックアップを復元します。
sudo microshift restore --auto-recovery <path_of_directory>
$ sudo microshift restore --auto-recovery <path_of_directory>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
<path_of_directory>を、バックアップを保存するディレクトリーのパスに置き換えます。たとえば、/var/lib/microshift-auto-recoveryです。
注記-
--auto-recoveryオプションは、後で調査できるように MicroShift データを/var/lib/microshift-auto-recovery/failed/にコピーし、最新のバックアップを選択して復元します。 -
--dont-save-failedオプションは、失敗した MicroShift データのバックアップを無効にします。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要-
restoreコマンドは復元後に MicroShift を再起動しません。このコマンドを実行した時点で、MicroShift サービスはすでに障害で停止しているか、ユーザーによって停止されています。 - MicroShift は、どのファイルシステムのディスク領域も監視しません。自動化によって古いバックアップの削除が処理されるようにする必要があります。たとえば、このプロセスを auto-recovery サービスに追加したり、定期的に実行する別のサービスを追加したりできます。
次のコマンドを実行して MicroShift を再起動します。
sudo systemctl restart microshift
$ sudo systemctl restart microshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを実行して、MicroShift が正常に開始されたことを確認します。
oc get pods -A
$ oc get pods -ACopy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記この出力例は、基本的な MicroShift インストールを示しています。オプションの RPM をインストールした場合、それらのサービスを実行している Pod のステータスも出力で予想されます。
2.3.1. RPM システムでの自動リカバリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
MicroShift が failed 状態になると、systemd サービスは microshift-auto-recovery.service ユニットを開始します。このユニットは auto-recovery の復元プロセスを実行します。
ユースケースとして、systemd サービスを使用する RPM システムの自動リカバリープロセスを自動化する次の例を考えてみましょう。
手順
次のコマンドを実行して、
microshiftのディレクトリーを作成します。sudo mkdir -p /usr/lib/systemd/system/microshift.service.d
$ sudo mkdir -p /usr/lib/systemd/system/microshift.service.dCopy to Clipboard Copied! Toggle word wrap Toggle overflow microshift.serviceが失敗したときにsystemdにmicroshift-auto-recovery.serviceを実行するように指示するには、次のコマンドを実行して10-auto-recovery.confファイルを作成します。sudo tee /usr/lib/systemd/system/microshift.service.d/10-auto-recovery.conf > /dev/null <<'EOF' [Unit] OnFailure=microshift-auto-recovery.service StartLimitIntervalSec=25s EOF
$ sudo tee /usr/lib/systemd/system/microshift.service.d/10-auto-recovery.conf > /dev/null <<'EOF' [Unit] OnFailure=microshift-auto-recovery.service StartLimitIntervalSec=25s1 EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 低速なシステムの場合は、
StartLimitInterval値をデフォルトの10sからより大きな値に増やします。値が低すぎると、systemd がmicroshiftsystemd サービスを失敗としてマークしなくなり、OnFailure=サービスがトリガーされなくなります。
次のコマンドを実行して、
microshift-auto-recovery.serviceファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
microshift-auto-recoveryスクリプトを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してスクリプトを実行可能にします。
sudo chmod +x /usr/bin/microshift-auto-recovery
$ sudo chmod +x /usr/bin/microshift-auto-recoveryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行してシステム設定を再ロードします。
sudo systemctl daemon-reload
$ sudo systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3.2. RHEL for Edge での自動リカバリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
ユースケースとして、ブループリントファイルで systemd を使用する Red Hat Enterprise Linux for Edge (RHEL for Edge) システムの auto-recovery プロセスを自動化する次の例を検討してください。
systemd を使用する RHEL for Edge システムの auto-recovery プロセス全体をブループリントファイルに含める必要があります。
前提条件
- Podman がインストールされている。
-
コマンドラインの
composer-cliツールがインストールされている。
手順
-
オプション:
composer-cliは/etcディレクトリーにのみファイルを作成できるため、ブループリントが含まれる RPM にファイルをパッケージ化します。 ブループリントファイルを作成するには、次の例を使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次の手順は、イメージのビルドの準備 を参照してください。
2.3.3. Image Mode for RHEL での自動リカバリーの使用 リンクのコピーリンクがクリップボードにコピーされました!
Image Mode for RHEL はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
ユースケースとして、systemd サービスを使用する image mode for Red Hat Enterprise Linux (RHEL) システムの auto-recovery プロセスを自動化する次の例を検討してください。
コンテナーファイルで systemd を使用する image mode for RHEL の auto-recovery プロセス全体を含める必要があります。
前提条件
- bootc イメージの構築 の手順に従って、Containerfile を作成している。
「RPM システムでの auto-recovery の使用」セクションで説明されているように
10-auto-recovery.confファイルとmicroshift-auto-recovery.serviceファイルを作成した。重要10-auto-recovery.confおよびmicroshift-auto-recovery.serviceの場所は、Containerfile を起点にする必要があります。たとえば、Containerfile へのパスが
/home/microshift/my-build/Containerfileの場合、適切に埋め込むには systemd ファイルが隣接している必要があります。この例では、正しいパスは以下のとおりです。-
/home/microshift/my-build/auto-rec/10-auto-recovery.conf -
/home/microshift/my-build/auto-rec/microshift-auto-recovery.service -
/home/microshift/my-build/auto-rec/microshift-auto-recovery
-
-
「RPM システムでの auto-recovery の使用」セクションで説明されているように
microshift-auto-recoveryスクリプトを作成した。
手順
以下のスニペット例を使用して、image mode for RHEL イメージを準備するために使用するコンテナーファイルを更新します。
RUN mkdir -p /usr/lib/systemd/system/microshift.service.d COPY ./auto-rec/10-auto-recovery.conf /usr/lib/systemd/system/microshift.service.d/10-auto-recovery.conf COPY ./auto-rec/microshift-auto-recovery.service /usr/lib/systemd/system/ COPY ./auto-rec/microshift-auto-recovery /usr/bin/ RUN chmod +x /usr/bin/microshift-auto-recovery
RUN mkdir -p /usr/lib/systemd/system/microshift.service.d COPY ./auto-rec/10-auto-recovery.conf /usr/lib/systemd/system/microshift.service.d/10-auto-recovery.conf COPY ./auto-rec/microshift-auto-recovery.service /usr/lib/systemd/system/ COPY ./auto-rec/microshift-auto-recovery /usr/bin/ RUN chmod +x /usr/bin/microshift-auto-recoveryCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Podman は、コンテナーイメージをビルドするときに、コンテナー内のホストのサブスクリプション情報とリポジトリーを使用します。
rhocpおよびfast-datapathリポジトリーがホスト上で利用できないと、ビルドは失敗します。次のイメージビルドコマンドを実行して、ローカル bootc イメージを再構築します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記シークレットは、イメージのビルド中に次のように使用されます。
-
registry.redhat.ioレジストリーからベースrhel-bootc:9.4イメージをプルするには、podman--authfile引数が必要です。 -
ビルド
USER_PASSWD引数は、redhatユーザーのパスワードを設定するために使用されます。
-
検証
次のコマンドを実行して、ローカル bootc イメージが作成されたことを確認します。
sudo podman images "${IMAGE_NAME}"$ sudo podman images "${IMAGE_NAME}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/microshift-4.18-bootc latest 193425283c00 2 minutes ago 2.31 GB
REPOSITORY TAG IMAGE ID CREATED SIZE localhost/microshift-4.18-bootc latest 193425283c00 2 minutes ago 2.31 GBCopy to Clipboard Copied! Toggle word wrap Toggle overflow