mysql_convert_table_format工具可以批量转换MYSQL数据库表的存储引擎,如果是RPM安装一般在/usr/bin 或者/usr/sbin下。本文我们主要介绍利用mysql_convert_table_format工具将MySQL数据库表的存储引擎批量转换为MYISAM引擎的方法,接下来就让我们来一起了解这一部分内容。

首先执行下面的代码:

    [root@test~]#mysql_convert_table_format /usr/sbin/mysql_convert_table_formatversion1.1 ConversionofaMySQLtablestoothertabletypes.

转换MYSQL表成其它表的类型,如:INNODB ,MEMORY等。

Usage: /usr/sbin/mysql_convert_table_format database [tables]。

用法: /usr/sbin/mysql_convert_table_format 数据库名 表名,也就是可以单独指定全库,或者全表,类似mysqldump。

If no tables has been specifed, all tables in the database will be converted。

如果没指定表,那么数据库中的所有表将会被转换。

    Thefollowingoptionsareavailable: --force Continueevenifthereissomeerror.

如果碰到错误强制进行转换。

    --helpor--Information Showsthishelp

查看帮助。

    --host='hostname'(Defaultlocalhost) Hostnamewherethedatabaseserverislocated.

转换的主机名,默认为本地主机(localhost)。

    --password='password'Passwordforthecurrentuser.

当前进行转换用户的密码。

    --port=port TCP/IPporttoconnecttoifhostisnot"localhost".

如果不是以localhost 连接的话,请指定端口。

    --socket='/path/to/socket'Sockettoconnectwith.

SOCKET文件存在的位置(SOCKET是进程间通信所用到的)。

    --ENGINE='table-type'Convertstablestothegiventabletype(Default:myisam) MySQL3.23supportsatleasttheBDB,ISAMandMYISAMtypes.

存储引擎,默认为MYISAM,这里要注意,我测试的时候,要修改这个PERL脚本,如果你把库转成INNODB,就在脚本里把MYISAM写成INNODB。

    --user='user_name'UsernametologintotheSQLserver.

连接的用户名。

    --verbose Thisisatestspecificoptionthatisonlyusedwhendebuggingatest. Printmoreinformationaboutwhatisgoingon. --version Showstheversionofthisprogram.

查看工具的版本信息。

用法:我是用本机进行测试,OS:RHEL5.2 MYSQL:5.1.30

mysql_convert_table_format mo –user=’root’ –password=’mysql’ –force –socket=’/tmp/mysql.sock’

把数据库mo中的所有表转换成MYISAM引擎。

查看数据文件目录。

    [root@test~]#ll/opt/mysql-data/mo/ 总计960 -rw-rw----1mysqlmysql1291403-0222:55action_log.frm -rw-rw----1mysqlmysql890003-0222:55alarm_log.frm -rw-rw----1mysqlmysql889803-0222:55check_data.frm -rw-rw----1mysqlmysql883603-0222:55check_data_log.frm -rw-rw----1mysqlmysql170803-0222:55check_data_log.par -rw-rw----1mysqlmysql889803-0222:55check_data_tmp.frm -rw-rw----1mysqlmysql909603-0222:55checkpoint.frm …………………………………….

只有表的结构文件,看看表空间有没有增长。

    [root@test~]#ll-lh/opt/mysql-data/ib* -rw-rw----1mysqlmysql34M03-0223:18/opt/mysql-data/ibdata1 -rw-rw----1mysqlmysql5.0M03-0223:18/opt/mysql-data/ib_logfile0 -rw-rw----1mysqlmysql5.0M12-2220:19/opt/mysql-data/ib_logfile1

默认没有用INNODB的是10M,现在我的变成30M了。

修改工具

把MYISAM修改成INNODB

Vi /usr/local/mysql/bin/mysql_convert_table_format

把第26行$opt_type=”innodb” 改成$opt_type=”myisam”

用工具进行库的转换

    [root@test~]#mysql_convert_table_formatmo--user='root'--password='mysql'--socket='/tmp/mysql.sock'[root@test~]#

成功完成,再看看数据文件:

    总计2568 -rw-rw----1mysqlmysql1291403-0223:18action_log.frm -rw-rw----1mysqlmysql003-0223:18action_log.MYD -rw-rw----1mysqlmysql102403-0223:18action_log.MYI -rw-rw----1mysqlmysql890003-0223:18alarm_log.frm -rw-rw----1mysqlmysql003-0223:18alarm_log.MYD -rw-rw----1mysqlmysql102403-0223:18alarm_log.MYI -rw-rw----1mysqlmysql889803-0223:18check_data.frm -rw-rw----1mysqlmysql883603-0223:18check_data_log.frm -rw-rw----1mysqlmysql170803-0223:18check_data_log.par -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p0.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p0.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p100.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p100.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p101.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p101.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p102.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p102.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p103.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p103.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p104.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p104.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p105.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p105.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p106.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p106.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p107.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p107.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p108.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p108.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p109.MYD -rw-rw----1mysqlmysql102403-0223:18check_data_log#P#p109.MYI -rw-rw----1mysqlmysql003-0223:18check_data_log#P#p10.MYD

已经成功转换成MYISAM引擎。

关于使用mysql_convert_table_format工具来批量转换MySQL数据库表的存储引擎的方法就介绍到这里了,希望本次的介绍能够对您有所收获。

【编辑推荐】

    关于MySQL数据库设计的几点优化措施MySQL数据库如何恰到好处地使用索引?PHP的MySQL库之Pdo-Mysql与Mysqli性能对比一个mysql数据库配置问题导致登录失败的解决方案MySQL数据库打开文件太多导致mysqldump出错的解决