千家信息网

DBA中如何升级InnoDB Plugin

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,DBA中如何升级InnoDB Plugin,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。我们将向读者详细介绍如何升级动态
千家信息网最后更新 2025年11月07日DBA中如何升级InnoDB Plugin

DBA中如何升级InnoDB Plugin,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

我们将向读者详细介绍如何升级动态InnoDB Plugin和升级静态编译的InnoDB Plugin,以及如何转换由1.0.2以前版本创建的压缩表。  

一、概述
   得益于MySQL的插件式存储引擎体系结构,InnoDB Plugin的升级变得非常简单,只需关闭MySQL,替换与平台有关的可执行文件,然后重启服务器即可。如果您希望升级并使用现有的数据库,那么必须关 闭MySQL,否则的话,新的插件在合并缓存的插入数据或者清空已删记录的时候就会出错。如果您的数据库中没有任何压缩表,在慢关机后,使用最新的 InnoDB Plugin处理起数据库来就不会遇到问题了。
  然而,如果您的数据库中含有压缩表的话,则不适合使用InnoDB Plugin 1.0.8。因为1.0.2版本的InnoDB Plugin引入了一个不兼容的特性,所以一些压缩表可能需要重建,具体转换步骤见后文。
  当然,我们可以使用mysqldump或其他的方法来重建我们的数据库。如果我们的数据库较小,或者各个表之间存在许多引用约束的话,那么这是一种较好的方法。
  需要注意的是,如果使用InnoDB Plugin 1.0.8访问您的数据库的话,就不要再试图用1.0.2之前的插件来访问它们了。
二、升级动态InnoDB Plugin
  在关闭包含InnoDB Plugin的MySQL服务器之前,我们必须启用慢关闭功能,设置如下所示:

双击代码全选
1SET GLOBAL innodb_fast_shutdown=0;

  在MySQL服务器在其中寻找插件的目录内,将旧InnoDB Plugin (ha_innodb_plugin.so或ha_innodb_plugin.dll)的可执行文件重新命名,以便在需要的时候可以恢复它们。过后,我 们也可以删除这些文件。插件所在的目录是由系统变量plugin_dir指定的。默认的位置通常是在basedir指定的目录的lib/plugin子目 录中。
  首先,我们需要根据自己的服务器平台、操作系统和MySQL版本来下载合适的程序包。然后利用相应的工具进行解压缩,在 Linux和Unix系统下通常使用tar,在Windows系统中通常使用WinZip等工具软件。将文件ha_innodb_plugin.so或 ha_innodb_plugin.dll复制至MySQL服务器在其中寻找插件的目录下。
  启动MySQL服务器。如果需要的话,可以按照后文介绍的方法来转换压缩表。
三、升级静态编译的InnoDB Plugin
   就像动态安装InnoDB Plugin一样,我们需要慢关闭MySQL服务器。如果您的MySQL是从源代码编译过来并用源代码树中的InnoDB Plugin替换了MySQL内建的InnoDB的话,那么实际上您就会得到一个特殊版本的包含InnoDB Plugin的mysqld可执行文件。
  如果您想升级到一个动态链接的InnoDB Plugin,则需要先卸载静态编译的InnoDB Plugin,然后再安装作为共享库发行的预编译InnoDB Plugin。
  如果您想从一个静态编译的InnoDB Plugin版本升级到另一个静态编译的InnoDB Plugin版本的话,则必须先重新构建一个mysqld可执行文件,关闭服务器,然后替换mysqld可执行文件,再启动服务器。
  不管怎样,如果数据库含有压缩表的话,务必按照后文介绍的方法转换压缩表。
四、转换由1.0.2以前版本创建的压缩表
  InnoDB Plugin的1.0.2版本引入了一个不兼容的压缩表格式。这意味着,InnoDB Plugin早期版本创建的一些压缩表,必须使用更大的KEY_BLOCK_SIZE重新构建之后才能够继续使用。
   升级到InnoDB Plugin 1.0.2或更高版本的时候,如果必须保持现有的数据库的话,则需要慢关闭正在运行早先版本InnoDB Plugin的MySQL。之后,确定出哪些压缩表需要转换,继而使用新版本的InnoDB Plugin升级这些表。具体操作如下所示。
下面介绍如何处理由1.0.0版本或1.0.1版本的InnoDB Plugin所创建的压缩表。由于新版本中引入了一个不兼容的特性,所以新InnoDB Plugin从压缩表清除已删记录或者合并缓冲的插入记录时,会遇到问题。然而,也不是所有的压缩表都需要重新构建。这里我们将为读者介绍如何识别和处理 这些需要重建的压缩表。
  如果现有的数据库包含有之前版本InnoDB Plugin所创建的表的话,必须使用慢关闭使用旧的InnoDB Plugin的MySQL服务器。即,在关闭InnoDB Plugin旧实例之前,需要设置SET GLOBAL innodb_fast_shutdown=0。
  在启动升级了InnoDB Plugin的MySQL服务器之后,必须检查压缩表是否已经转换。首先,启用InnoDB的strict模式进行更为细致的错误检查:SET SESSION innodb_strict_mode = 1。然后,为每一个压缩表生成一个对应的新表。我们可以通过以下步骤完成:
  1. 列出压缩表:

双击代码全选

1

2

3

4

5

SELECT table_schema,

table_name  

FROM information_schema.tables  

WHERE engine=’innodb’ A

ND row_format=’COMPRESSED’

  2. 对于每个表,显示其表的定义:SHOW CREATE TABLE table_schema.table_nameG
  3. 使用不同的表名执行CREATE TABLE语句。
  4. 如果表创建成功,删除新建的表,继续处理下一个压缩表。
  5. 如果表创建失败,则尝试用更大的KEY_BLOCK_SIZE,直到成功为止。然后删除新创的表,使用刚才成功执行CREATE TABLE的KEY_BLOCK_SIZE对原始表执行ALTER TABLE。
   如果某些特殊的表不允许增加KEY_BLOCK_SIZE,则可以用较短的列索引长度来重建表。这是因为用于索引的列前缀会占用B树结点中的大量空间。 较短的前缀减少了索引的精选,但是索引记录会更短,以便它们适于页面大小。较短的前缀还意味着更多的索引项适于B树结点,从而提高了效率。
  如果各个表之间存在引用约束的话,上述过程将会更加复杂,所以更好的选择是联合使用旧的InnoDB Plugin和mysqldump,然后用InnoDB Plugin 1.0.2把数据载入新的数据库中。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

版本 数据 升级 数据库 服务器 服务 文件 编译 插件 静态 动态 方法 目录 系统 索引 成功 前缀 后文 时候 处理 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 河南工控软件开发哪家实惠 软件开发项目命名规范 安装路由器时用不用注册服务器 28元服务器 台州世通网络技术有限公司 定时任务实现每分钟查询数据库 软件开发组维护组职责 吉菲特网络技术 万全t280服务器怎么拆侧边盖 数据库技术与应用教学大纲 服务器iis网站管理 tbc哪个服务器小战场好打 安徽专业网络技术服务代理商 梦幻西游各服务器门派闯关统计 软件开发测试实训室是干嘛的 河北省网络安全技术专业就业 北京有几个互联网科技公司 在北京做软件开发工资多少 sql数据库怎么提高安全性 软件开发公司 金融 区块链技术用到了哪种数据库 西门子宏数据库 数据库两个表互通 培训软件开发有用吗 河北本科网络安全 我的世界理想乡服务器推荐 软件开发的 相关书籍 服务器热备盘怎么做 数据库系统工程师能做啥 农行软件开发中心武汉月薪
0