本节介绍如何在Unix/Linux上升级MySQL二进制和基于包的安装。描述了就地升级和逻辑升级方法。
就地升级包括关闭旧的MySQL服务器,用新的MySQL二进制文件或包替换旧的MySQL二进制文件或包,在现有数据目录上重新启动MySQL,并升级现有安装中需要升级的任何剩余部分。
如果您升级最初通过安装多个RPM包生成的安装,请升级所有包,而不仅仅是部分包。例如,如果之前安装了服务器RPM和客户端RPM,则不要只升级服务器RPM。
对于某些Linux平台,从RPM或Debian包中安装MySQL包括systemd支持,用于管理MySQL服务器的启动和关闭。在这些平台上,mysqld_safe未安装。在这种情况下,使用systemd来启动和关闭服务器,而不是使用以下说明中使用的方法。看到第2.5.10节,“用systemd管理MySQL服务器”.
使用实例就地升级。
如果您使用XA事务
InnoDB
、运行XA恢复
在升级之前检查未提交的XA事务。如果返回结果,则提交或回滚XA事务XA提交
或XA回滚
声明。设置MySQL执行慢关机
innodb_fast_shutdown
来0
.例如:mysql -u root -p——execute="SET GLOBAL innodb_fast_shutdown=0"
随着缓慢的关闭,
InnoDB
在关闭之前执行完全清除和更改缓冲区合并,这确保在不同版本之间的文件格式不同的情况下充分准备好数据文件。关闭旧的MySQL服务器。例如:
Mysqladmin -u root -p shutdown
升级MySQL二进制安装或包。如果升级一个二进制安装,解压新的MySQL二进制发行包。看到获取并解压分发版.对于基于包的安装,请安装新的包。
使用现有的数据目录启动MySQL 5.7服务器。例如:
Mysqld_safe——user=mysql——datadir=/ / existing-datadir /路径&
运行mysql_upgrade.例如:
Mysql_upgrade -u root -p
mysql_upgrade检查所有数据库中的所有表是否与MySQL当前版本不兼容。mysql_upgrade也升级了
mysql
系统数据库,以便您可以利用新的特权或功能。请注意mysql_upgrade不升级时区表或帮助表的内容。有关升级说明,请参见“MySQL服务器时区支持”章节5.1.13,第5.1.14节,“服务器端帮助支持”.
关闭并重新启动MySQL服务器,以确保对系统表的任何更改都生效。例如:
Mysqladmin -u root -p shutdown mysqld_safe——user=mysql——datadir=/ / existing-datadir /路径&
逻辑升级涉及使用备份或导出工具从旧的MySQL实例导出SQL,例如, mysqldump或mysqlpump,安装新的MySQL服务器,并将SQL应用到新的MySQL实例。
对于某些Linux平台,从RPM或Debian包中安装MySQL包括systemd支持,用于管理MySQL服务器的启动和关闭。在这些平台上,mysqld_safe未安装。在这种情况下,使用systemd来启动和关闭服务器,而不是使用以下说明中使用的方法。看到第2.5.10节,“用systemd管理MySQL服务器”.
执行逻辑升级。
请参阅第2.11.1节“开始之前”.
从以前的MySQL安装中导出现有的数据:
Mysqldump -u root -p——add-drop-table——routines——events——all-databases——强制> data-for-upgrade.sql
请注意使用
——例程
而且——事件
选择与, mysqldump(如上所示),如果您的数据库包含存储程序。的——所有数据库
选项包括转储中的所有数据库,包括mysql
保存系统表的数据库。重要的如果您的表包含生成的列,请使用, mysqldumpMySQL 5.7.9或更高版本提供的实用程序来创建您的转储文件。的, mysqldump早期版本中提供的实用程序对生成的列定义使用了错误的语法(Bug #20769542)。您可以使用
INFORMATION_SCHEMA。列
表来标识具有已生成列的表。关闭旧的MySQL服务器。例如:
Mysqladmin -u root -p shutdown
安装MySQL 5.7。有关安装说明,请参见第二章,安装和升级MySQL.
初始化一个新的数据目录,如第2.10.1节“初始化数据目录”.例如:
Mysqld——initialize——datadir=/ / 5.7 -datadir /路径
复制临时文件
“根”@“localhost”
显示在屏幕上或写入错误日志以供以后使用的密码。使用新的数据目录启动MySQL 5.7服务器。例如:
Mysqld_safe——user=mysql——datadir=/ / 5.7 -datadir /路径&
重置
根
密码:shell> mysql -u root -p Enter password: **** <- Enter临时root密码
mysql>修改用户名您的新密码”;
将之前创建的转储文件加载到新的MySQL服务器中。例如:
Mysql -u root -p——force < data-for-upgrade.sql
请注意当服务器上启用gtid时,不建议加载转储文件(
gtid_mode =对
),如果您的转储文件包括系统表。, mysqldump为使用非事务性MyISAM存储引擎的系统表发出DML指令,当启用gtid时,这种组合是不允许的。还要注意,将一个转储文件从一个启用了gtid的服务器加载到另一个启用了gtid的服务器中,会生成不同的事务标识符。运行mysql_upgrade.例如:
Mysql_upgrade -u root -p
mysql_upgrade检查所有数据库中的所有表是否与MySQL当前版本不兼容。mysql_upgrade也升级了
mysql
系统数据库,以便您可以利用新的特权或功能。请注意mysql_upgrade不升级时区表或帮助表的内容。有关升级说明,请参见“MySQL服务器时区支持”章节5.1.13,第5.1.14节,“服务器端帮助支持”.
关闭并重新启动MySQL服务器,以确保对系统表的任何更改都生效。例如:
Mysqladmin -u root -p shutdown mysqld_safe——user=mysql——datadir=/ / 5.7 -datadir /路径&