當前位置:
首頁 > 最新 > MySQL Mysqldump 常見問題和處理

MySQL Mysqldump 常見問題和處理

關於本文

今天小雲主要為大家講解MySQL Mysqldump常見的四種問題及相應的解決辦法,遇到類似問題的童鞋可以參考,希望對大家有幫助!

一、GTID 特性相關

MySQL 5.6 引入了 GTID 特性,因此隨 5.6 版本分發的 mysqldump 工具增加了 —set-gtid-purged 選項。

ON:在 mysqldump 輸出中包含 SET @@GLOBAL.GTID_PURGED 語句。

OFF:在 mysqldump 輸出中不包含 SET @@GLOBAL.GTID_PURGED 語句。

AUTO:默認值;對於啟用 GTID 實例,會輸出 SET @@GLOBAL.GTID_PURGED 語句;對於沒有啟動或者不支持 GTID 的實例,不輸出任何 GTID 相關信息。

因此對於使用 MySQL 5.6 及以上版本帶有的 mysqldump 工具進行 for MySQL 實例數據導出時設置該選項為 OFF。

注意:如果 mysqldump 設置 set-gtid-purged=ON 從 for MySQL 5.5 或 5.1 版本實例導出數據,mysqldump 會提示下面的錯誤:

Error: Server has GTIDs disabled.

或者

mysqldump: Couldn』t execute 『SELECT @@GTID_MODE』: Unknown system variable 『GTID_MODE』

二、避免表級鎖等待

mysqldump 默認會啟用 lock-tables 選項,對要導出的表加表級鎖,阻止表上的 DML 操作。

for MySQL 實例默認支持的 InnoDB 和 TokuDB 引擎均支持事務,建議使用 single-transaction 選項進行導出,而不要設置 lock-all-tables 或 lock-tables 選項。

三、設置導出字符集

如果不指定,mysqldump 默認使用 UTF8 字符集進行導出。

四、其他導出時需要注意的選項

五、舉例

1. 導出庫 jacky 下的 teacher 表,包括表上的觸發器,導出字符集是 utf8mb4

1)mysqldump —no-defaults -h實例URL -uuser_name -P3306 -ppass_word —set-gtid-purged=off —default-character-set=utf8mb4 —hex-blob —single-transaction —result-file=jacky_teacher.sql jacky teacher

# -p 選項指定密碼,密碼和選項間不要有空格

# -P 選項指定實例的埠

# -h 選項指定 實例的 URL 地址

# -u 選項指定使用的資料庫用戶

# 也可以使用下面的方式進行導出

mysqldump —no-defaults -h實例URL -uuser_name -P3306 -ppass_word —set-gtid-purged=off —default-character-set=utf8mb4 —hex-blob —single-transaction jacky teacher > jacky_teacher.sql

2. 導出庫 jacky,包括存儲過程和函數,不包括 lock tables 和 unlock tables 語句

1)mysqldump —no-defaults -h實例URL -uuser_name -ppass_word -P3306 —set-gtid-purged=off —hex-blob —single-transaction —routines —skip-add-locks —result-file=jacky.sql jacky

# —routines — 導出庫涉及的存儲過程和函數

# —skip-add-locks — 輸出中不包括 lock tables table_name write; 和 unlock tables; 語句

3. 導出庫 jacky,包括存儲過程、函數、觸發器、事件,不包括數據

1)mysqldump —no-defaults -h實例URL -uuser_name -ppass_word -P3306 —set-gtid-purged=off —hex-blob —single-transaction —routines —events —no-data —result-file=jacky.sql jacky

# 觸發器選項 —triggers 默認開啟,因此不需要指定

# —events — 導出庫涉及的定時事件(計劃任務)

# —no-data — 不導出數據

4. 導出庫 jacky,不包括 庫、表創建語句,不包括 drop table 語句

1)mysqldump —no-defaults -h實例URL -uuser_name -ppass_word -P3306 —set-gtid-purged=off —hex-blob —single-transaction —no-create-db —no-create-info —skip-add-drop-table —result-file=jacky.sql jacky

# —no-create-db — 輸出中不包括庫的創建語句

# —no-create-info — 輸出中不包括表的創建語句

# —skip-add-drop-table — 輸出中不包括表的刪除語句

5. 導出庫 jacky,jerry,jason,不包括表 jacky.teacher, jason.orders, jerry.sales

1)mysqldump —no-defaults -h實例URL -uuser_name -P3306 -ppass_word —set-gtid-purged=off —hex-blob —single-transaction —result-file=jacky_jerry_jason.sql —ignore-table=jacky.teacher —ignore-table=jason.orders —ignore-table=jerry.sales —databases jacky jerry jason

# —ignore-table — 指定不進行導出的表

# —databases — 指定要進行導出的資料庫名稱

6. 導出庫 jacky,包括存儲過程和函數,盡量兼容 SQL SERVER 語法

1)mysqldump —no-defaults -h實例URL -uuser_name -P3306 -ppass_word —set-gtid-purged=off —compatible=mssql —routines —hex-blob —single-transaction —result-file=jacky_mssql.sql jacky

# —compatible=mssql — 增加對 SQL SERVER 的語法兼容性

你一定還想看

京東雲

不止於雲計算

還沒關注就說不過去了老鐵


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 京東雲 的精彩文章:

不想升級Linux?試試這兩招!

TAG:京東雲 |