分享

InnoDB数据文件管理

 用勿龍潛 2012-03-08

InnoDB数据文件管理

如果你使用InnoDB存储引擎,那么InnoDB数据文件管理将是你要面临的一个问题,下面介绍如何正确的添加、删除数据文件以及添加数据文件时常见问题解决。

1、添加InnoDB数据文件

了解了InnoDB表空间的配置方法后,我们来尝试增加表空间的数据文件,在通常情况下,我们会遇到一个问题就是一个表空间的某个数据文件所在的磁盘空间磁盘紧张,这时需要为表空间增加一个新位置的新数据文件,同时关闭原来数据文件的自动扩展,这样才能保证不会因为磁盘满导致MySQL出现问题。

举例:

innodb_data_home_dir =

innodb_data_file_path = /ibdata/ibdata1:10M:autoextend

假设/ibdata/下可用空间为1G ,这个数据文件过一段时间已经长到988MB。这必须添加一个新位置的新数据文件,来保证充裕的表空间,下面是添加一个可扩展数据文件之后的配置行:

innodb_data_home_dir =

innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend

添加完成后,重启MySQL服务,这时会停止对/ibdata/ibdata1数据文件的扩展,并创建新的数据文件/disk2/ibdata2

MySQL重启时会看到如下日志:

--日志内容--

080909 19:09:26 InnoDB: Data file /disk2/ibdata2 did not exist: new to be created

080909 19:09:26 InnoDB: Setting file /disk2/ibdata2 size to 50 MB

InnoDB: Database physically writes the file full: wait...

另外,很多网友在增加表空间的数据文件时通常会遇到下面的问题,导致MySQL无法启动或启动后无法正常工作。

现象: MySQL日志中出现如下提示

080909 19:07:12 mysqld started

InnoDB: Error: data file /ibdata/ibdata1 is of a different size

InnoDB: 63872 pages (rounded down to MB)

InnoDB: than specified in the .cnf file 63872 pages!

InnoDB: Could not open or create data files.

出现上述问题的主要原因是“innodb_data_file_path = /ibdata/ibdata1:900M”中数据文件大小指定不正确,这里给出了一个计算公式可以解决网友的这个问题

计算公式:

64pages相当于1M
     63872/64=988M

所以,设置为 innodb_data_file_path = /ibdata/ibdata1: 988M 就可以避免上述错误出现。

 

2、 删除InnoDB数据文件

操作步骤如下:

1.    使用mysqldump转储所有InnoDB表。

2.    停止服务器。

3.    删除所有已存在的表空间文件。

4.    配置新表空间。

5.    重启服务器。

6.    导入转储文件。

 

3、InnoDB的数据备份

InnoDBMyISAM一样,也可以分为物理备份和逻辑备份,逻辑备份也是使用mysqldump工具,本节不再详述。下面我们这点介绍一下InnoDB的物理备份方法。MySQL本身并没有提供InnoDB存储的备份工具,因为InnoDB并不是MySQL公司所开发和拥有,而是属于一个第三方公司(www.)。InnoDB目前也只有通过该公司的备份工具ibbackup来进行物理热备份。此工具是收费的,不能免费使用。下面我们介绍一下此工具的使用方法:

3.1 编辑用于启动的配置文件my.cnf和用于备份的配置文件my2.cnf

my.cnf的例子如下:

[mysqld]

datadir = /home/mysql/data

innodb_data_home_dir = /home/mysql/data

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = /home/mysql/data

set-variable = innodb_log_files_in_group=2

set-variable = innodb_log_file_size=20M

如果想备份到/home/mysql/backup,则my2.cnf的例子如下:

[mysqld]

datadir = /home/mysql/backup

innodb_data_home_dir = /home/mysql/backup

innodb_data_file_path = ibdata1:10M:autoextend

innodb_log_group_home_dir = /home/mysql/backup

set-variable = innodb_log_files_in_group=2

set-variable = innodb_log_file_size=20M

3.2 开始执行备份:

ibbackup my.cnf my2.cnf

       备份数据将存放在my2.cnf参数文件所指定的数据目录下。关于此工具更详细的使用方法,可以参考其官方使用文档(http://www./support/documentation/innodb-hot-backup-manual/#history.innobackup

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多