温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

2.11.1 Mysql 升级 Upgrade Methods

发布时间:2020-08-11 17:02:12 来源:ITPUB博客 阅读:161 作者:steven_hua 栏目:MySQL数据库

1.升级方法

  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.
  2. 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.升级路径

  1. 仅支持General AvailabilityGA)版本之间的升级
  2. 5.65.7是支持的,升级的下一个版本之前建议升级到最新的版本,如先升级的5.6的最后一个版本,再升级的5.7
  3. 不支持跳版本升级, 如从5.5 5.7
  4. 小版本升级是支持的,如5.7.x 5.7.y

Upgrade within a release series is supported

 

3.开始之前

  1. 备份,包含系统库、系统表
  2. 查看不兼容的改变,see Features Removed in MySQL 5.7.
  3. 查看 Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7”. This section describes changes that may require action before or after upgrading.这部分描述了升级前后可能需要的执行变化。
  1. 如果你使用了replication复制,查看Section 16.4.3, “Upgrading a Replication Setup”.
  1. 如果你使用了 InnoDB  XA transactions在升级之前运行“XA RECOVER”来检查未提交的Xa事务,如果有结果返回,需要执行XA COMMIT or XA ROLLBACK语句来提交或回滚Xa事务

 

 

In-Place Upgrade

To perform an in-place upgrade:

  1. Review the changes described in Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7” for steps to be performed before upgrading.
  2. 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.

 

  1. Shut down the old MySQL server. For example:
    mysqladmin -u root -p shutdown

 

  1. 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.

 

  1. 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

 

  1. 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”.

 

  1. 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

 

  1. Review the changes described in Section 2.11.1.2, “Changes Affecting Upgrades to MySQL 5.7” for steps to be performed before upgrading.
  2. 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.

 

  1. Shut down the old MySQL server. For example:
    mysqladmin -u root -p shutdown
  2. Install MySQL 5.7. For installation instructions, see Chapter 2, Installing and Upgrading MySQL.
  3. 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.

  1. Start the MySQL 5.7 server, using the new data directory. For example:
    mysqld_safe --user=mysql --datadir=/path/to/5.7-datadir

 

  1. Reset the root password:

shell> mysql -u root -p
Enter password: ****  <- enter temporary root password

mysql> ALTER USER USER() IDENTIFIED BY 'your new password';

 

  1. 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.

 

  1. 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”.

  1. 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

 

  1. 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.
  2. 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).
  3. 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.
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI