更換Mysql存儲引擎為Innodb
問題:由於環境中的Mysql數據庫使用的是Mysql5.1.77版本 ,使用的是MYISAM引擎 ,會導致表級鎖,並且不支持故障自動恢復(CSR)
表級鎖:對表中任意一行數據修改操作時,整個表都會被鎖定,對其他行的數據都不能操作
不支持故障自動恢復(CSR) :當斷電時可能會出現數據損壞或丟失的問題
解決方案: 將數據庫升級到5.6.44版本並更換引擎為Innodb
5.1.77里對Innodb的支持不夠完善,更換版本為5.6.44
實現步驟(使用aaa演示)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| aaa |
| mysql |
| performance_schema |
+--------------------+
8 rows in set (0.00 sec)
mysql>
mysql> show tables;
+---------------+
| Tables_in_aaa |
+---------------+
| a1 |
| b1 |
| c1 |
| d1 |
+---------------+
4 rows in set (0.00 sec)
查看表使用的引擎
mysql> select table_schema,table_name,engine from information_schema.tables where engine='myisam';
+--------------------+---------------------------+--------+
| table_schema | table_name | engine |
+--------------------+---------------------------+--------+
| aaa | a1 | MyISAM |
| aaa | b1 | MyISAM |
| aaa | c1 | MyISAM |
| aaa | d1 | MyISAM |
+--------------------+---------------------------+--------+
35 rows in set (0.00 sec)
將aaa數據庫備份出來
[root@db01 ~]# mysqldump -uroot -p -S /data/3307/data/mysql.sock -B aaa >/tmp/aa.sql
Enter password:***
將數據庫的備份文件scp到新的mysql環境中
[root@db01 ~]# scp /tmp/aa.sql root@172.16.1.52:/a.sql
root@172.16.1.52's password:
aa.sql 100% 3450 2.7MB/s 00:00
[root@db01 ~]#
在新的Mysql環境上修改備份文件的引擎信息
[root@db02 ~]# sed -i 's#ENGINE=MyISAM#ENGINE=INNODB#g' /a.sql
將數據庫備份文件導入到新數據庫中並查看
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| aaa |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql>
查看表的存儲引擎
mysql> use aaa
Database changed
mysql> show tables;
+---------------+
| Tables_in_aaa |
+---------------+
| a1 |
| b1 |
| c1 |
| d1 |
+---------------+
4 rows in set (0.00 sec)
mysql> show create table a1;
+-------+-------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------------------------------------+
| a1 | CREATE TABLE `a1` (
`id` int(11) DEFAULT NULL,
`name` varchar(12) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
#ENGINE=InnoDB 已經被更改為Innodb