任務目的:把現網數據庫(MySQL5.5,windows)中的內容導入到測試數據庫(MySQL5.1,linux)中
1.由於對MySQL並不熟悉,一上來我先考慮方案是用現成的數據庫管理工具來處理。我先後用Navicat Premium和SQLyog都失敗。每次都是導出時成功,但導入時總是出現各種錯誤中斷。
2.粗略估計失敗的原因可能是
(1)版本問題,但已經排除。
(2)內容導致的,因為項目表裡面不都是簡單的文本數據,裡面含有大量的二進制數據、視圖、函數和觸發器數據需要導出
(3)歷史遺留亂碼導致。由於該項目是又由一個老項目擴建修改而成。有些表結構在復制中存在亂碼使得導入時出錯
3.工具不好用所以決定用MySQL命令來處理
導出:
mysqldump.exe -uroot -proot --default-character-set=utf8 --opt --extended-insert=false --triggers -R --hex-blob -x house >\x
導入
mysql>source /x
4.導入時表和數據都正常了。但是在導入自定義函數時報log_bin_trust_function_creators錯誤。解決方法是
set global log_bin_trust_function_creators = 1;
不過這種辦法在重啟後就是失效了,永久解決方案是直接修改my.ini
在[mysqld]加上log_bin_trust_function_creators=1
5.導入成功,任務完成
由於以前沒操作過測試服務器,發現裡面裝了兩個MySQL服務。直接使用mysql命令登錄的並不是我要用的,所以需要先找到MySQL的mysql.sock地址
ps aux |grep mysqld
先看進程找到記下找到地址--socket=/tmp/mysql.sock
mysql -uroot -p -P3306 -S/tmp/mysql.sock
這樣就登錄到了需要的MySQL。問題解決。