如何将 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的主要内容,如果未能解决你的问题,请参考以下文章