天天看點

Mysql更換MyISAM存儲引擎為Innodb的操作記錄

一般情況下,mysql會預設提供多種存儲引擎,可以通過下面的檢視:

1)檢視mysql是否安裝了innodb插件。

通過下面的指令結果可知,已經安裝了innodb插件。

1

2

3

4

5

6

7

8

9

10

11

12

13

<code>mysql&gt; show plugins;</code>

<code>+</code><code>------------+--------+----------------+---------+---------+</code>

<code>| </code><code>Name</code>       <code>| Status | Type           | Library | License |</code>

<code>| binlog     | ACTIVE | STORAGE ENGINE | </code><code>NULL</code>    <code>| GPL     |</code>

<code>| partition  | ACTIVE | STORAGE ENGINE | </code><code>NULL</code>    <code>| GPL     |</code>

<code>| CSV        | ACTIVE | STORAGE ENGINE | </code><code>NULL</code>    <code>| GPL     |</code>

<code>| MEMORY     | ACTIVE | STORAGE ENGINE | </code><code>NULL</code>    <code>| GPL     |</code>

<code>| InnoDB     | ACTIVE | STORAGE ENGINE | </code><code>NULL</code>    <code>| GPL     |</code>

<code>| MyISAM     | ACTIVE | STORAGE ENGINE | </code><code>NULL</code>    <code>| GPL     |</code>

<code>| MRG_MYISAM | ACTIVE | STORAGE ENGINE | </code><code>NULL</code>    <code>| GPL     |</code>

<code>7 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>

----------------------------------------------------------------------

如果發現沒有安裝innodb插件,可以執行下面語句進行安裝: 

mysql&gt; install plugin innodb soname 'ha_innodb.so';

2)檢視mysql現在已提供什麼存儲引擎:

<code>mysql&gt; show engines;</code>

<code>+</code><code>------------+---------+------------------------------------------------------------+--------------+------+------------+</code>

<code>| Engine     | Support | Comment                                                    | Transactions | XA   | Savepoints |</code>

<code>| MRG_MYISAM | YES     | Collection </code><code>of</code> <code>identical MyISAM tables                      | </code><code>NO</code>           <code>| </code><code>NO</code>   <code>| </code><code>NO</code>         <code>|</code>

<code>| CSV        | YES     | CSV storage engine                                         | </code><code>NO</code>           <code>| </code><code>NO</code>   <code>| </code><code>NO</code>         <code>|</code>

<code>| MyISAM     | </code><code>DEFAULT</code> <code>| </code><code>Default</code> <code>engine </code><code>as</code> <code>of</code> <code>MySQL 3.23 </code><code>with</code> <code>great performance     | </code><code>NO</code>           <code>| </code><code>NO</code>   <code>| </code><code>NO</code>         <code>|</code>

<code>| InnoDB     | YES     | Supports transactions, row-</code><code>level</code> <code>locking, </code><code>and</code> <code>foreign</code> <code>keys | YES          | YES  | YES        |</code>

<code>| MEMORY     | YES     | Hash based, stored </code><code>in</code> <code>memory, useful </code><code>for</code> <code>temporary</code> <code>tables  | </code><code>NO</code>           <code>| </code><code>NO</code>   <code>| </code><code>NO</code>         <code>|</code>

<code>5 </code><code>rows</code> <code>in</code> <code>set</code> <code>(0.00 sec)</code>

3)檢視mysql目前預設的存儲引擎:

<code>mysql&gt; show variables </code><code>like</code> <code>'%storage_engine%'</code><code>;</code>

<code>+</code><code>----------------+--------+</code>

<code>| Variable_name  | Value  |</code>

<code>| storage_engine | MyISAM |</code>

<code>1 row </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

4)看某個表用了什麼引擎(在顯示結果裡參數engine後面的就表示該表目前用的存儲引擎):

mysql&gt; show create table 表名;

<code>mysql&gt; show </code><code>create</code> <code>table</code> <code>wx_share_log;</code>

<code>+</code><code>--------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+</code>

<code>| </code><code>Table</code>        <code>| </code><code>Create</code> <code>Table</code>                                                                                                                                                                                                                                                                                                       <code>|</code>

<code>| wx_share_log | </code><code>CREATE</code> <code>TABLE</code> <code>`wx_share_log` (</code>

<code>  </code><code>`id` </code><code>int</code><code>(11) </code><code>NOT</code> <code>NULL</code> <code>AUTO_INCREMENT COMMENT </code><code>'微信分享日志自增ID'</code><code>,</code>

<code>  </code><code>`reference_id` </code><code>int</code><code>(11) </code><code>NOT</code> <code>NULL</code> <code>COMMENT </code><code>'推薦的經紀人id'</code><code>,</code>

<code>  </code><code>`create_time` datetime </code><code>NOT</code> <code>NULL</code> <code>COMMENT </code><code>'建立時間'</code><code>,</code>

<code>  </code><code>PRIMARY</code> <code>KEY</code> <code>(`id`)</code>

<code>) ENGINE=MyISAM AUTO_INCREMENT=13 </code><code>DEFAULT</code> <code>CHARSET=utf8                   |</code>

5)如何将MyISAM庫導成INNODB引擎格式的:

在備份出的xxx.sql檔案中把ENGINE=MyISAM全換成ENGINE=INNODB

再次導入就可以了。

6)轉換表的指令:

mysql&gt; alter table 表名 engine=innodb;

有上面可以查到看,本機mysql使用的存儲引擎是預設的MyISAN,由于業務需要,先要将其存儲引擎改為Innodb。

操作記錄如下:

1)以安全模式關閉mysql

[root@dev mysql5.1.57]# mysqladmin -uroot -p shutdown

Enter password: 

[root@dev mysql5.1.57]# ps -ef|grep mysql

2)備份my.cnf

[root@dev mysql5.1.57]# cp my.cnf my.cnf.old

3)修改my.cnf配置檔案

[root@dev mysql5.1.57]# vim my.cnf

.....

[mysqld]                                        //在這個配置區域添加下面一行,指定存儲引擎為innodb

default-storage-engine = InnoDB

4)删除/mysql/data目錄下的ib_logfile0,ib_logfile1。删除或剪切到别處都行。

[root@dev var]# mv ib_logfile0 ib_logfile1 /tmp/back/

5)啟動mysql,登陸mysql驗證存儲引擎是否已切換

[root@dev var]# /Data/app/mysql5.1.57/bin/mysqld_safe --defaults-file=/Data/app/mysql5.1.57/my.cnf &amp;

<code>| storage_engine | InnoDB |</code>

***************當你發現自己的才華撐不起野心時,就請安靜下來學習吧***************

本文轉自散盡浮華部落格園部落格,原文連結:http://www.cnblogs.com/kevingrace/p/6230523.html,如需轉載請自行聯系原作者