备份和恢复
第 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命令来验证集群是否正在运行,然后检查恢复的数据。
第 2 章 从手动备份中自动恢复 复制链接链接已复制到粘贴板!
当 MicroShift 无法使用 auto-recovery 功能启动时,您可以从手动备份中自动恢复数据。
您可以在此功能中的现有 使用以下选项:
备份和恢复 命令中
-
--auto-recovery:选择备份的最新版本,然后恢复它。这个选项将PATH参数视为一个路径,该路径包含自动恢复的所有备份,而不只是作为特定备份文件的路径。 -
--dont-save-failed: 禁用失败的 MicroShift 数据的备份。
-
您可以将
--auto-recovery选项与backup和restore命令一起使用。 -
您只能在
restore命令中使用the-dont-save-failed选项。
2.1. 使用自动恢复功能创建备份 复制链接链接已复制到粘贴板!
使用以下步骤创建备份。
创建备份需要停止 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
验证
要验证备份是否已创建,请运行以下命令来查看您选择存储备份的目录:
ls -la <path_of_directory>
$ 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.2. 使用自动恢复功能恢复备份 复制链接链接已复制到粘贴板!
您可以在删除或损坏所需数据的系统事件后恢复备份。
使用以下步骤恢复备份。
先决条件
- 您已停止了 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/failed/ 以供稍后的调查,选择最新的备份并恢复它。--dont-save-failed选项禁用对失败的 MicroShift 数据的备份。输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-
恢复后,
restore命令不会启动 MicroShift。执行此命令时,MicroShift 服务已经失败,或者需要停止它。 - MicroShift 不监控任何文件系统的磁盘空间。您需要确保自动化处理旧的备份被删除。
验证
- 验证 MicroShift 是否已成功启动。
2.3. 使用 RPM 系统的 systemd 自动化集成过程 复制链接链接已复制到粘贴板!
当 microshift.service 进入失败状态时,systemd 将启动 microshift-auto-recovery.service 单元。这个单元执行 自动恢复恢复过程 并重启 MicroShift。
作为用例,请考虑以下示例情况,其中您要为使用 systemd 的 RPM 系统自动化自动 恢复过程。
流程
运行以下命令,为
microshift.service创建目录: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 EOF
$ sudo tee /usr/lib/systemd/system/microshift.service.d/10-auto-recovery.conf > /dev/null <<'EOF' [Unit] OnFailure=microshift-auto-recovery.service EOFCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来创建
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.4. 使用 OSTree 系统的 systemd 自动化集成过程 复制链接链接已复制到粘贴板!
您必须包含蓝图文件中使用 systemd 的 OSTree 系统的整个 自动恢复过程。
作为用例,请考虑以下示例情况,其中您要为使用 systemd 的 OSTree 系统自动化自动 恢复过程。
流程
使用以下示例创建蓝图文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 有关后续步骤,请参阅准备镜像构建。
2.5. 使用 systemd 为 bootc 系统自动化集成过程 复制链接链接已复制到粘贴板!
您必须包含在容器文件中使用 systemd 的 bootc 系统的完整自动 恢复过程。
作为用例,请考虑以下示例情况,其中您要为使用 systemd 的 bootc 系统自动化自动 恢复过程。
先决条件
-
您已创建了
10-auto-recovery.conf和microshift-auto-recovery.service文件,如 "Automating the integration process with systemd for RPM system" 部分所述。 -
您已创建了
microshift-auto-recovery脚本,如 "Automating the integration process with systemd for RPM system" 部分所述。
流程
使用以下示例更新您用来准备 bootc 镜像的 Containerfile。
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 && systemctl daemon-reload
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 && systemctl daemon-reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow