-gtid-purged=OFF. To make a complete dump, pass --all-databases --triggers --routines --events.
如果一個(gè)數(shù)據(jù)庫(kù)開(kāi)啟了GTID,使用mysqldump備份的時(shí)候或者說(shuō)是轉(zhuǎn)儲(chǔ)的時(shí)候,即使不是MySQL全庫(kù)(所有庫(kù))備份,也會(huì)備份整個(gè)數(shù)據(jù)庫(kù)所有的GTID號(hào)。 GTID是為了加強(qiáng)數(shù)據(jù)庫(kù)的主備一致性、故障恢復(fù)和容錯(cuò)能力,mysqldump備份整個(gè)數(shù)據(jù)庫(kù)用來(lái)做從庫(kù)的話,那么GTID是必須的(一個(gè)MySQL主從復(fù)制是開(kāi)啟了GTID的場(chǎng)景下)。 但是如果僅僅是備份單個(gè)庫(kù)或者是導(dǎo)入單個(gè)庫(kù)到其它的數(shù)據(jù)庫(kù)(也是開(kāi)啟了GTID),那么GTID號(hào)有重復(fù)概率(GTID由UUID+順序事務(wù)ID組成),所以如果想在數(shù)據(jù)導(dǎo)入的時(shí)候不想導(dǎo)入另外一個(gè)數(shù)據(jù)庫(kù)全部的GTID,那么可以使用`--set-gtid-purged=OFF`來(lái)禁止。 警告的最后一句還說(shuō)了,如果想備份整個(gè)mysql數(shù)據(jù)庫(kù)而不是一個(gè)或者數(shù)據(jù)數(shù)據(jù)庫(kù)的話,請(qǐng)使用`--all-databases --triggers --routines --events`等參數(shù),當(dāng)備份整個(gè)數(shù)據(jù)庫(kù)的時(shí)候,建議備份GTID全局唯一事務(wù)號(hào)。 總結(jié),如果僅僅是導(dǎo)出一個(gè)數(shù)據(jù)庫(kù)中的某一個(gè)庫(kù),該數(shù)據(jù)不是用于主從復(fù)制,那么GTID號(hào)可以不進(jìn)行備份,因?yàn)橐坏﹤浞莸脑捠莻浞萑康腉TID,所以備份單個(gè)庫(kù)的時(shí)候最好是關(guān)閉GTID,也就是使用`--set-gtid-purged=OFF`,那么該數(shù)據(jù)導(dǎo)入其它DB的時(shí)候會(huì)產(chǎn)生新的GTID號(hào)。 如果備份單個(gè)庫(kù)時(shí)不使用`--set-gtid-purged=OFF`,那么就會(huì)導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)的GTID號(hào)碼,如果該數(shù)據(jù)導(dǎo)入其它的數(shù)據(jù)庫(kù),會(huì)連著GTID號(hào)碼一起導(dǎo)入,雖然基本不可能會(huì)有GTID重復(fù)的概率,但是被導(dǎo)入的數(shù)據(jù)庫(kù)會(huì)出現(xiàn)多余的GTID號(hào),所以一般情況下備份單個(gè)庫(kù)建議關(guān)閉。如果備份整個(gè)庫(kù)的時(shí)候,用于全備恢復(fù),一般情況下都是要打開(kāi)的,其實(shí)不打開(kāi)也會(huì)生成新的GTID,主要用于主從復(fù)制的時(shí)候新建從庫(kù),避免主從的GTID不一致,因?yàn)榘催@種方式與主庫(kù)建立主從復(fù)制的話,從庫(kù)的GTID號(hào)與主庫(kù)一致,如果導(dǎo)出數(shù)據(jù)時(shí)不導(dǎo)出GTID,那么從庫(kù)數(shù)據(jù)難以與主庫(kù)同步(其實(shí)這種方式建立主從的情況也很少,一般情況下從庫(kù)的所有數(shù)據(jù)都是通過(guò)主從復(fù)制從主庫(kù)獲取的)。 消除警告: mysqldump xxxxx --set-gtid-purged=OFF > backup.sql |
|