DBA应用技巧:如何升级InnoDB Plugin

2011-03-23 10:09 康凯 ITPUB 字号:T | T

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

AD:51CTO 网+首届APP创新评选大赛火热启动——超百万资源等你拿!

本文中,我们将向读者详细介绍如何升级动态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服务器之前,我们必须启用慢关闭功能,设置如下所示:

  1. SET 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. SELECT table_schema, table_name
  2. FROM information_schema.tables
  3. WHERE engine=’innodb’ AND row_format=’COMPRESSED’;

2. 对于每个表,显示其表的定义:SHOW CREATE TABLE table_schema.table_name\G

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把数据载入新的数据库中。

五、小结

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

DBA应用技巧:如何升级InnoDB Plugin的更多相关文章

  1. InnoDB Plugin文件格式(概述)

    本文将介绍InnoDB Plugin数据表格式的基本概念. 1. 配置参数innodb_file_format 这是一个很容易混淆的概念.目前,在InnoDB Plugin(1.0.6)配置文件中in ...

  2. 13-MySQL DBA笔记-迁移、升级、备份、恢复数据库

    第13章 迁移.升级.备份.恢复数据库本章将为读者讲述数据库的各种维护任务:迁移.升级.备份和恢复.因为每个人熟悉的工具不同,其对应的迁移.升级.备份和恢复的方式也都略有不同,本书将尽量对笔者认为最具 ...

  3. Kubernetes实践技巧:升级为集群

    高可用 前面我们课程中的集群是单 master 的集群,对于生产环境风险太大了,非常有必要做一个高可用的集群,这里的高可用主要是针对控制面板来说的,比如 kube-apiserver.etcd.kub ...

  4. 升级DLL plugin 到AutoDllPlugin

    为了使打包构建速度加快使用的DLLPlugin,但是我们还是需要手动把dll文件引入文件, HTMLwebpackplugin 结合autoDLLplugin可以自动引入打包文件, 十份地方便

  5. [MySQL Reference Manual]14 InnoDB存储引擎

    14 InnoDB存储引擎 14 InnoDB存储引擎 14.1 InnoDB说明 14.1.1 InnoDB作为默认存储引擎 14.1.1.1 存储引擎的趋势 14.1.1.2 InnoDB变成默认 ...

  6. MySQL 升级详细步骤 (包括 Percona)

    MySQL 升级步骤 MySQL 5.1.72 升级到 MySQL 5.5.36 鉴于我在升级的时候遇到的麻烦问题,我觉得有必要把一些细节说清楚,免得引起误解了.感觉官方文档上的升级步骤写的比较简单, ...

  7. Centos7.5基于MySQL5.7的 InnoDB Cluster 多节点高可用集群环境部署记录

    一.   MySQL InnoDB Cluster 介绍MySQL的高可用架构无论是社区还是官方,一直在技术上进行探索,这么多年提出了多种解决方案,比如MMM, MHA, NDB Cluster, G ...

  8. INNODB引擎概述

    INNODB存储引擎的历史概述: INNODB存储引擎是OLTP应用中核心表的首选存储引擎. INNODB存储引擎包含在所有mysql数据库的二进制发行版本中.早期其版本随着mysql数据库的更新而更 ...

  9. (转)Mysql技术内幕InnoDB存储引擎-表&索引算法和锁

    表 原文:http://yingminxing.com/mysql%E6%8A%80%E6%9C%AF%E5%86%85%E5%B9%95innodb%E5%AD%98%E5%82%A8%E5%BC% ...

随机推荐

  1. Linux下怎么查看当前系统的版本

    Linux下怎么查看当前系统的版本:   uname -r 功能说明:uname用来获取电脑和操作系统的相关信息. 语 法:uname [-amnrsvpio][--help][--version] ...

  2. 转载文章----.NET 框架浅析

    转载地址:http://www.cnblogs.com/yangmingming/archive/2010/01/27/1657850.html .NET 框架概要: .NET框架,即.NET Fra ...

  3. 1.2 《硬啃设计模式》 第2章 学习设计模式需掌握的UML知识

    要看懂设计模式,你需要懂类图(Class Diagram),也需要懂一点对象图(Object Diagram),下面介绍一些UML的必要知识,以便你学习设计模式. 属性.操作 下图简单介绍类的属性和操 ...

  4. gitlab+gerrit+jenkins持续集成框架

    1.持续集成之gitlab+gerrit+jenkins 1.1. GitLab 1.1.1. 简介 GitLab 是一个使用使用Ruby on Rails搭建的,用于仓库管理系统的开源项目.使用Gi ...

  5. [css]我要用css画幅画(一)

    几年前开始就一直想用css画幅画. 今天才真正开始, 从简单的开始. 作为一个工作压力那么大的程序员,我首先要画一个太阳. html如下: <!DOCTYPE html> <html ...

  6. 判断字符串的首字母 ---------startsWith

    列: {                                            xtype : 'gridcolumn',                                ...

  7. 发现IE6的一个BUG,添加受信任站点后,页面无法跳转

    最近客户爆了一个问题,说是最近使用我们的系统,一登录浏览器就直接关闭了.   经排查,属于IE6设置受信任站点的问题,受信任站点设置了通配符,如 http://192.168.1.* 这样的格式,而我 ...

  8. Windows Phone Studio-任何人都能开发Windows Phone App的在线工具

    在一段时间的内测以后,微软于今天早些时候发布了其Windows Phone应用开发的在线工具,名字叫做Windows Phone Studio.其意义在于,通过简单的内容添加和样式选择,实现Windo ...

  9. 预写式日志(Write-Ahead Logging (WAL))

    SQL Server中使用了WAL(Write-Ahead Logging)技术来保证事务日志的ACID特性.而且大大减少了IO操作. WAL的核心思想是:在数据写入到数据库之前,先写入到日志.再将日 ...

  10. 中科院分词ICTCLAS5.0_JNI 使用方法

    1.简介 中国科学院计算技术研究所在多年研究基础上,耗时一年研制出了基于多层隐码模型的汉语词法分析系统 ICTCLAS(Institute of Computing Technology, Chine ...