千家信息网

‘In Place’ 帮助MySQL5.0直接升级至5.7

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,下文主要给大家带来'In Place' 帮助MySQL5.0直接升级至5.7,希望这些内容能够带给大家实际用处,这也是我编辑'In Place' 帮助MySQL5.0直接升级至5.7这篇文章的主要目的
千家信息网最后更新 2026年11月02日‘In Place’ 帮助MySQL5.0直接升级至5.7

下文主要给大家带来'In Place' 帮助MySQL5.0直接升级至5.7,希望这些内容能够带给大家实际用处,这也是我编辑'In Place' 帮助MySQL5.0直接升级至5.7这篇文章的主要目的。好了,废话不多说,大家直接看下文吧。

'In Place' 升级比'Dump'升级要快,因为你省去了导入数据的步骤。这样节省了时间,但升级前的备份就更加重要,因为你就是在原始目录上执行升级操作。你使用相同的数据文件,你就不能使用一些需要重建数据库才能使用的新功能,比如创建undo tablespaces(在5.6.3版本引入)或将已经存在的表改到独立表空间中(innodb_file_per_table 在5.6.6开始支持)。

我使用如下步骤进行升级:

  1. 启动5.0.96版本实例,导入sakila schema数据。为了简单,使用 --no-defaults。

    $ cd $ ./scripts/mysql_install_db --no-defaults --datadir= --basedir=.$ ./bin/mysqld_safe --no-defaults --datadir= --basedir=. --port= --socket= &$ ./bin/mysql -uroot --socket= --execute="create database sakila;"$ ./bin/mysql -uroot --socket= --execute="source sakila-schema.sql" --database=sakila$ ./bin/mysql -uroot --socket= --execute="source sakila-data.sql" --database=sakila
  2. 关闭数据库服务。这是你备份数据库的好时间。然后,进入新版本MySQL的文件夹,启动数据库。使用相同的数据目录,所以你的所有数据都在中

    $ cd $ ./bin/mysqladmin -uroot --socket= shutdown$ cd $ ./bin/mysqld_safe --no-defaults --datadir= --basedir=. --port=< PORT> --socket=  --skip-grant-tables  &

    请注意,当第一次启动5.7版本数据库时,必须使用 --skip-grant-tables。

  3. 运行 mysql_upgrade。这样会升级所有的系统表和检查用户库。

    $ ./bin/mysql_upgrade -uroot --socket=
  4. 导入帮助表(可选)

    $ ./bin/mysql -uroot --socket= --execute="source ./share/fill_help_tables.sql" mysql
  5. 重启MySQL服务

    $ ./bin/mysqladmin -uroot --socket= shutdown$ ./bin/mysqld_safe --no-defaults --datadir= --basedir=. --port= --socket= &
  6. 运行mysqlcheck检查数据库状态

    $ ./bin/mysqlcheck -uroot --socket= --all-databases

如果从5.0.96升级,这种升级方法可能需要重建一些表或触发器。在本文使用的sakila 条件下,我收到了下面的警告信息:

Warning  : Triggers for table `sakila`.`customer` have no creation contextWarning  : Triggers for table `sakila`.`film` have no creation contextWarning  : Triggers for table `sakila`.`payment` have no creation contextWarning  : Triggers for table `sakila`.`rental` have no creation context

由于触发器存储的元数据的更改,需要重载。我使用下面的步骤重建触发器:

  1. 使用mysqldump导出触发器

    $ ./bin/mysqldump --socket= -uroot --triggers --no-create-db --no-data --no-create-info --all-databases > addtriggers.sql
  2. 生成一个sql去删掉存在的触发器。排除sys库,因为上面的mysqldump不会导出sys库中的触发器。

    mysql> SELECT CONCAT('DROP TRIGGER ', TRIGGER_SCHEMA, '.',                  TRIGGER_NAME, ';')          FROM INFORMATION_SCHEMA.TRIGGERS          WHERE trigger_schema not in ('sys')           INTO OUTFILE 'droptriggers.sql';
  3. 删掉存在的触发器

    $ ./bin/mysql --socket= -uroot --execute="source droptriggers.sql"
  4. 重载触发器

    $ ./bin/mysql --socket= -uroot --execute="source addtriggers.sql"
  5. 运行mysqlcheck

    $ ./bin/mysqlcheck -uroot --socket= --all-databases

使用上面的步骤从5.0.96、5.1.73、5.5.46和5.6.27 升级到5.7.9,均是成功的。使用mysqlcheck,统计所有库的表、列和程序的数量,运行基础的select/insert/update/delete 语句并执行、调用用户函数和存储过程来进行验证。

(注:在这篇文章写的时候,还不支持5.5到5.7版本的复制,在5.7.13版本时,修复了该bug)

对于以上关于'In Place' 帮助MySQL5.0直接升级至5.7,大家是不是觉得非常有帮助。如果需要了解更多内容,请继续关注我们的行业资讯,相信你会喜欢上这些内容的。

升级 数据 触发器 数据库 帮助 版本 步骤 面的 运行 内容 相同 下文 备份 文件 时间 用户 目录 篇文章 存储 支持 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 科技赋能下的互联网金融 互联网金融 科技金融 华宇互联网科技 互联网科技作文 互联网科技大会 居家互联网科技有限公司 互联网科技素材视频竖屏 顺网科技2021年互联网排名 汉立互联网科技有限公司联系电话 互联网系的金融科技公司 互联网金融科技公司干啥的 世界互联网科技公司市值排名 中国航天科技大学国际工业互联网 杭州壁岐互联网科技有限公司 为客找房互联网科技公司怎么样 互联网科技职业技能培训学校 保山浩联互联网科技有限公司 互联网科技大佬云集 互联网领先科技成果宣传视频 利用互联网等科技手段 互联网科技公司排名 互联网通讯科技 金融科技还是互联网 金融科技创新监管互联网金融 互联网 科技 互联网科技缩写 狮子座互联网科技培训 茂名市互联网科技产业园 全球顶尖互联网科技公司 广州梦谷互联网科技有限公司领导
0