给innodb表空间添加数据文件
给mysql innodb的表空间添加新数据文件太麻烦了。
需要编辑my.ini文件中innodb_data_file_path条目。且需要调整已有数据文件的大小,比方说现在autoextend 的/ibdata/ibdata1为18.5M,而在旧的my.ini中为10M,则需要修改为innodb_data_file_path = /ibdata/ibdata1:19M; 且必须是19M,如果指定20M,就会报错。
然后添加新文件到innodb_data_file_path ,”/ibdata/ibdata1:19M;/disk2/ibdata2:50M”.这个ibdata2先不能在文件系统存在,重新启动后mysql将会自动创建并识别这个新增加的这个ibdata2。
重新启动mysql,会有纪录增加数据文件的日志。
InnoDB: Error: data file C:\MySQL InnoDB Datafiles\ibdata1 is of a different size
InnoDB: 1152 pages (rounded down to MB)
InnoDB: than specified in the .cnf file 1280 pages!
InnoDB: Could not open or create data files.
InnoDB: If you tried to add new data files, and it failed here,
InnoDB: you should now edit innodb_data_file_path in my.cnf back
InnoDB: to what it was, and remove the new ibdata files InnoDB created
InnoDB: in this failed attempt. InnoDB only wrote those files full of
InnoDB: zeros, but did not yet use them in any way. But be careful: do not
InnoDB: remove old data files which contain your precious data!
080504 13:34:42 [ERROR] Default storage engine (InnoDB) is not available
080504 13:34:42 [ERROR] Aborting080504 13:34:42 [Note] C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt: Shutdown complete
080504 13:36:25 InnoDB: Data file C:\MySQL InnoDB Datafiles\ibdata2 did not exist: new to be created
080504 13:36:25 InnoDB: Setting file C:\MySQL InnoDB Datafiles\ibdata2 size to 10 MB
InnoDB: Database physically writes the file full: wait…
080504 13:36:25 InnoDB: Data file C:\MySQL InnoDB Datafiles\ibdata3 did not exist: new to be created
080504 13:36:25 InnoDB: Setting file C:\MySQL InnoDB Datafiles\ibdata3 size to 10 MB
InnoDB: Database physically writes the file full: wait…
080504 13:36:27 InnoDB: Started; log sequence number 0 1134722
080504 13:36:27 [Note] C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt: ready for connections.
Version: ‘5.0.27-community-nt-log’ socket: ” port: 3306 MySQL Community Edition (GPL)
但这个重起操作,实在是影响了存储引擎innodb的高可用效果。
为了添加一个数据文件到表空间中,首先要关闭 MySQL 数据库,编辑 my.cnf 文件,在 innodb_data_file_path 中添加一个新文件,然后再重新启动服务。
如果,最后一个文件以关键字 autoextend 来描述,那么编辑 my.cnf 的过程如下所示。必须检查最后一个文件的尺寸,并使它向下接近于 1024 * 1024 bytes (= 1 MB) 的倍数,并在 innodb_data_file_path 中明确指定它的尺寸。然后你可以添加另一个数据文件。记住只有 innodb_data_file_path 中的最后一个文件可以被指定为 auto-extending。
一个例子:假设起先仅仅只有一个 auto-extending 数据文件 ibdata1 ,这个文件越越接近于 988 MB。下面是添加了另一个 auto-extending 数据文件后的可能示例 。
innodb_data_home_dir =
innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
通常不能移除 InnoDB 的数据文件。为了减小数据文件的大小,你必须使用 mysqldump 来转储(dump)所有的数据表,再重新建立一个新的数据库,并将数据导入新的数据库中。
如果希望改变 InnoDB 的日志文件数目,必须先关闭 MySQL 并确定完全关闭而没有发生任何错误。将旧的日志文件复制到其它安全的地方,以防在关闭服务时发生了错误而需要恢复数据库。删除所有日志文件,编辑 my.cnf,再重新启动 MySQL。InnoDB 在启动时将会提示它在建立新的日志文件。




















也开始整MySQL了?
我都是一口气加上一两百G的文件先,不开autoextend。等不行了再找时间关机加一次:)