我已经备份了当前的 MySQL 数据库和相关数据,但我通常会问,执行以下操作是否安全?
apt-get update nginx mysql-server php-fpm php-mysql
apt-get upgrade nginx mysql-server php-fpm php-mysql
我确实unattended-upgrades
默认使用,仅用于安全升级,但我确实觉得我应该完全升级 LEMP,以满足性能需求。
顺便说一句,我知道CM就像 Ansible 那样做(如果确实如此,它基本上是一个默认的 LEMP)。
答案1
没有 100% 的保证
如果没有其他人报告问题,那么您可以 99% 确定。如果您通过 Google 搜索发现一个用户遇到其他硬件问题,您的确定性将降至 95%。如果用户遇到您的制造商的问题,您的确定性将降至 90%。如果问题出在您的型号上,则为 80%,您的操作系统为 70%,等等。
测试、测试、再测试。完成后再次测试。
最好的测试方法是在数据库关闭且所有用户都已注销后进行。创建一个与程序和数据大小相等的分区。将活动分区克隆到测试分区。
在测试分区上运行升级:
- 如果升级在测试分区上崩溃,那么感谢你的幸运,你没有在实时分区上进行升级。
- 修复升级过程中的任何错误,将实时数据重新克隆到测试分区(如果使用,第二次将更短
rsync
)。再次运行升级。 - 升级成功后,测试你的程序。如果它们崩溃了,那你可要庆幸你没有在活动分区上进行测试。
- 找出程序崩溃的原因。如果它们扰乱了你的数据库,请重新克隆实时数据库,升级,获取故障程序的补丁,然后重新测试。
我想你已经明白了。为了协助克隆过程,你可以参考以下脚本:Bash 脚本将 Ubuntu 克隆到新分区以测试 18.04 LTS 升级。您还可以使用 Live USB 启动,并使用脚本作为参考并结合来自互联网的其他说明,手动克隆未安装的活动分区。
笔记:链接的脚本写于 4 月 28 日,运行良好。我正在通过额外的测试对其进行修改,以验证是否选择了正确的测试分区作为克隆。另一个修订是显示源和目标分区操作系统版本详细信息。最后一个修订是显示rsync
已删除文件的统计信息,这些统计信息在克隆上重新克隆时很重要。
答案2
为什么它不应该是安全的?以防万一,备份总是好的,但在大多数情况下,通过升级软件包apt
是安全的。我在升级 LEMP 堆栈时从未遇到过问题,我已经使用它至少几个月了。此外,如果您是为了性能而升级,您可能希望从 切换到MySQL
,MariaDB
这可以通过以下方式完成:
sudo apt install mariadb-server-10.0 mariadb-client-10.0
并且它应该检测MySQL
数据库并导入它们。
使用MySQL
和MariaDB
,备份数据库很容易,只需运行:
sudo mysqldump dbnamehere > database.sql
如果升级过程中出现问题,只需使用以下命令恢复数据库:
sudo mysql dbnamehere < database.sql
或者,如果出现严重错误,只需删除数据库,创建一个新的空数据库,然后运行上述命令。
还有几点说明:
- 请使用
apt
而不是apt-get
- 只管跑
apt update
,不要apt update nginx mysql-server php-fpm php-mysql
此外,如果您使用的是 VPS 而不是专用服务器,VPS 提供商通常会为您提供创建快照的选项,如果出现问题,可以轻松恢复。
答案3
简短的回答是肯定的,它是安全的;详细的回答
是肯定和否定的,这取决于软件的年代。
我提到年代的原因是,举一个极端的例子,如果你有 1999 年的软件,打算把它更新到 2018 年的版本,那么你会遇到兼容性问题,因为最新版本可能无法转换那么久以前的文件,但如果它是较新的,那么应该没问题。
但如果你想绝对确定,我建议在更新之前先备份程序