InnoDB转到MyISAM

最近在迁移wordpress站时遇到一个问题,因为数据库版本不同,在迁移数据库的时候老是报错。于是

 

InnoDB 转到 MyISAM 方法一

用root登录数据库后,use切换到wordpress数据库,执行如下语句:

若你的MySQL版本高于5.7,会报错“invalid default value for”,因为5.7 里 MySQL 不允许时间戳的值为 0,就像这样子:

datetime NOT NULL DEFAULT ‘0000-00-00 00:00:00’

,所以你想这样转的话,只能用5.6以下版本。(注意,似乎可以在wordpress表修复)

InnoDB 转到 MyISAM 方法二

MySQL官方有提供一个专门从InnoDB转到MyISAM的perl脚本,脚本下载地址。脚本里面有详细的使用指南。

InnoDB 转到 MyISAM 方法三

用mysqldump把整个wordpress库导出来,然后用Notepad++修改导出的wordpress.sql文件,把InnoDB全部替换为MyISAM,注意勾选上“匹配大小写”。此操作的原理是在修改建表语句,建表时指定数据库引擎为MyISAM。改好后再导入数据库。导入后用show table status from wordpress;确认修改情况。
我做了下对比,InnoDB的时候,数据库体积为23M,MyISAM的时候,数据库体积3M。给他256M的缓存,让数据库撒着欢地跑。

存储引擎的选择

存储引擎又称表类型是MySQL的核心部分,负责处理表的操作。MySQL提供了多个存储引擎,使用的最多的是MyISAM和InnoDB。MyISAM和InnoDB都有各自的优缺点,MySQL从5.5版本开始使用InnoDB作为默认存储引擎。这说明InnoDB比MyISAM要好吗?其实不然,术业有专攻而已。
我们先来看看MyISAM的优点:
➤MyISAM为速度而设计,和SELECT搭配起来使用更好。
➤如果表的数据偏向静态,即表中的数据不经常更新/删除,大多数仅仅是查询操作,那么使用MyISAM是最好的选择。
我们回过头来看看wordpress使用数据库的场景:主要是写博文给网友看,打开一篇博文对应数据库的查询操作。那么MyISAM简直就是为wordpress而生的啊,而InnoDB是为高可靠性和高写性能而设计的,跟wordpress博客关系不大。而且还有一点MyISAM备份数据库,恢复数据库、或者恢复单个数据表都非常方便,直接操作文件.MYD文件就行了。再有一点就是MyISAM因为功能少,所以轻量,所以比InnoDB节省系统资源。
修改默认存储引擎为MyISAM,在my.cnf里写入

上面的设定,可以通过下面的MySQL语句查看设定结果:

参考:https://hqidi.com/109.html

不同数据库迁移步骤

1、InnoDB 转到 MyISAM 方法三 使用后,将修改的*.sql导入会原来版本的mysql中(新建一个数据库);

2、进入/usr/local/mysql/var下载数据库文件。

3、上传到新的mysql中。

此时网站一般会出现如下问题:在登录网站时,填写用户名和密码后没有任何反应。去修改权限,手动修改发现报错:

原因:如果重启服务器前没有关闭mysql,MySql的MyiSAM表很有可能会出现 ERROR #1017 :Can’t find file: ‘/xxx.frm’ 的错误, 出现这个问题的原因不是’/xxx.frm’这个文件不见了,而是这些文件的权限(应该要是mysql)不知道为什么变成了root。

https://blog.csdn.net/weixin_32558527/article/details/113294948

chown -R mysql:mysql /usr/ Local/ mysql/

解决办法:cd到xxx.frm文件所在目录下,执行一下命令:

问题解决!

 


总计 0 评论

发表评论

作为 登录 | 登出 »

联系电话

18321263196

交换链接

互相学习

服务咨询

我的微信