1.升级方法
- In-Place Upgrade: (就地升级)Involves shutting down the old MySQL version, replacing the old MySQL binaries or packages with the new ones, restarting MySQL on the existing data directory, and running mysql_upgrade.
- Logical Upgrade:(逻辑升级) Involves exporting existing data from the old MySQL version using mysqldump, installing the new MySQL version, loading the dump file into the new MySQL version, and running mysql_upgrade.
2.升级路径
- 仅支持General Availability(GA)版本之间的升级
- 从5.6到5.7是支持的,升级的下一个版本之前建议升级到最新的版本,如先升级的5.6的最后一个版本,再升级的5.7
- 不支持跳版本升级, 如从5.5 到 5.7
- 小版本升级是支持的,如5.7.x 到 5.7.y
Upgrade within a release series is supported
3.开始之前
- 备份,包含系统库、系统表
- 查看不兼容的改变,see Features Removed in MySQL 5.7.
- 查看 Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7”. This section describes changes that may require action before or after upgrading.这部分描述了升级前后可能需要的执行变化。
- 如果你使用了replication 复制,查看Section 16.4.3, “Upgrading a Replication Setup”.
- 如果你使用了 InnoDB的 XA transactions , 在升级之前运行“XA RECOVER”来检查未提交的Xa事务,如果有结果返回,需要执行XA COMMIT or XA ROLLBACK语句来提交或回滚Xa事务
In-Place Upgrade
To perform an in-place upgrade:
- Review the changes described in Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7” for steps to be performed before upgrading.
- Configure MySQL to perform a slow shutdown by setting innodb_fast_shutdown to 0. For example:
mysql -u root -p --execute="SET GLOBAL innodb_fast_shutdown=0"
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.
- Shut down the old MySQL server. For example:
mysqladmin -u root -p shutdown
- Upgrade the MySQL binary installation or packages. If upgrading a binary installation, unpack the new MySQL binary distribution package. See Obtain and Unpack the Distribution. For package-based installations, replace the old packages with the new ones.
Note
For supported Linux distributions, the preferred method for replacing the MySQL packages is to use the MySQL software repositories; see Section 2.11.1.3, “Upgrading MySQL with the MySQL Yum Repository”, Section 2.11.1.4, “Upgrading MySQL with the MySQL APT Repository”, or Upgrading MySQL with the MySQL SLES Repository for instructions.
- Start the MySQL 5.7 server, using the existing data directory. For example:
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
Run mysql_upgrade. For example:
mysql_upgrade -u root -p
- mysql_upgrade examines all tables in all databases for incompatibilities with the current version of MySQL. mysql_upgrade also upgrades the mysql system database so that you can take advantage of new privileges or capabilities.
Note
mysql_upgrade does not upgrade the contents of the help tables. For upgrade instructions, see Section 5.1.11, “Server-Side Help”.
- Shut down and restart the MySQL server to ensure that any changes made to the system tables take effect. For example:
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/existing-datadir
Logical Upgrade
- Review the changes described in Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7” for steps to be performed before upgrading.
- Export your existing data from the previous MySQL version:
mysqldump -u root -p
--add-drop-table --routines --events
--all-databases --force > data-for-upgrade.sql
Note
Use the --routines and --events options with mysqldump (as shown above) if your databases include stored programs. The --all-databases option includes all databases in the dump, including the mysql database that holds the system tables.
Important
If you have tables that contain generated columns, use the mysqldump utility provided with MySQL 5.7.9 or higher to create your dump files. The mysqldump utility provided in earlier releases uses incorrect syntax for generated column definitions (Bug #20769542). You can use the INFORMATION_SCHEMA.COLUMNS table to identify tables with generated columns.
- Shut down the old MySQL server. For example:
mysqladmin -u root -p shutdown - Install MySQL 5.7. For installation instructions, see Chapter 2, Installing and Upgrading MySQL.
- Initialize a new data directory, as described at Section 2.10.1, “Initializing the Data Directory”. For example:
mysqld --initialize --datadir=/path/to/5.7-datadir
Copy the temporary 'root'@'localhost' password displayed to your screen or written to your error log for later use.
- Start the MySQL 5.7 server, using the new data directory. For example:
mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir
- Reset the root password:
shell> mysql -u root -p
Enter password: **** <- enter temporary root password
mysql> ALTER USER USER() IDENTIFIED BY 'your new password';
- Load the previously created dump file into the new MySQL server. For example:
mysql -u root -p --force < data-for-upgrade.sql
Note
It is not recommended to load a dump file when GTIDs are enabled on the server (gtid_mode=ON), if your dump file includes system tables. mysqldump issues DML instructions for the system tables which use the non-transactional MyISAM storage engine, and this combination is not permitted when GTIDs are enabled. Also be aware that loading a dump file from a server with GTIDs enabled, into another server with GTIDs enabled, causes different transaction identifiers to be generated.
- Run mysql_upgrade. For example:
mysql_upgrade -u root -p
mysql_upgrade examines all tables in all databases for incompatibilities with the current version of MySQL. mysql_upgrade also upgrades the mysql system database so that you can take advantage of new privileges or capabilities.
Note
mysql_upgrade does not upgrade the contents of the help tables. For upgrade instructions, see Section 5.1.11, “Server-Side Help”.
- Shut down and restart the MySQL server to ensure that any changes made to the system tables take effect. For example:
mysqladmin -u root -p shutdown
mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir
Upgrade Troubleshooting
- If problems occur, such as that the new mysqld server does not start, verify that you do not have an old my.cnf file from your previous installation. You can check this with the --print-defaults option (for example, mysqld --print-defaults). If this command displays anything other than the program name, you have an active my.cnf file that affects server or client operation.
- If, after an upgrade, you experience problems with compiled client programs, such as Commands out of sync or unexpected core dumps, you probably have used old header or library files when compiling your programs. In this case, check the date for your mysql.h file and libmysqlclient.a library to verify that they are from the new MySQL distribution. If not, recompile your programs with the new headers and libraries. Recompilation might also be necessary for programs compiled against the shared client library if the library major version number has changed (for example, from libmysqlclient.so.15 to libmysqlclient.so.16).
- If you have created a user-defined function (UDF) with a given name and upgrade MySQL to a version that implements a new built-in function with the same name, the UDF becomes inaccessible. To correct this, use DROP FUNCTION to drop the UDF, and then use CREATE FUNCTION to re-create the UDF with a different nonconflicting name. The same is true if the new version of MySQL implements a built-in function with the same name as an existing stored function. See Section 9.2.4, “Function Name Parsing and Resolution”, for the rules describing how the server interprets references to different kinds of functions.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/807718/viewspace-2151740/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/807718/viewspace-2151740/