Upgrading Mysql
- 支持的升级方法
- 支持的升级路径
- Before You Begin
- Performing an In-Place Upgrade
Supported Upgrade Method
支持的升级方法包括:
- In-Place Upgrade:涉及关闭旧版本的MySQL,将旧的MySQL二进制文件或软件包替换成新版本的MySQL,重新启动MySQL使用原来的data directory,并执行mysql_upgrade.
- Logical Upgrade:涉及使用mysqldump导出旧版本MySQL的所有数据,安装新版本的MySQL,导入dump文件,并执行mysql_upgrade.
支持的升级路径
除非另有说明,否则支持以下升级路径:
- Upgrading from a release series version to a newer release series version is supported.可以从5.7.9升级到5.7.10,或者直接从5.7.9升级到5.7.11
- Upgrading one release level is supported. For example, upgrading from 5.6 to 5.7 is supported.可以从5.6升级到5.7
- Upgrading more than one release level is supported, but only if you upgrade one release level at a time.升级多个版本是支持的但只能一次升级一个版本,比如5.5 先升级 5.6 再升级到5.7
- 直接从5.5升级到5.7是不建议且不支持的
以下条件适用于所有升级路径: - 支持通用可用性(GA)状态版本之间的升级。
- 不支持在里程碑版本之间(或从里程碑版本到GA版本)的升级。
例如,不支持从5.7.7升级到5.7.8,因为GA状态释放也不受支持(这段可能写错了)。 - 对于已达到GA状态的MySQL版本系列的版本之间的升级,可以在具有相同架构的系统上在不同版本之间移动MySQL格式文件和数据文件。 这对于在里程碑版本之间的升级不一定是真的。 使用里程碑版本是您自己的风险。
Before You Begin
升级之前,建议查看如下信息,并执行建议的步骤:
- 升级前,备份数据,尤其是system库.
- 请查看版本说明,提供有关MySQL 5.7中新增功能的信息或与早期MySQL版本中发现的功能不同的信息。 其中一些更改可能导致不兼容。对于已在MySQL 5.7中添加,弃用或删除的MySQL服务器变量和选项的列表,请参见第1.5节“在MySQL 5.7中添加,弃用或删除的服务器和状态变量及选项”。如果使用以上任何项目,升级需要更改配置。
- 查看第2.11.1.1节“影响升级到MySQL 5.7的更改”。本节介绍可能需要在升级之前或之后执行操作的更改。
- 检查第2.11.3节“检查表或索引是否必须重新构建”,以了解您当前版本的MySQL与要升级的版本之间是否对表格式或字符集或归类进行了更改。如果这些更改导致MySQL版本之间不兼容,则需要使用第2.11.4节“重建或修复表或索引”中的说明升级受影响的表。
- 如果使用复制,请查看第18.4.3节“升级复制设置”。
- 如果您使用XA事务与InnoDB,请在升级之前运行XA RECOVER以检查未提交的XA事务。如果返回结果,则通过发出XA COMMIT或XA ROLLBACK语句来提交或回滚XA事务。
- 如果您的MySQL安装包含大量数据,在就地升级后可能需要很长时间进行转换,您可能会发现创建一个“虚拟”数据库实例,用于评估可能需要的转换和涉及的工作执行它们。制作一份包含mysql数据库完整副本的MySQL实例的副本,以及没有数据的所有其他数据库。在此虚拟实例上运行升级过程,以查看可能需要执行哪些操作,以便在原始数据库实例上执行实际数据转换时,可以更好地评估所涉及的工作。
- 当您安装或升级到新版本的MySQL时,建议重建和重新安装MySQL语言接口。这适用于MySQL接口,如PHP mysql扩展,Perl DBD :: mysql模块和Python MySQLdb模块。
执行In-Place升级
要执行In-Place升级:
1.查看在2.11.1.1章节,”Changes Affecting Upgrades MySQL5.7”描述的升级所造成的改变
https://dev.mysql.com/doc/refman/5.7/en/upgrading-from-previous-series.html
2.Configure MySQL to perform a slow shutdown by setting innodb_fast_shutdown to 0. For example:With a slow shutdown, InnoDB performs a full purge and change buffer merge before shutting down, which ensures that data files are fully prepared in case of file format differences between releases.1
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
3.关闭数据库4.将MySQL二进制文件或软件包替换成新的1
mysqladmin -u root -p shutdown
就是说把旧版本的mysql软件换成新的这里可以这样做,替换的时候使用ln -s 建一个连接,这样每次替换都只是改变连接1
2
3
4lrwxrwxrwx 1 root mysql 47 Mar 3 03:53 mysql -> mysql-5.7.17/mysql-5.7.17-linux-glibc2.5-x86_64
drwxr-xr-x 13 root root 4096 Mar 3 03:44 mysql55
drwxrwxr-x 13 root mysql 4096 Dec 15 2014 mysql5.6
drwxr-xr-x 3 root root 4096 Mar 3 03:42 mysql-5.7.17
取消连接unlink
5.启动新版本的MySQL这里要保证数据文件目录指定对了1
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
6.执行mysql_upgrade1
mysql_upgrade -u -p
mysql_upgrade检查所有数据库中的所有表与当前版本的MySQL不兼容。 mysql_upgrade还升级mysql系统数据库,以便您可以利用新的权限或功能。
翻译有问题,反正就是要检查所有数据库的所有表,所以你的数据库如果很大的话,这个升级过程会非常久.可以使用 -s选项只升级系统表
Note
mysql_upgrade should not be used when the server is running with –gtid-mode=ON. See GTID mode and mysql_upgrade for more information.
mysql_upgrade does not upgrade the contents of the help tables. For upgrade instructions, see Section 6.1.10, “Server-Side Help”.
7.关闭并重启MySQL确保对系统标的改变生效1
2mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir