在配置备份服务之前,请确保具备以下先决条件::
- 运行 3.17 版或更高版本的 GitHub Enterprise Server 实例。
- 预配和管理的专用存储卷,用作备份目标。
存储要求
为确保备份过程的可靠性和高性能的存储必须满足以下要求:
-
容量:**** 分配的存储空间至少应为主 GitHub 应用设备磁盘使用量的五倍。 此容量规划已考虑历史快照存储需求及未来增长空间。
-
文件系统支持:**** 备份服务使用硬链接进行高效存储,而 GitHub 实例使用符号链接。 因此,备份目标必须同时支持符号链接和硬链接,并且必须使用区分大小写的文件系统,以避免发生冲突。
可通过运行以下命令来测试文件系统是否支持对符号链接进行硬链接:
touch file ln -s file symlink ln symlink hardlink ls -la
如果
ln symlink hardlink
命令成功执行,说明文件系统是受支持的。 -
性能:**** 使用低延迟、高 IOPS 的高性能存储,以避免备份和恢复过程缓慢。
-
NFS:**** 避免将备份目录(通常为
/data/backup
)装载到 NFS 上,因为这可能导致超时和性能下降。
配置备份计划
可通过 管理控制台 配置 GitHub Enterprise Server Backup Service。
设置备份目标
在配置该服务之前,必须先准备好用于存储备份的存储卷。
使用新的块设备
如果使用的是专用块设备作为备份目标,则需在 管理控制台 中进行配置之前,通过 SSH 对其进行初始化。 此过程将格式化设备并清除所有现有数据****。
-
以
admin
用户身份通过 SSH 连接到实例。 请参阅“访问管理 shell (SSH)”。 -
将备份块设备附加到实例。
-
使用
lsblk
标识设备名称,以列出可用的块设备。 请确保选择正确的设备以避免数据丢失。lsblk
-
运行初始化命令,将
YOUR_DEVICE_NAME
替换为上一步中标识的实际设备名称。警告
此命令将永久擦除指定设备上的所有数据。 在继续作之前,请仔细检查设备名称并备份任何重要数据。
ghe-storage-init-backup /dev/YOUR_DEVICE_NAME
此命令:
- 设置设备格式(擦除所有数据)。
- 使其可供备份服务使用。
- 将其设置为在启动时自动装载到
/data/backup
。
重用之前经过初始化的磁盘
如果设备已使用 ghe-storage-init-backup
进行初始化,则可以重复使用它,而无需重新格式化:
-
以
admin
用户身份通过 SSH 连接到实例。 -
将磁盘附加到实例。
-
如果装入点不存在,请创建装入点。
sudo mkdir -p /data/backup
-
启用并启动装载服务。
sudo systemctl enable ghe-backup-disk.service sudo systemctl start ghe-backup-disk.service
这将在
/data/backup
装载设备,并确保它将来自动装载。
配置备份设置
装载备份目标后,“Backup Service”页将在 管理控制台 中可用。 如果使用块设备,则需要完成上述初始化或装载步骤。
注意
在备份存储装载到 /data/backup
之前,设置页面不会显示。
如果要从 GitHub Enterprise Server Backup Utilities 进行迁移,可以通过以下两种方式之一转移配置:
-
手动配置****:直接在 管理控制台 中重新创建设置。
-
命令行迁移****:通过 SSH 登录到实例,复制来自 backup-utils 的
backup.config
文件,并运行以下命令:ghe-migrate-backup-config /path/to/your/backup.config
使用
--dry-run
标志预览更改,而无需应用更改。
计划自动化备份
配置服务后,可以定义备份计划。
- 在 管理控制台 中,打开“Backup Service”页面。
- 在“Backup Schedule”部分,选择预定义的计划(例如每日),或输入自定义 cron 表达式。
- 单击“保存”以应用更改。
第一次运行将是完整备份。 将来的运行将是增量备份。 如果在之前的备份仍在运行时启动了新的备份尝试,该操作可能会被跳过或失败。 在这种情况下,请调整计划以避免重叠。