如何将 MySQL 5.5.40 升级到 MySQL 5.7

Posted

技术标签:

【中文标题】如何将 MySQL 5.5.40 升级到 MySQL 5.7【英文标题】:How can Upgrade MySQL 5.5.40 to MySQL 5.7 【发布时间】:2014-12-16 07:37:27 【问题描述】:

如何升级 mysql 版本

当前 MySQL 版本:5.5.40

目标 MySQL 版本:MySQL 5.7

操作系统:CentOS 6.5 版(最终版)

【问题讨论】:

【参考方案1】:

可能最快的方法是使用 mysqldump 转储您的旧数据库版本并将其恢复到 5.7 新数据库。

过程的顺利程度取决于您在 5.5 中使用的 5.7 中删除的功能数量。

就我而言,在 5.7 中删除的唯一功能是 timestamp default '0000-00-00 00:00:00' 解决方法是在转储文件上运行 sed 并将 ''0000-00-00 00:00:00' 替换为 CURRENT_TIMESTAMP

sed -i.bu 's/'\''0000-00-00 00:00:00'\''/CURRENT_TIMESTAMP/g' fixed_dumo.sql

之后,fixed_dump.sql 被导入到新的 5.7 数据库中,并且运行顺利。 我希望这会有所帮助。

【讨论】:

知道需要多长时间吗?亚马逊 EBS 驱动器上的数据库目前约为 4.5 TB 就我而言,这是一个相对较早的业务阶段,要升级的数据库大小约为 1GB。此外,它是 RDS。在我最好的记忆中,只用了不到 10 分钟。要根据该数据进行推断,在您的情况下可能需要很长时间。从那以后的 2.5 年里,AWS 的发展速度可能要快一些。我希望这会有所帮助。 我的评论有点咸,表明你不能概括这样的建议,mysqldump 可能是一个无法使用的解决方案。对于大型数据库,最好且通常唯一的解决方案是进行“就地”升级(始终只有一个版本步骤),这在大多数情况下都可以正常工作,因为二进制数据很少更改(不必更改表) @John,当然,这不是一个通用的解决方案。有时,会在设计通用解决方案上投入时间,例如,在设计公共 API 时。但是当事情需要完成时(利用人们可以采取的放松和假设),这就是它的工作方式。在“咸味问题”雷达下飞行的荣誉!【参考方案2】:

升级路径为 MySQL 5.5 -> MySQL 5.6 -> MySQL 5.7

见https://dev.mysql.com/doc/refman/5.7/en/upgrading.html

【讨论】:

【参考方案3】:

第 1 步:进行备份

mysqldump --lock-all-tables -u root -p --all-databases > dump.sql

第 2 步:删除旧的 mysql

sudo apt-get remove mysql-server
sudo apt-get autoremove

第三步:安装新版本的mysql 5.6

sudo apt-get install mysql-client-5.6 mysql-client-core-5.6

sudo apt-get install mysql-server-5.6

5.7

wget http://dev.mysql.com/get/mysql-apt-config_0.6.0-1_all.deb

sudo dpkg -i mysql-apt-config_0.6.0-1_all.deb

sudo apt-get update

sudo apt-get install mysql-server

第 4 步:编辑数据以解决版本(5.5 和 5.7)之间的差异 如果您已创建表并且使用了timestamp(6) 列,则默认值应从CURRENT_TIMESTAMP 更改为CURRENT_TIMESTAMP(6)

`event_time` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),

第 5 步:恢复您的数据

mysql -u root -p < dump.sql

第 6 步:尝试添加新的数据库用户。验证和修复导入系统表(如用户)引入的问题 (ERROR 1805 (HY000): Column count of mysql.user is wrong.)

mysql_upgrade -u root -p

【讨论】:

你把我弄丢了 ,,, 在这些步骤中你在哪里/何时获得 MySQL 5.7 软件?我看到你只得到 MySQL 5.6。 请在步骤 7 中添加systemctl mysqld restart【参考方案4】:

我可能迟到了,但没有停机时间或停机时间最短的简单快速的解决方案可能是 AWS Database-Migration-Service,它可用于将您的数据库升级到不同版本以及其他一些服务器或 RDS .

