詳解MySQL如何避免克隆失敗后再次初始化
MySQL 克隆插件簡(jiǎn)化了新副本的配置,但不會(huì)簡(jiǎn)化失敗后的服務(wù)器恢復(fù),除非您準(zhǔn)備從頭開始重新安裝 MySQL 實(shí)例。
但是,當(dāng)您克隆一個(gè)已經(jīng)有巨大數(shù)據(jù)集的復(fù)制副本時(shí),您可能沒有足夠的空間容納兩個(gè)數(shù)據(jù)集:一個(gè)來自源服務(wù)器,另一個(gè)來自復(fù)制副本上的數(shù)據(jù)。
由于您決定從另一臺(tái)服務(wù)器克隆復(fù)制副本,因此您同意丟失當(dāng)前數(shù)據(jù)。DATA DIRECTORY
選項(xiàng)的唯一需要是在出現(xiàn)故障時(shí)保持與克隆相關(guān)的權(quán)限和設(shè)置不變。您可以使用以下策略之一安全地執(zhí)行克隆操作。
從頭開始
要執(zhí)行此操作,請(qǐng)停止當(dāng)前服務(wù)器,刪除數(shù)據(jù)目錄,再次初始化它,進(jìn)行連接,并設(shè)置與克隆相關(guān)的權(quán)限和選項(xiàng)。這樣,您將擁有一個(gè)帶有小數(shù)據(jù)目錄的新實(shí)例,因此您可以使用選項(xiàng) DATA DIRECTORY
,而不用擔(dān)心超出可用磁盤空間。
保留現(xiàn)有 MySQL 架構(gòu)
如果不想重新安裝實(shí)例,可以從中刪除用戶數(shù)據(jù)。
- 列出所有帶查詢的非系統(tǒng)數(shù)據(jù)庫。
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'sys', 'information_schema', 'performance_schema');
- 將它們逐一移除。您可以使用以下存儲(chǔ)過程來執(zhí)行此操作。
CREATE PROCEDURE p1() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE dbname VARCHAR(64); DECLARE c1 CURSOR FOR SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME NOT IN ('mysql', 'sys', 'information_schema', 'performance_schema', 'test'); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN c1; drop_loop: LOOP FETCH c1 INTO dbname; IF done THEN LEAVE drop_loop; END IF; SET @temp = CONCAT('DROP DATABASE ', dbname); PREPARE stmt FROM @temp; EXECUTE stmt; END LOOP; CLOSE c1; END
如果您將 InnoDB 數(shù)據(jù)存儲(chǔ)在共享表空間中(InnoDB_file_per_table=0),則文件
ibdata
將不會(huì)收縮,并且您將無法以這種方式釋放磁盤空間。
克隆實(shí)例
手動(dòng)刪除數(shù)據(jù)釋放磁盤空間后,可以使用帶有選項(xiàng) DATA DIRECTORY
的 CLONE INSTANCE
命令。
CLONE INSTANCE FROM ‘clone_user'@'source_host':3306 \ IDENTIFIED BY 'password' DATA DIRECTORY = '/path/to/custom_dir';
如果克隆成功,您需要通過一個(gè)額外的步驟來完成它:停止 MySQL 實(shí)例,并將數(shù)據(jù)目錄的內(nèi)容替換為用于克隆操作的目錄的內(nèi)容。之后,啟動(dòng)服務(wù)器。
如果克隆操作失敗,請(qǐng)刪除克隆的數(shù)據(jù),修復(fù)錯(cuò)誤,然后重試。
結(jié)論
克隆操作可能會(huì)失敗,并迫使您通過重新初始化副本上的 MySQL 實(shí)例來執(zhí)行額外的步驟。要避免這種情況,請(qǐng)使用選項(xiàng) DATA DIRECTORY
。如果磁盤空間不足,無法存儲(chǔ)兩個(gè)數(shù)據(jù)副本,請(qǐng)?jiān)诳寺≈扒謇憩F(xiàn)有數(shù)據(jù)。
以上就是詳解MySQL如何避免克隆失敗后再次初始化的詳細(xì)內(nèi)容,更多關(guān)于MySQL避免克隆失敗后初始化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mysql 使用存儲(chǔ)過程實(shí)現(xiàn)樹節(jié)點(diǎn)的獲取方法
這篇文章主要介紹了mysql 使用存儲(chǔ)過程實(shí)現(xiàn)樹節(jié)點(diǎn)的獲取方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06MySQL索引類型總結(jié)和使用技巧以及注意事項(xiàng)
索引是快速搜索的關(guān)鍵。MySQL索引的建立對(duì)于MySQL的高效運(yùn)行是很重要的。下面介紹幾種常見的MySQL索引類型2014-04-04Mysql插入數(shù)據(jù)方式(insert into 、replace into解析)
這篇文章主要介紹了Mysql插入數(shù)據(jù)方式(insert into 、replace into解析),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01關(guān)于Mysql子查詢的三個(gè)應(yīng)用場(chǎng)景
這篇文章主要介紹了關(guān)于Mysql子查詢的三個(gè)應(yīng)用場(chǎng)景,子查詢是在一個(gè)完整的查詢語句中,嵌套不同功能的小查詢,從而完成復(fù)雜查詢的一種編寫形式,需要的朋友可以參考下2023-07-07