备份和还原
定期备份您的 SUSE Manager 安装以防数据丢失。由于 SUSE Manager 依赖于某个数据库以及已安装的程序和配置,因此备份所有安装组件非常重要。本章包含有关需要备份的文件的信息,并介绍如何使用 smdba
工具来管理数据库备份。其中还包含有关在发生系统故障时如何从备份中还原的信息。
无论您使用哪种备份方法,可用空间必须是当前安装使用的空间量的至少三倍。空间不足可能导致备份失败,因此请经常检查可用空间。 |
以下小节介绍如何在 SUSE Manager 容器内备份数据。
1. 备份 SUSE Manager
备份 SUSE Manager 安装的最完整方法是备份相关文件和目录。这可以节省备份管理时间,并且在发生故障时可以更快地重新安装和重新同步。但是,这种方法需要大量磁盘空间,并且可能需要很长时间才能完成备份。
如果您只想备份所需的文件和目录,请使用以下列表。为使此过程更简单、更完整,我们建议在容器内备份整个 |
-
/etc/cobbler/
-
/etc/dhcp.conf
-
/etc/fstab
和所需的任何 ISO 挂载点。如果您的 UUID 已更改,请确保已相应地更新
fstab
项。 -
/etc/rhn/
-
/etc/salt
-
/etc/sudoers
-
/etc/sysconfig/rhn/
-
/root/.gnupg/
-
/root/.ssh
如果您使用 SSH 隧道或 SSH
push
,则此文件存在。此外,必须已保存id-susemanager
键的副本。 -
/root/ssl-build/
-
/srv/formula_metadata
-
/srv/pillar
-
/srv/salt
-
/srv/susemanager
-
/srv/tftpboot/
-
/srv/www/cobbler
-
/srv/www/htdocs/pub/
-
/srv/www/os-images
-
/var/cache/rhn
-
/var/cache/salt
-
/var/lib/cobbler/
-
/var/lib/cobbler/templates/
(在 4.0 版之前为/var/lib/rhn/kickstarts/
) -
/var/lib/Kiwi
-
/var/lib/rhn/
-
/var/run/pgsql/
-
/var/lib/salt/
-
/var/run/salt/
-
/var/spacewalk/
-
包含自定义数据(例如脚本、Kickstart 或 AutoYaST 配置文件和自定义 RPM)的任何目录。
还需要备份您的数据库,此操作可以使用 |
-
在容器主机上,以 root 身份运行
mgradm install podman
重新部署 SUSE Manager 服务器。 -
使用 SUSE Manager Web UI 或在容器中的命令提示符处使用
mgr-sync
工具重新同步您的 SUSE Manager 储存库。您可以选择重新注册产品,或跳过注册和 SSL 证书生成部分。 -
在容器中,重新安装
/var/lib/containers/storage/volumes/root/ssl-build/rhn-org-httpd-ssl-key-pair-MACHINE_NAME-VER-REL.noarch.rpm
软件包。 -
安排在下次启动
rhn-search
服务时重新创建搜索索引。此命令仅生成调试消息,而不生成错误消息。在容器中,输入以下命令:rhn-search cleanindex
-
在容器主机上,检查是否需要还原
/var/lib/containers/storage/volumes/var-spacewalk/_data/packages/
。如果/var/lib/containers/storage/volumes/var-spacewalk/_data/packages/
不在您的备份中,则需要还原它。如果源储存库可用,则您可以通过完整通道同步来还原/var/lib/containers/storage/volumes/var-spacewalk/_data/packages/
:mgrctl exec -ti -- mgr-sync refresh --refresh-channels
2. 使用 smdba 管理数据库
smdba
工具用于管理本地 PostgreSQL 数据库。使用此工具可以备份和还原数据库,以及管理备份。它还可用于检查数据库的状态,以及执行管理任务,例如重启动。有关 smdba
工具的详细信息,请参见 [reference:cli-smdba]。
smdba
工具仅适用于本地 PostgreSQL 数据库,而不适用于远程访问的数据库或 Oracle 数据库。
要在服务器容器内访问外壳,请在容器主机上运行 |
使用以下命令检查数据库的运行时状态:
smdba db-status
此命令返回 online
或 offline
,例如:
Checking database core... online
可使用以下命令启动和停止数据库:
smdba db-start
和:
smdba db-stop
3. 使用 smdba 备份数据库
smdba
工具执行连续存档备份。这种备份方法将合并当前会话期间对数据库所做和每项更改的日志,以及一系列较传统的备份文件。发生崩溃时,首先会从磁盘上和最近备份文件中还原数据库状态,然后精确重放当前会话的日志,使数据库恢复到当前状态。smdba
连续存档备份是在数据库正在运行的情况下执行的,因此无需停机。
这种备份方法非常稳定,通常会创建一致的快照,但可能会占用大量存储空间。请确保至少提供当前数据库大小三倍的可用空间用于备份。可以通过导航到 /var/lib/pgsql/
并运行 df -h
来检查当前数据库大小。
smdba
工具还可以管理存档,仅保留最近的备份和当前日志存档。日志文件的最大文件大小为 16 MB,因此,当文件达到此大小时会创建一个新日志文件。每次创建新备份时,会清除以前的备份以释放磁盘空间。我们建议您使用主机系统上的 systemd 计时器来安排 smdba
备份以确保您的存储得到有效管理,并随时准备好一个备份,以防发生故障。
3.1. 执行手动数据库备份
要在服务器容器内访问外壳,请在容器主机上运行 |
smdba
工具可直接在容器外壳内运行。我们建议您在安装后立即运行手动数据库备份,或者在对配置进行任何重大更改后运行手动备份。
首次运行 |
-
为备份分配永久存储空间。在容器中,此示例使用
/var/spacewalk/
目录。此目录将成为备份的永久目标,因此请确保您的服务器始终可以访问此目录。此目录位于永久存储设备中,有关详细信息,请参见 永久性存储卷列表。 -
在 SUSE Manager 容器主机的命令提示符处,以 root 身份进入服务器容器:
mgrctl term
-
在容器内部,执行以下步骤:
-
在您的备份位置为备份创建一个目录:
以 root 身份运行以下命令:
install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
-
首次创建备份时,请运行
smdba backup-hot
命令并设置enable
选项。 这会在指定的目录中创建备份,并根据需要重启动数据库:smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup
此命令将生成调试消息,成功完成时会返回以下输出:
信息:已完成
-
检查
/var/spacewalk/db-backup
目录中是否存在备份文件,确保备份成功。
-
3.2. 安排自动备份
无需关闭系统即可使用 smdba
执行数据库备份。但是,由于备份是一项大规模操作,因此在运行备份时,数据库性能可能会下降。我们建议您将定期数据库备份安排在低流量时段,以尽量减少中断。
请确保至少提供当前数据库大小三倍的可用空间用于备份。可以通过在容器主机上运行以下命令来查看当前数据库大小:
|
-
在 SUSE Manager 容器主机的命令提示符处,以 root 身份进入服务器容器:
mgrctl term
-
在容器内部,执行以下步骤:
-
在您的备份位置为备份创建一个目录。以 root 身份输入:
install -d -o postgres -g postgres -m 700 /var/spacewalk/db-backup
-
-
在容器主机上,以 root 身份在
/etc/systemd/system/server-db-backup.service
处创建一个包含以下内容的系统单元文件:[Unit] Description="Server backup service" [Service] ExecStart=mgrctl exec "smdba backup-hot --enable=on --backup-dir=/var/spacewalk/db-backup"
-
在
/etc/systemd/system/server-db-backup.timer
处创建一个包含以下内容的 systemd 计时器文件:[Unit] Description="Run server database backup relative to activation time" [Timer] OnCalendar=Mon..Sun *-*-* 2:00:00 Unit=server-db-backup.service [Install] WantedBy=multi-user.target
-
检查所有配置是否正确:
systemd-analyze verify /etc/systemd/system/server-db-backup.*
-
启用计时器:
systemctl enable --now server-db-backup.timer
4. 从备份中还原
发生故障时,可以使用 smdba
工具从备份中还原。
-
在 SUSE Manager 容器主机的命令提示符处,以 root 身份进入服务器容器:
mgrctl term
-
在容器内部,执行以下步骤:
-
关闭数据库:
smdba db-stop
-
启动还原过程并等待它完成:
smdba backup-restore start
-
重启动数据库:
smdba db-start
-
检查 RPM 和数据库之间是否有差异。
spacewalk-data-fsck
-
5. 存档日志设置
数据库管理工具 smdba
可以通过存档日志记录来执行热备份。在包含嵌入式数据库的 SUSE Manager 中,默认已启用存档日志记录。
PostgreSQL 维护有限数量的存档日志。在使用默认配置的情况下,大约可以存储 64 个大小为 16 MiB 的文件。
创建用户并同步通道:
-
SLES12-SP2-Pool-x86_64
-
SLES12-SP2-Updates-x86_64
-
SLE-Manager-Tools12-Pool-x86_64-SP2
-
SLE-Manager-Tools12-Updates-x86_64-SP2
PostgreSQL 会额外生成大约 1 GB 数据。因此,请务必考虑备份策略并定期创建备份。
存档日志存储在容器内的 /var/lib/pgsql/data/pg_xlog/
(postgresql) 下。
6. 检索有关占用的数据库空间的概览
数据库管理员可以使用子命令 space-overview
来获取有关占用的表空间的报告,例如:
mgrctl exec smdba space-overview
输出:
SUSE Manager Database Control. Version 1.5.2 Copyright (c) 2012 by SUSE Linux Products GmbH 表空间 | 大小 (Mb) | 可用 (Mb) | 使用率 ------------+-----------+------------+------ postgres | 7 | 49168 | 0.013 susemanager | 776 | 48399 | 1.602
smdba
命令适用于 PostgreSQL。如需更详细的报告,请使用 space-tables
子命令。它可以列出表及其大小,例如:
mgrctl exec smdba space-tables
输出:
SUSE Manager Database Control. Version 1.5.2 Copyright (c) 2012 by SUSE Linux Products GmbH 表 | 大小 --------------------------------------+----------- public.all_primary_keys | 0 字节 public.all_tab_columns | 0 字节 public.allserverkeywordsincereboot | 0 字节 public.dblink_pkey_results | 0 字节 public.dual | 8192 字节 public.evr_t | 0 字节 public.log | 32 kB ...
7. 数据库连接信息
在容器内,可以通过在 /etc/rhn/rhn.conf
中添加或编辑以下变量来设置 SUSE Manager 数据库连接信息:
db_backend = postgresql db_user = susemanager db_password = susemanager db_name = susemanager db_host = localhost db_port = 5432 db_ssl_enabled =