升级 GitHub Enterprise Server
升级 GitHub Enterprise Server,以获取最新功能和安全更新。
本文内容
准备升级
-
确定升级策略并选择要升级到的版本。 更多信息请参阅“升级要求”。
-
如果您要从 GitHub Enterprise Server 2.12 或 2.13 升级到 2.14 或 2.15,请下载并运行迁移脚本,将您的搜索或 web 挂钩索引迁移到 Elasticsearch 5.6 中。更多信息请参阅“将 Elasticsearch 索引迁移到 GitHub Enterprise Server 2.14 或更高版本”。
-
使用 GitHub Enterprise Server 备份实用程序 创建全新的主实例备份。 更多信息请参阅 GitHub Enterprise Server 备份实用程序 README.md 文件。
-
如果您要使用升级包进行升级,请为 GitHub Enterprise Server 最终用户排定维护窗口。 如果您要使用热补丁,则不需要使用维护模式。
注:维护窗口取决于所执行升级的类型。 使用热补丁进行升级通常不需要维护窗口。 有时需要重启,不过您可以在之后的某个时间重启。 按照 MAJOR.FEATURE.PATCH 的版本控制方案,使用升级包的补丁版本通常需要不到 5 分钟的停机时间。 包含数据迁移的功能版本需要的时间更长,具体视存储性能以及迁移的数据量而定。 更多信息请参阅“启用和排定维护模式”。
生成快照
快照是虚拟机 (VM) 在某一时间点的检查点。 强烈建议在升级虚拟机之前生成快照,这样一来,如果升级失败,您可以将 VM 还原到快照状态。 如果您要升级到新的功能版本,则必须生成 VM 快照。 如果您要升级到补丁版本,可以连接现有数据磁盘。
有两种类型的快照:
-
VM 快照会保存整个 VM 状态,包括用户数据和配置数据。 此快照方法需要占用大量磁盘空间,且比较耗时。
-
数据磁盘快照仅会保存您的用户数据。
注意:
- 某些平台不允许您只生成数据磁盘的快照。 对于此类平台,您需要生成整个 VM 的快照。
- 如果您的虚拟机监控程序不支持完整的 VM 快照,您应连续、快速地生成根磁盘和数据磁盘的快照。
使用热补丁升级
You can upgrade GitHub Enterprise Server to the latest patch release using a hotpatch, which does not require a maintenance window and usually does not require a reboot. You can use hotpatching to upgrade to a newer patch release, but not a feature release. For example, you can upgrade from 2.10.1
to 2.10.5
because they are in the same feature series, but not from 2.10.9
to 2.11.0
because they are in a different feature series.
利用 Management Console,您可以立即安装热补丁,也可以排定稍后安装热补丁。 您可以使用管理 shell 的 ghe-upgrade
实用程序安装热补丁。 更多信息请参阅“升级要求”。
使用热补丁升级单个设备
使用 Management Console 安装热补丁
无法在集群环境中使用 管理控制台 安装热补丁。 要在集群环境中安装热补丁,请参阅“使用管理 shell 安装热补丁”。
-
启用自动更新。 For more information, see "Enabling automatic updates."
-
In the upper-right corner of any page, click .
-
在左侧边栏中,单击 管理控制台。
-
At the top of the 管理控制台, click Updates.
-
在新的热补丁下载完毕后,请使用 Install package 下拉菜单:
- 要立即安装,请选择 Now:
- 要稍后安装,请选择以后的日期。
-
单击 Install。
使用管理 shell 安装热补丁
Note: If you've enabled automatic update checks, you don't need to download the upgrade package and can use the file that was automatically downloaded. For more information, see "Enabling automatic update checks."
-
SSH into 您的 GitHub Enterprise Server 实例.
$ ssh -p 122 admin@HOSTNAME
-
Browse to the GitHub Enterprise Server Releases page. Next to the release you are upgrading to, click Download, then click the Upgrading tab. 复制升级热补丁包(.hpkg 文件)的 URL。
-
Download the upgrade package to 您的 GitHub Enterprise Server 实例 using
curl
:admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
-
使用包文件名运行
ghe-upgrade
命令:admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.hpkg*** verifying upgrade package signature...
-
如果更新内核、MySQL、Elasticsearch 或其他程序时需要重启,热补丁升级脚本会通知您。
使用热补丁升级包含副本实例的设备
配置为高可用性和 Geo-replication 的设备除了会使用主实例之外,还会使用副本实例。 要升级此类设备,您需要逐个升级主实例和所有副本实例。
升级主实例
- 请按照“使用管理 shell 安装热补丁”中的说明升级主实例。
升级副本实例
注:如果您要将多个副本实例作为 Geo-replication 的一部分运行,请逐一为每个副本实例重复此步骤。
-
请按照“使用管理 shell 安装热补丁”中的说明升级副本实例。如果您为 Geo-replication 使用多个副本,则必须重复此步骤,逐一升级每个副本。
-
Connect to the replica instance over SSH as the "admin" user on port 122:
$ ssh -p 122 admin@replica-host
-
Verify the upgrade by running:
$ ghe-version
还原热补丁安装
If a hotpatch installation introduces any problems or unexpected behavior, you can use the ghe-upgrade --allow-patch-rollback
command to install a regular upgrade package (.pkg) of the previous version.
使用升级包升级
虽然您可以使用热补丁升级到功能系列中的最新补丁版本,但必须使用升级包升级到更新的功能版本。 例如,要从 2.11.10
升级到 2.12.4
,您必须使用升级包,因为两者在不同的功能系列中。 更多信息请参阅“升级要求”。
使用升级包升级单个设备
Note: If you've enabled automatic update checks, you don't need to download the upgrade package and can use the file that was automatically downloaded. For more information, see "Enabling automatic update checks."
-
SSH into 您的 GitHub Enterprise Server 实例.
$ ssh -p 122 admin@HOSTNAME
-
Browse to the GitHub Enterprise Server Releases page. Next to the release you are upgrading to, click Download, then click the Upgrading tab. 选择适当的平台并复制升级包(.pkg 文件)的 URL。
-
Download the upgrade package to 您的 GitHub Enterprise Server 实例 using
curl
:admin@HOSTNAME:~$ curl -L -O UPGRADE-PKG-URL
-
启用维护模式并等待 GitHub Enterprise Server 实例上的所有活动进程完成。 更多信息请参阅“启用和排定维护模式”。
注:升级采用高可用性配置的主设备时,如果您按照“升级主实例”中的说明操作,设备应当已处于维护模式。
-
使用包文件名运行
ghe-upgrade
命令:admin@HOSTNAME:~$ ghe-upgrade GITHUB-UPGRADE.pkg*** verifying upgrade package signature...
-
确认您要继续升级,并在包签名得到验证后重新启动。 新的根文件系统会写入辅助分区,实例会在维护模式下自动重启:
*** applying update... This package will upgrade your installation to version version-numberCurrent root partition: /dev/xvda1 [version-number] Target root partition: /dev/xvda2 Proceed with installation? [y/N]
-
对于单个设备升级,请禁用维护模式,以便用户能够使用 您的 GitHub Enterprise Server 实例。
注:升级采用高可用性配置的主设备时,您应当一直处于维护模式,直至已升级所有副本,复制是最新版本。 更多信息请参阅“升级副本实例”。
使用升级包升级包含副本实例的设备
配置为高可用性和 Geo-replication 的设备除了会使用主实例之外,还会使用副本实例。 要升级此类设备,您需要逐个升级主实例和所有副本实例。
升级主实例
警告:复制停止时,如果主实例发生故障,副本升级和复制再次开始之前执行的任何操作都将丢失。
-
在主实例上,启用维护模式并等待所有活动进程完成。 For more information, see "Enabling maintenance mode."
-
Connect to the replica instance over SSH as the "admin" user on port 122:
$ ssh -p 122 admin@replica-host
-
在副本实例或者所有副本实例(如果您将多个副本实例作为 Geo-replication 的一部分运行)上,运行
ghe-repl-stop
以停止复制。 -
按照“使用升级包升级单个设备”中的说明升级主实例。
升级副本实例
注:如果您要将多个副本实例作为 Geo-replication 的一部分运行,请逐一为每个副本实例重复此步骤。
-
按照“使用升级包升级单个设备”中的说明升级副本实例。如果您为 Geo-replication 使用多个副本,则必须重复此步骤,逐一升级每个副本。
-
Connect to the replica instance over SSH as the "admin" user on port 122:
$ ssh -p 122 admin@replica-host
-
Verify the upgrade by running:
$ ghe-version
-
On the replica instance, to start replication, run
ghe-repl-start
. -
On the replica instance, to make sure replication services are running correctly, run
ghe-repl-status
. This command will returnOK
for all services when a successful replication is in progress and the replica has upgraded. 如果命令返回Replication is not running
,说明复制可能仍在启动。 等待 1 分钟左右,然后再次运行ghe-repl-status
。注:在重新同步过程中,
ghe-repl-status
可能返回预期消息,提示复制落后。 例如:CRITICAL: git replication is behind the primary by more than 1007 repositories and/or gists
如果
ghe-repl-status
未返回OK
,请执行以下步骤手动启动复制。-
在副本实例上,再次运行
ghe-repl-setup <primary-instance-ip>
。 -
On the replica instance, to start replication, run
ghe-repl-start
. -
On the replica instance, to make sure replication services are running correctly, run
ghe-repl-status
. This command will returnOK
for all services when a successful replication is in progress and the replica has upgraded.
-
-
最后一个副本升级完毕且重新同步完成后,请禁用维护模式,以便用户能够使用 您的 GitHub Enterprise Server 实例。
从失败的升级中恢复
如果升级失败或中断,您应将实例还原为其之前的状态。 完成此操作的过程取决于升级类型。
回滚补丁版本
要回滚补丁版本,请使用 ghe-upgrade --allow-patch-rollback
命令。回滚不会影响数据分区,因为迁移不是在补丁版本上运行的。 更多信息请参阅“命令行实用程序”。
回滚功能版本
要从功能版本回滚,请从 VM 快照恢复,以确保根分区和数据分区处于一致的状态。 更多信息请参阅“生成快照”。