mysqldump --set-gtid-purged=OFF 參數解析


Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even those that changed suppressed parts of the database. If you don't want to restore GTIDs, pass --set-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events. 

 

如果一個數據庫開啟了GTID,使用mysqldump備份的時候或者說是轉儲的時候,即使不是MySQL全庫(所有庫)備份,也會備份整個數據庫所有的GTID號。

GTID是為了加強數據庫的主備一致性、故障恢復和容錯能力,mysqldump備份整個數據庫用來做從庫的話,那么GTID是必須的(一個MySQL主從復制是開啟了GTID的場景下)。

但是如果僅僅是備份單個庫或者是導入單個庫到其它的數據庫(也是開啟了GTID),那么GTID號有重復概率(GTID由UUID+順序事務ID組成),所以如果想在數據導入的時候不想導入另外一個數據庫全部的GTID,那么可以使用`--set-gtid-purged=OFF`來禁止。

警告的最后一句還說了,如果想備份整個mysql數據庫而不是一個或者數據數據庫的話,請使用`--all-databases --triggers --routines --events`等參數,當備份整個數據庫的時候,建議備份GTID全局唯一事務號。

總結,如果僅僅是導出一個數據庫中的某一個庫,該數據不是用於主從復制,那么GTID號可以不進行備份,因為一旦備份的話是備份全部的GTID,所以備份單個庫的時候最好是關閉GTID,也就是使用`--set-gtid-purged=OFF`,那么該數據導入其它DB的時候會產生新的GTID號。

如果備份單個庫時不使用`--set-gtid-purged=OFF`,那么就會導出整個數據庫的GTID號碼,如果該數據導入其它的數據庫,會連着GTID號碼一起導入,雖然基本不可能會有GTID重復的概率,但是被導入的數據庫會出現多余的GTID號,所以一般情況下備份單個庫建議關閉。如果備份整個庫的時候,用於全備恢復,一般情況下都是要打開的,其實不打開也會生成新的GTID,主要用於主從復制的時候新建從庫,避免主從的GTID不一致,因為按這種方式與主庫建立主從復制的話,從庫的GTID號與主庫一致,如果導出數據時不導出GTID,那么從庫數據難以與主庫同步(其實這種方式建立主從的情況也很少,一般情況下從庫的所有數據都是通過主從復制從主庫獲取的)。

消除警告: mysqldump xxxxx --set-gtid-purged=OFF > backup.sql 

 


免責聲明!

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



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