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_format version 1.1
- Conversion of a MySQL tables to other table types.
轉換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。
如果沒指定表,那麼數據庫中的所有表將會被轉換。
- The following options are available:
- --force
- Continue even if there is some error.
如果碰到錯誤強制進行轉換。
- --help or --Information
- Shows this help
查看幫助。
- --host='host name' (Default localhost)
- Host name where the database server is located.
轉換的主機名,默認為本地主機(localhost)。
- --password='password'
- Password for the current user.
當前進行轉換用戶的密碼。
- --port=port
- TCP/IP port to connect to if host is not "localhost".
如果不是以localhost 連接的話,請指定端口。
- --socket='/path/to/socket'
- Socket to connect with.
SOCKET文件存在的位置SOCKET是進程間通信所用到的)。
- --ENGINE='table-type'
- Converts tables to the given table type (Default: myisam)
- MySQL 3.23 supports at least the BDB, ISAM and MYISAM types.
存儲引擎,默認為MYISAM,這裡要注意,我測試的時候,要修改這個PERL腳本,如果你把庫轉成INNODB,就在腳本裡把MYISAM寫成INNODB。
- --user='user_name'
- User name to log into the SQL server.
連接的用戶名。
- --verbose
- This is a test specific option that is only used when debugging a test.
- Print more information about what is going on.
- --version
- Shows the version of this program.
查看工具的版本信息。
用法:我是用本機進行測試,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---- 1 mysql mysql 12914 03-02 22:55 action_log.frm
- -rw-rw---- 1 mysql mysql 8900 03-02 22:55 alarm_log.frm
- -rw-rw---- 1 mysql mysql 8898 03-02 22:55 check_data.frm
- -rw-rw---- 1 mysql mysql 8836 03-02 22:55 check_data_log.frm
- -rw-rw---- 1 mysql mysql 1708 03-02 22:55 check_data_log.par
- -rw-rw---- 1 mysql mysql 8898 03-02 22:55 check_data_tmp.frm
- -rw-rw---- 1 mysql mysql 9096 03-02 22:55 checkpoint.frm
- …………………………………….
只有表的結構文件,看看表空間有沒有增長。
- [root@test ~]# ll -lh /opt/mysql-data/ib*
- -rw-rw---- 1 mysql mysql 34M 03-02 23:18 /opt/mysql-data/ibdata1
- -rw-rw---- 1 mysql mysql 5.0M 03-02 23:18 /opt/mysql-data/ib_logfile0
- -rw-rw---- 1 mysql mysql 5.0M 12-22 20: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_format mo --user='root' --password='mysql' --socket='/tmp/mysql.sock'
- [root@test ~]#
成功完成,再看看數據文件:
- 總計 2568
- -rw-rw---- 1 mysql mysql 12914 03-02 23:18 action_log.frm
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 action_log.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 action_log.MYI
- -rw-rw---- 1 mysql mysql 8900 03-02 23:18 alarm_log.frm
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 alarm_log.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 alarm_log.MYI
- -rw-rw---- 1 mysql mysql 8898 03-02 23:18 check_data.frm
- -rw-rw---- 1 mysql mysql 8836 03-02 23:18 check_data_log.frm
- -rw-rw---- 1 mysql mysql 1708 03-02 23:18 check_data_log.par
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p0.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p0.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p100.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p100.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p101.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p101.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p102.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p102.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p103.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p103.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p104.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p104.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p105.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p105.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p106.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p106.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p107.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p107.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p108.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p108.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p109.MYD
- -rw-rw---- 1 mysql mysql 1024 03-02 23:18 check_data_log#P#p109.MYI
- -rw-rw---- 1 mysql mysql 0 03-02 23:18 check_data_log#P#p10.MYD
已經成功轉換成MYISAM引擎。
關於使用mysql_convert_table_format工具來批量轉換MySQL數據庫表的存儲引擎的方法就介紹到這裡了,希望本次的介紹能夠對您有所收獲。