定义:信任——Ubuntu LTS 打包人员已经从我这里失去了一些东西。
我非常小心地维护着我的 14.04 LTS Web 服务器。它只有四个主要功能(ssh、ftp、http 和 mysql(供网页使用))。在我开始从 14.04 升级到 16.04 之前,我确保了
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
在尝试升级版本之前,确保我拥有最新的 14.04 软件包。完成此操作后,系统重新启动(并再次运行上述命令,以确保没有看到任何新内容),为了安全起见,我运行了“sudo do-release-upgrade -d”以从 14.04 升级到 16.04。
之前两个系统以同样的方式升级,一切都进行得相当顺利,但 Web 服务器升级在 mysql 部分挂起了,这似乎已经破坏了我在系统上运行 mysql 的所有能力。就这样。
据我所知,强烈建议人们将 mysql 5.5 升级到 5.6 再升级到 5.7,因为直接从 5.5 升级到 5.7 可能会导致一些表兼容性问题。不幸的是,我的(记住,是完全最新的)Web 服务器仍在运行 mysql-5.5。
我有在 do-release-upgrade 挂起时捕获的 /var/lib/mysql 副本,但 mysql-5.7 和 mysql-5.6 都拒绝使用它们。似乎无法在 Ubuntu 16.04 上安装 mysql-5.5 以手动逐步完成发布。我尝试从 mysql 网站获取软件包,但我只能在那里找到 mysql-server,而找不到 -client、-common 或其他任何东西。
因此,从 14.04 升级到 16.04 似乎已经毁掉了我的数据库。是的,我知道,没有最新的备份是我的错,但在两次完美升级之后,在截止日期之前(现在已经过去了,因为数据库似乎已经一去不复返了),我太放心了——我信任构建升级的人。我知道我应该提前检查任何可能损坏的东西,但老实说,我认为这是包装人员的工作。说客户应该检查一切就像说买车的人应该在购买前拆开汽车并检查每个零件是否有缺陷一样——这不会发生。
如果有任何方法可以在 Ubuntu 16.04 上恢复到 mysql 5.5,以便我可以运行正确/推荐的(mysql)升级过程,请告诉我。如果没有,有人知道中佛罗里达有一个好的原始尖叫治疗小组吗?
更新:我已成功构建虚拟 14.04 服务器并修复/重建其上的数据库文件,从而使数据库恢复正常工作。我已成功将虚拟 14.04 的 mysql 从 5.5 升级到 5.6。接下来,我需要了解必须做什么才能确保 5.6 到 5.7 的升级成功。
更新 2:尽管受到责骂,我还是设法让我修复的数据库在 mysql 5.6 下工作已升级系统。现在我收到错误,因为没有安装 PHP 对 mysql 的支持。它们可能是小步骤,但它是进步!
更新 3:成功!我重新安装了所有 php7 /mysql 软件包,并确保我的 Web 应用程序使用的是 mysqli 数据库类型,然后,瞧!不过,我想我会继续使用 mysql 5.6 一段时间。直到我对升级到 5.7.x 的路径感到更舒服一点。希望这可以为像我这样的人提供一个警示故事——但如果他们太像我,那么他们直到为时已晚才会意识到这一点。
答案1
发生这种情况的原因是,从 14.04 升级到 16.04 会导致不受支持的 mysql 升级(5.5 -> 5.7),这不是受支持的升级路径,如mysql最简单的解决方法是将 mysql 升级到 5.6但仍低于 14.04要实现这一点,您首先(当然!)要转储所有数据库;
mysqldump --lock-all-tables -u root -p --all-databases > backup.sql
然后升级到mysql 5.6;
apt-get install mysql-server-5.6 mysql-client-5.6 mysql-server-core-5.6 mysql-client-core-5.6
这样,您的所有数据库都可以升级到 5.6 版(目前在我的计算机上),并且完全安全透明。升级后的唯一问题可能是 TIMESTAMP 条目。现在,在执行发布升级后,mysql 仍然停留在 5.6 版,而发布升级期间不支持从 5.5 直接升级到 5.7 的问题甚至从未出现过。