在 Linux 服务器中升级 MySQL 版本的最佳方法是什么
我有大约 14 GB 的数据库,运行 8 -15 GB ram(不同的部署)。目前 MySQL 版本是 5.5,我计划转移到 5.6 。我过去为 5.1 到 5.5 升级做过类似的活动。
我遵循的步骤是 1. 解决升级前代码库中 Mysql 升级程序版本中可能面临的任何语法问题。
在升级当天 2. 关闭带有应用程序的 MySQL;做两个备份(一个有数据,一个没有数据) 3. 卸载并删除旧的 MySQL 实例并安装新的 MySQL 实例。4.先导入没有数据的备份,然后导入有数据的备份,然后重新上线。
我体验到在上述过程中,将备份文件导入数据库需要很长时间,因为我们的一些生产服务器运行的内存较少,并且在此过程中远程增加了风险。这是我所知道的唯一最好的方法,有没有一种最好的方法可以让我在未来用更少的时间升级 MySQL 版本。感谢你的帮助 。请注意,我没有能力让另一台机器来执行此操作,因此我必须在可以接受合理停机时间的同一生产服务器中执行此操作。
在大多数情况下,MySQL 5.5 到 MySQL 5.6 的就地二进制升级是可能的,没有很多问题。这太小了,无法在执行升级时详细说明所有潜在问题,但我会为您提供一般步骤:
将 MySQL 服务器克隆到测试环境。我不相信你的笔记本电脑上没有 15GB 来测试升级。最坏的情况是,您可以在生产机器上、在不同数据目录、套接字和端口上运行的单独实例上测试它。Percona XtraBackup可用于以快速有效的方式创建(几乎)没有停机时间的 MySQL 克隆。
在您的测试机器上执行测试升级。这就像停止服务器、安装新的二进制文件并重新启动环境一样“简单”。仅此而已,您将了解已弃用的选项,您必须更改这些选项以避免错误和警告。监视错误日志。
一旦 MySQL 启动并运行,您将需要mysql_upgrade
从 5.6 二进制文件执行。这是必不可少的,否则 MySQL 可能会崩溃。这将修复系统和权限表,并检查某些表是否需要修复。这样做(REPAIR TABLE ...
对于 MyISAM,ALTER TABLE ENGINE=InnoDB, ALGORITHM=COPY
对于 InnoDB 表)。至少对于某些与时间相关的表来说可能是这种情况。在某些情况下,您甚至可能希望这样做以利用一些新的 MySQL 功能。请务必阅读文档以了解在新 MySQL 版本上可能需要更改哪些变量和表结构。pt-config-diff是一个很好的工具,用于识别服务器之间变量值的差异。
现在您可以自由测试应用程序的不兼容性:语法更改和性能回归(特别是优化器更改)。与任何非平凡的升级一样,每 10 个自动执行得更好的查询,您会发现一个执行得更差。确定根本原因并修复您的索引/查询/表结构/配置。您会发现 5.6 对子查询的性能通常会更好,但我已经确定了某些默认配置更改,在某些情况下可能会对您的性能产生负面影响。pt-upgrade是一个很棒的开源工具,用于检测性能回归和不兼容性。
如果您有足够的硬件,那么使用 MySQL 复制来保持克隆是最新的将是理想的选择。不仅使这个过程不那么痛苦,它还允许通过一一应用主更改来验证升级。请记住,您仍然可以选择同一台机器上的 2 个实例,所以不要放弃这个选项!
成功完成所有测试后,假设您已记录所有问题,您可以继续执行真正的升级。如果你已经完成了你的功课,现在应该不会发生任何意外。只有2个警告:
如果一切正常,您应该将 mysql 设置为read_only
(并使应用程序正常失败),停止 mysql,二进制文件升级,使用测试的更改配置,启动 mysql mysql_upgrade
,表修复,需要其他修复,测试电池,监控错误和慢日志,read_only =0
,然后再次向上。请小心,因为在重新启动后,缓冲池将完全清空(在 5.6 中已修复:-)),从而使新查询变得非常缓慢。查询可能需要数小时才能再次填充缓冲区 - 有多种方法可以缓解该问题。
在某些情况下,可能需要 SQL 转储或更好的选项,并且在升级时您可能会发现一些众所周知的问题,但不可能完全告诉您可能发现的所有内容。只需阅读有关此的官方文档,如果您需要其他帮助,请给我一个 ping。
归档时间: |
|
查看次数: |
1347 次 |
最近记录: |