我已经尝试过了,并在生产中将 MySQL5.5 转换为 MySQL5.7,没有任何停机时间。 这是相同的演示 - How To Migrate MySQL5.5 to MySQL5.7

步骤:

将您当前的 MySQL 设置为 master

创建一个带有 MySQL5.7 的新实例/服务器和所需的用户

转到 AWS DatabaseMigrationService (DMS) 并创建复制 实例

创建复制实例后,它会要求填充连接 源(MySQL5.5)和目标(MySQL5.7)数据库的详细信息。

在 DMS 中创建任务,这将是您想要的逻辑 迁移数据(特定数据库或特定表)

开始任务

任务完成且数据同步后,切换DNS入口即可 指向 MySQL5.5 到 MySQL5.7

【讨论】:

【参考方案5】:

是的。通过“逻辑升级”,您可以从 5.5 迁移到 5.7。这种方式:5.5 -> 5.6 -> 5.7,仅用于“就地”升级,带有数据文件夹。

见:https://www.percona.com/forums/questions-discussions/mysql-and-percona-server/43956-what-is-the-preferred-mysql-upgrade-path-5-5-to-5-7

【讨论】:

唯一的问题可能是 TIMESTAMP 条目,如 @Alex 所述,默认为“0000-00-00 00:00:00”【参考方案6】:

将 Mysql 版本 5.5 升级到 5.7 的简单步骤。

wget http://dev.mysql.com/get/mysql-apt-config_0.8.0-1_all.deb sudo dpkg -i mysql-apt-config_0.8.0-1_all.deb sudo apt-get 更新 sudo apt-get install mysql-server

【讨论】:

不,您不应该从 5.5 升级到 5.7 您应该升级到 5.6,运行 mysql_upgrade 命令,然后再次更新到 5.7 在每次升级之前,请阅读有关升级的文档,确保您的配置是兼容的。它可能需要预先写几行代码才能保持兼容(CRC 校验和方法等)【参考方案7】:

经过多次失败的尝试,我总结为:

    要从 5.5 升级,请先升级到 5.6,然后升级到 5.7 保存数据文件夹并安装全新安装的 5.7

两者都需要上面所有cmets中提到的apt-config。

最重要的是运行sudo apt install mysql-**community**-server

【讨论】:

【参考方案8】:

在Mysql中,

第 1 步: 获取版本,

wget https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

第 2 步:

rpm -ivh mysql57-community-release-el7-9.noarch.rpm

第 3 步: 检查可用的mysql repo, yum repolist all | grep mysql

会得到类似下面的东西,

mysql55-community/x86_64          MySQL 5.5 Community Server     disabled
mysql55-community-source          MySQL 5.5 Community Server - S disabled
mysql56-community/x86_64          MySQL 5.6 Community Server     disabled
mysql56-community-source          MySQL 5.6 Community Server - S disabled
mysql57-community/x86_64          MySQL 5.7 Community Server     enabled:    384
mysql57-community-source          MySQL 5.7 Community Server - S disabled

首选一个一个升级, 所以先升级到mysql 5.5 into mysql5.6

第四步:先启用mysql 5.6,禁用mysql 5.5和5.7

sudo yum-config-manager --enable mysql56-community
sudo yum-config-manager --disable mysql55-community
sudo yum-config-manager --disable mysql57-community

第五步:升级前停止服务,

sudo systemctl stop mysql

第 6 步:让我们准备升级,

yum update

你已成功升级到mysql5.6

现在重复步骤 4 到 6 以升级到 5.7

sudo yum-config-manager --disable mysql56-community
sudo yum-config-manager --enable mysql57-community

然后

yum update

mysql --version

成功升级到mysql 5.7 别忘了重启服务,

systemctl start mysql

【讨论】:

【参考方案9】:
sudo apt-get update

sudo apt-get upgrade

sudo apt-get install mysql-server-5.6

【讨论】:

以上是关于如何将 MySQL 5.5.40 升级到 MySQL 5.7的主要内容,如果未能解决你的问题,请参考以下文章

AWS Mysql 5.5.40 安全组问题 强制更新

mysql5.6源码安装

MySQL5.7升级到8.0过程详解

MySQL5.7升级到8.0过程详解

mysql 5.5升级到5.7版本操作流程

phpmyadmin中的mysql版本不同