使用mysqldump命令進行mysql數據庫備份


1、用法

mysqldump -uroot -p --databases test > /home/test.sql
mysqldump -uroot -h127.0.0.1 -p --databases test --single-transaction --set-gtid-purged=off --max_allowed_packet=512M > /home/test.sql

2、參數說明

-uroot:數據庫用戶名為root

-h172.16.43.131:指定mysql數據庫IP地址

-p:密碼

--databases test:設置導出的數據庫為test,可以同時導出多個庫,庫名用空格隔開,如--databases test1 test2,也可以導出所有庫,使用--all-databases參數

--single-transaction:設置事務隔離級別為可重復讀,保證dump期間,其他線程對提交的數據不會影響本次數據,改期間也不會鎖表

--lock-all-tables:鎖所有表,相對--single-transaction,dump期間,其他線程都不能提交數據(默認策略)

--no-data:不備份數據,只備份數據庫結構

--set-gtid-purged=off:關閉全局事務 ID (GTID)

--max_allowed_packet=512M:設置max_allowed_packet大小,值最好等於my.conf配置的大小,否則會出現Got packet bigger than 'max_allowed_packet' bytes when dumping table `xxx` at row: 3540錯誤

更多參數說明可查看官網:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html,或者使用命令 mysqldump --help

3、壓縮備份

mysqldump -uroot -p --databases test | gzip > /home/test.sql.zip

 

注意:導出的備份文件中已 /*! 開頭,以 */; 結尾的語句不是注釋信息,mysql進行了擴展,該部分的語句是可以被執行的。

4、還原數據庫

mysql -uroot -p              // 登陸數據庫
source /home/test.sql;       // 執行數據庫腳本 

小技巧:使用上面的辦法還原庫時庫名和原始庫名是一樣,如想換一個名字,必須修改備份文件中的庫名,如下圖中的test

 

但備份文件很大時,我們很難找到一個編輯器打開這個文件並進行修改,此時我們可以用到linux系統的sed命令,將字符進行替換

sed -i '1,/DROP TABLE/s/`test`/`test_db`/g' test.sql

 

出現的錯誤:

1、mysqldump: Error 3024: Query execution was interrupted, maximum statement execution time exceeded when dumping table `base_uploadfileblob` at row: 5549

max_execution_time設置過小。默認為0,表示不限制時間,可修改/etc/my.conf文件進行配置,單位為毫秒,如:max_execution_time=100000


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM