作為站點或服務器運維人員,網站的備份與還原操作是必須熟練的。MySQL 數據庫的導出和導入操作是必不可少的,對於一般的用戶,可能使用的比較多的是 phpMyAdmin 這樣的可視化操作界面,但是這種界面操作在數據庫比較大的情況下,經常出錯。
如果你對Linux下的命令比較熟悉,並且自己使用的是 vps 或雲服務器的話,可以使用 MySQL 相關命令來導出和導入數據庫,非常方便高效!
導出數據庫
導出數據庫為 db_wp.sql.gz 文件:
mysqldump -u數據庫用戶名 -p數據庫密碼 --add-drop-table --complete-insert 數據庫名 | gzip > db_wp.sql.gz
請注意根據自己的實際情況,修改上面的“數據庫用戶名”、“數據庫密碼”、“數據庫名”為具體的值,一般來說,“數據庫用戶名”應該使用最高權限的 root,數據庫密碼應該為 root 用戶的密碼
導入數據庫
因為我們剛才導出的數據庫是 gz 壓縮的,所以導入前我們需要解壓:
gzip -d db_wp.sql.gz
解壓出來的文件為 db_wp.sql,然後導入到數據庫:
mysql -u數據庫用戶名 -p數據庫密碼 數據庫名 < db_wp.sql --default-character-set=utf8
mysql 錯誤 server has gone away
在操作過程中,可能會出現 mysql server has gone away 的錯誤,這是數據庫太大,緩存不夠或操作超時導致的,可以修改下 mysql 的配置來解決:
1、打開配置文件(這裡演示的是軍哥的 lnmp 下的配置文件,如果你的路徑不是這個,自己找到)
vi /etc/my.cnf
2、找到 wait_timeout、interactive_timeout 兩個變量,設置值為
wait_timeout=2880000 interactive_timeout = 2880000
如果沒有這兩個參數,直接添加即可
3、再找到max_allowed_packet,增加這個變量的值,比如 100M (也可以設置自己需要的大小)
max_allowed_packet = 100M
max_allowed_packet 參數的作用是,用來控制其通信緩沖區的最大長度。
當然,其他參數可以根據自己的需要調整:
4、重啟 mysql 服務即可