我们需要回滚服务器升级的原因可能有多种,但我们最不想做的就是执行升级,如果升级失败,然后无法再次恢复到正常工作的安装。
有人可能会说这就是为什么要备份的原因,但备份的主要目的是在升级过程中保持数据的一致性和持久性。
对于较旧的 RPM 安装,传统方法是使用 -old-package 选项。
例如:
# rpm -Uvh --old-package MySQL-Server-5.1.50.x86-64.rpm
这里指定的 RPM 是在升级发生之前运行的包。
-old-package 选项允许打包系统忽略正在安装的旧版本并将二进制文件降级到早期版本。
使用较新版本的 RPM 打包(推荐 4.4.3 或者更高版本),该选项可用于执行包升级的事务性回滚。
要进行回滚,我们首先必须确保使用 -repackage 选项执行升级。
如果需要,这将在 /var/spool/repackage 目录中创建一个副本包,并在将来启用回滚。
重要的是,如果我们有多个要升级的软件包,例如 mysql-server、mysql-client、mysql-libs 等,请对我们升级的每个 RPM 软件包使用 -repackage 选项。
所以一个关于包升级的例子。
# rpm -Uvh --repackage MySQL-Server-5.1.62.x86_64.rpm Preparing... ############################# [100%] Repackaging... 1:MySQL-Server-5.1.62 ############################# [100%] Upgrading... 1:MySQL-Server-5.1.62 ############################# [100%]
假设一小时后我们对升级不满意并需要回滚到以前的版本,则执行以下操作:
# rpm -Uvh --rollback '2 hours ago' Rollback packages (+1/-1) to Thu Jan 31 23:26:52 2003 (0x3f29ddfc): Preparing... ########################## 100%] 1:MySQL-Server-5.1.50 ########################### [ 33%]
该包现在将回滚到之前的包并准备再次运行。
我们只需指定要回滚的时间点,而不是指定包。
这意味着所有软件包都将在那时回滚,因此如果我们希望保留新版本的另一个软件包已升级,则我们必须非常具体地选择回滚时间。
日期:2020-09-17 00:11:44 来源:oir作者:oir