在配置备份服务之前,请确保具备以下先决条件:
- 运行 3.17 版或更高版本的 GitHub Enterprise Server 实例。
- 作为备份目标而预配和管理的专用存储卷。
存储要求
为确保备份过程的可靠性和高性能的存储必须满足以下要求:
-
**容量:** 分配的存储空间至少应为主 GitHub 应用设备数据磁盘使用量的五倍。 此容量规划已考虑历史快照存储需求及未来增长空间。 -
**文件系统支持:** 备份服务使用硬链接进行高效存储,而 GitHub 实例使用符号链接。 备份目标必须同时支持符号链接和硬链接,并且必须使用区分大小写的文件系统来防止冲突。可以通过运行以下命令来测试文件系统是否支持硬链接符号链接:
cd /data/backup sudo touch file sudo ln -s file symlink sudo ln symlink hardlink ls -la如果
ln symlink hardlink命令成功完成,则说明支持文件系统。 -
**性能:** 使用低延迟和高 IOPS 的高性能存储,以避免备份和还原缓慢。 -
**NFS:** 避免对备份目录使用 NFS 装载(通常为 `/data/backup`),因为这可能会导致超时和性能下降。
配置备份计划
可通过 管理控制台 配置 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的位置装载设备,并确保将来自动装载设备。
配置备份设置
装载备份目标后,“备份服务”页将在 管理控制台 中可用。
注意
在备份存储装载到/data/backup位置之前并完成上述初始化或装载步骤,设置页不会显示。
如果要从 GitHub Enterprise Server Backup Utilities 进行迁移,可以通过以下两种方式之一转移配置:
-
**手动配置**:直接在 管理控制台 中重新创建设置。 -
**命令行迁移**:SSH 到你的实例中,从 backup-utils 复制 `backup.config` 文件,然后运行:ghe-migrate-backup-config /path/to/your/backup.config使用
--dry-run标志预览更改而不应用它们。
计划自动备份
配置服务后,可以定义备份计划。
- 在 管理控制台 中,打开顶部菜单中的“Backups”选项卡。
- 在“Backup Schedule”部分,选择预定义的计划(例如每日),或输入自定义 cron 表达式。
- 单击“保存”以应用更改。
首次运行将是完整备份。 将来的运行将是增量备份。 如果在前一个备份仍在运行时开始新的备份尝试,则可能会跳过或失败。 在这种情况下,请调整计划以避免重叠。