由于之前项目为了查询方便,且不受权限控制。所以把image储存在了数据库。但是也遇到了很多瓶颈问题。

1,丢图从日志上查询获知,丢图95%以上是由于mysql的timeout时间失效引起的。(由于另一个pdf文件也此存储在mysql上面pdf频繁存储到数据库,占用连接。一个图片有时候可以有20-30m的大小,写一张图片耗费的时间还是比较长,所以引起丢图的现象)。

2,图片预览特别不方面,必须借助navicat工具,而且查看特别费劲。

3,数据恢复特别困难(如果没有备份的情况下,那就不用说)但是用navicat导出结构和数据以后,数据大了以后(10G)以后。导入不是内存溢出,就是导入失败(莫名的)

4,导入导出部分数据困难。

但是项目已经上了,要升级。也是一件很是痛苦的事情。但有时候不需要整张image表都导出。我只是看其中几条数据。然后恢复到另外一个电脑上。

笨的办法就是利用navicat工具查询分析器,把需要的结果查询出来(单张表一定要查询*列),然后利用其导出功能把数据导出成.sql文件,如下图

最后导出。在我的桌面上就多了一个abc.sql文件。

这样就把一张大表的longblob字段的给导出了。但是这个文件也不小,100m-500m不等。这样导出的sql缺少一个表名。需要在每句insert 语句后面加上表名,但是编辑这样的文件也是一件极为痛苦的事情。

通过bing查询得知,可以用mysql的load命令把这些内容导入指定的表名。

把abc.sql文件复制到mysql要导入的数据库目录下。例如我要把abc.sql导入数据库aa库,那么在mysql的datadir目录中一定有个aa的目录。那么就把abc.sql复制到aa目录下。

cmd进入mysql的bin目录,然后

mysql -u root -p dbname;

输入密码

然后就可以用

load data infile 'abc.sql' into table tablename;

我的数据库版本是mysql v5.621

其他版本没有试过。