如果你使用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
所以,设置为 innodb_data_file_path = /ibdata/ibdata1: 988M 就可以避免上述错误出现。
2、 删除InnoDB数据文件
操作步骤如下:
1.
2.
3.
4.
5.
6.
3、InnoDB的数据备份 InnoDB和MyISAM一样,也可以分为物理备份和逻辑备份,逻辑备份也是使用mysqldump工具,本节不再详述。下面我们这点介绍一下InnoDB的物理备份方法。MySQL本身并没有提供InnoDB存储的备份工具,因为InnoDB并不是MySQL公司所开发和拥有,而是属于一个第三方公司(www.innodb.com)。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
联系客服