MySQL凭借着极其优秀的性能、可靠性和易用性,已成为基于Web应用程序排名靠前的开源数据库。随着时间的推移, MySQL 5.7 的时代即将圆满落幕, 2023年10月31日MySQL 5.7 将终止官方支持和更新。之后,Oracle官方将不再为MySQL 5.7提供漏洞修复和安全补丁。MySQL 8.0则风风火火的走到了舞台中央, 开始了它的精彩表演。
不升级到MySQL 8.0? 5.7真出了问题, 这个锅谁来背?! 升级迫在眉睫, 那么升级过程中有哪些必须Get的Tips知识点呢? 敲黑板,知识点!
Tips-1: 简单的升级预检查
MySQL Shell 是与 MySQL一起使用的流行工具,它完美的集成在了 Oracle 云基础设施 (OCI) 的MySQL Database Service(MDS)中。它的功能非常强大, 整个升级迁移过程中会多次用到它。
在升级MySQL的时候,需要确认版本间的差异, 查阅Release Notes, Reference等文档来确定比如参数的变动,关键字的变化, 缺省的字符集的异同等等, 然后根据这些差异来调整对应的参数和库表结构,整个过程在没有MySQL Shell之前是比较繁琐的。
现在我们有了新的选择, 通过使用MySQL Shell让升级预检查更加简单,这个检查有两种不同的调用入口, 可以根据需要选择其中的任意一种。
方式一: 使用System Shell调用入口
方式二: 使用MySQL Shell调用入口
生成的报告中会明确列出正常的数据库对象和参数以及哪些对象, 哪些参数或哪些关键字需要调整。下面的例子中可以看到dbtest.system这张表的json_table, cube列名与8.0中的保留关键字 ”JSON_TABLE”, ”CUBE”相冲突。需要修改dbtest.system这张表的列名后才能升级迁移到MySQL 8.0。
Tips-2: 在线快速切换
MySQL 5.7升级迁移到8.0有online和offline两种方式, 如果业务对停机窗口不敏感,那就用简单可靠的offline模式: 测试通过后, 停止应用服务, 将数据从5.7导出,然后导入8.0.启动连接到8.0的应用; 否则建议使用GoldenGate对MySQL 5.7进行Online模式的快速升级切换。
Oracle GoldenGate软件, 支持跨平台跨版本数据复制, 其基本工作方式是, 捕获源端MySQL 5.7数据库的日志,存入数据队列,并加密压缩后路由传输到目标端, 交付到目标端的MySQL 8.0数据库内。从源端到目标端的数据变化可以准实时的进行捕获, 传输, 交付, 一旦两端的数据追平后, 数据库可以随时快速切换到8.0版本, 如果有问题, 还可以通过回写通道进行回退操作。
Tips-3: 更快的转储速度
MySQL Shell 的导出导入的速度更快、并且与 OCI 完美兼容(块存储、MDS 授权、自动创建主键等)。
MySQL Shell在数据导出导入时, 可以自定义并发的线程个数, 以加快数据转储的速度,减少移动数据所消耗的时间, 同等配置的条件下, MySQL Shell的数据导出导入速度可以达到mysqldump的9倍左右。除此之外, MySQL Shell还可以通过参数ocimds来进行备份集与MySQL Database Service的兼容性检查。
数据导出
数据导入
Tips-4: 增强的安全性
MySQL 8.0的默认身份验证机制从之前MySQL 5.7的 mysql_native_password 更新到了现在的 caching_sha2_password。mysql_native_password使用的是基于 SHA1 算法,这种算法简单并且相同的密码拥有相同的哈希值, 很容易被解,开 有安全隐患。 caching_sha2_password身份验证机制升级为更安全的SHA256算法, round次数从原来的2次提升为5000次, 密码值为Salt后的值, 即使两个不同用户的密码相同,保存在计算机中的哈希值也不同。从而提高了安全性,与此同时使用缓存来加快用户的身份验证过程。
如果客户端因为应用的限制暂时无法升级, 在连接时报错, 可以通过如下命令临时调用mysql_native_password的验证方式创建用户, 赋于合适权限后连接到数据库。
内容来源于:升级到MySQL 8.0?这些 Tips 必Get