由於之前項目為了查詢方便,且不受權限控制。所以把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
其他版本沒有試過。