RDS for MySQL Mysqldump常見問題及處理

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

摘要:?RDS for MySQL Mysqldump 常見問題和處理 ? GTID 特性相關 避免表級鎖等待 設置導出字符集 其他導出時需要注意的選項 舉例 RDS for MySQL 不支持的選項 RDS for MySQL 邏輯備份 1. GTID 特性相關 MySQL 5.6 引入了 GTID 特性,因此隨?5.6 版本分發的 mysqldump 工具增加了 --set-gtid-purged 選項。

RDS for MySQL Mysqldump 常見問題和處理

  • GTID 特性相關
  • 避免表級鎖等待
  • 設置導出字符集
  • 其他導出時需要注意的選項
  • 舉例
  • RDS for MySQL 不支持的選項
  • RDS for MySQL 邏輯備份

1. GTID 特性相關

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

#選項名稱默認值可選值作用

1

set-gtid-purged

AUTO

ON,?OFF,?AUTO

是否輸出?SET @@GLOBAL.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 工具進行 RDS for MySQL 實例數據導出時設置該選項為 OFF。

注:

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

Error: Server has GTIDs disabled.
或者
mysqldump: Couldn’t execute ‘SELECT @@GTID_MODE’: Unknown system variable ‘GTID_MODE’ <1193>

??

2. 避免表級鎖等待

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

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

#選項名稱默認值可選值作用
1lock-all-tablesFALSEFALSE,TRUE在數據導出期間放置 global read lock,所有庫下的所有表在導出期間為只讀。自動關閉 lock-tables 和 single-transaction 選項。RDS 不支持該選項。
2lock-tablesTRUEFALSE,TRUE導出期間在導出表上放置表級鎖。默認開啟。可以通過指定 --skip-lock-tables 選項來關閉。
3single-transactionFALSEFALSE,TRUE導出操作被放置在一個事務中執行。自動關閉 lock-tables 選項。

關于表級鎖的情況,請參考:RDS for MySQL InnoDB表級鎖等待

?

3. 設置導出字符集

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

#選項名稱默認值可選值作用
1default-character-setUTF8實例支持的字符集mysqldump 到 RDS 實例導出連接的字符集

?

4. 其他導出時需要注意的選項

#選項名稱默認值可選值作用
1no-defaultsNANA除了.mylogin.cnf,不讀取任何選項文件
2defaults-file=file_nameNANA讀取指定的選項文件
3add-drop-databaseFALSEFALSE,TRUE在 create database 語句前增加 drop database 語句
4add-drop-tableTRUEFALSE,TRUE在 create table 語句前增加 drop table 語句,默認開啟,使用選項 --skip-add-drop-table 來關閉。
5add-locksTRUEFALSE,TRUE在表相關語句前后增加 lock tables tab_name write; 和 unlock tables; 語句。這樣在導入數據時可以加快數據導入。
6compatible=nameNA

ansi,postgresql,

oracle,mssql

增強與指定的數據庫類型的兼容性
7compactFALSEFALSE,TRUE啟用 --skip-add-drop-table, --skip-add-locks, --skip-comments, --skip-disable-keys, --skip-set-charset 選項
8databasesTRUEFALSE,TRUE導出多個庫。默認 mysqldump 將第一個名字識別為庫,其后的名字識別為表。指定該選項后,mysqldump會將所有名稱識別為庫,并在每個庫前增加 create database 和 use database 語句。
9disable-keysTRUEFALSE,TRUE在插入數據前后增加 /!40000 ALTER TABLE tab_name DISABLE KEYS?/ 和 /!40000 ALTER TABLE tab_name ENABLE KEYS?/ 語句來加速插入。該選項僅對 MyISAM 引擎表的非唯一索引有效。
10eventsFALSEFALSE,TRUE導出數據庫內的計劃事件(定時任務)
11extended-insertTRUEFALSE,TRUE使用擴展的 Insert 語句,一條 Insert 語句插入多行。
12hex-blobFALSEFALSE,TRUE

以16進制導出 Binary、VarBinary、BLOB 類型數據。

如果跨版本遷移數據,建議增加該選項。

13ignore-table=db.tabTRUEFALSE,TRUE不導出某表或視圖。格式:庫名.表名(db.tab)。可以多次使用該選項來忽略多張表。
14max-allowed-packet24 MB24 MB - 1 GBmysqldump 和 RDS 實例通信緩存最大值。默認24 MB。最大 1 GB。
15no-create-dbFALSEFALSE,TRUE輸出中不包含 create database 語句
16no-create-infoFALSEFALSE,TRUE輸出中不包含 create table 語句
17no-dataFALSEFALSE,TRUE不導出數據
18optTRUEFALSE,TRUE啟用 ?--add-drop-table, --add-locks, --create-options --disable-keys, --extended-insert, --lock-tables, --quick, --set-charset; 可以通過指定 skip-opt 選項關閉默認 opt 選項。
19dump-dateTRUEFALSE,TRUE如果指定了 --comments 選項(默認開啟),在輸出的注釋中顯示導出日期時間。
20routinesFALSEFALSE,TRUE導出存儲過程和函數(默認不導出)
21result-fileTRUEFALSE,TRUE將輸出重定向到文件
22set-charsetTRUEFALSE,TRUE在導出文件中加上 set names default_chararacter_set
23triggersTRUEFALSE,TRUE導出表上的 Trigger

5. 舉例

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

mysqldump --no-defaults -hxxx.mysql.aliyun.com -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 選項指定 RDS 實例的 URL 地址
# -u 選項指定使用的數據庫用戶
# 也可以使用下面的方式進行導出
mysqldump --no-defaults -hxxx.mysql.aliyun.com -uuser_name -P3306 -ppass_word --set-gtid-purged=off --default-character-set=utf8mb4 --hex-blob --single-transaction jacky teacher > jacky_teacher.sql

?

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

mysqldump --no-defaults -hxxx.mysql.rds.aliyuncs.com -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; 語句

??

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

mysqldump --no-defaults -hxxx.mysql.rds.aliyuncs.com -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 — 不導出數據

?

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

mysqldump --no-defaults -hxxx.mysql.rds.aliyuncs.com -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.5?導出庫 jacky,jerry,jason,不包括表 jacky.teacher, jason.orders, jerry.sales

mysqldump --no-defaults -hxxx.mysql.aliyun.com -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 — 指定要進行導出的數據庫名稱

?

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

mysqldump --no-defaults -hxxx.mysql.aliyun.com -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 的語法兼容性

?

6. RDS for MySQL 不支持的選項

#選項名稱默認值可選值作用
1all-databasesFALSEFALSE, TRUE導出所有數據庫,包括 mysql
2flush-logsFALSEFALSE, TRUE導出前在實例中執行 flush logs; 命令
3flush-privilegesFALSEFALSE, TRUE導出 mysql 系統庫后,輸出中包含 flush privileges; 命令
4lock-all-tablesFALSEFALSE, TRUE在數據導出期間放置 global read lock,所有庫下的所有表在導出期間為只讀。自動關閉 lock-tables 和 single-transaction 選項。
5tab=dir_nameNANA在指定的目錄下生成 tbl_name.sql 文件(包含表創建語句)和 以 tab 作為分隔符的tbl_name.txt文本格式的數據文件。
  • --all-databases: RDS for MySQL 普通用戶對?mysql 庫中部分表沒有權限,因此不能導出全部庫表。
# 錯誤信息:
mysqldump: Couldn’t execute ‘show create table slow_log‘: SHOW command denied to user ‘xxx’@’xx.xx.xx.xx’ for table ‘slow_log’ (1142)

?

  • --flush-logs: RDS for MySQL 普通用戶沒有 Reload 權限,因此不能執行 flush logs; 命令。
# 錯誤信息
mysqldump: Couldn’t execute ‘FLUSH TABLES’: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)

?

  • --flush-privileges:因為 RDS for MySQL 不支持 mysql 系統庫的導出,因此沒必要使用該選項。
  • --lock-all-tables:因為 RDS for MySQL 普通用戶沒有 Reload 權限,因此不能使用該選項。
# 錯誤信息
mysqldump: Couldn’t execute ‘FLUSH TABLES’: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation (1227)

?

  • --tab=dir_name:該選項要求?mysqldump 和 RDS for MySQL 實例在同一物理機上,因此不支持。但該選項可以和 --no-data 選項搭配使用來獲取表的創建語句。
# 和 --no-data 選項搭配,獲取 jacky 庫下每個表的創建語句文件 tab_name.sql
mysqldump --no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 --set-gtid-purged=off --single-transaction --tab=/tmp --no-data jacky
# 不帶 --no-data 選項(希望導出數據)時候的錯誤信息:
mysqldump --no-defaults -uuser_name -ppass_word -hxxx.mysql.rds.aliyuncs.com -P3306 --set-gtid-purged=off --single-transaction --tab=/tmp jacky
mysqldump: Got error: 1045: Access denied for user ‘xxx’@’%’ (using password: YES) when executing ‘SELECT INTO OUTFILE’

?

7. RDS for MySQL 邏輯備份

  • RDS for MySQL 支持實例和單庫級別的邏輯備份。
  • 邏輯備份執行期間不會影響主實例的正常使用。
  • 邏輯備份導入權限問題請參考:RDS for MySQL權限問題(錯誤代碼:1227,1725)

轉載于:https://my.oschina.net/HeAlvin/blog/849035

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282697.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

AI求解PDE

一、波動方程的PINN解法: Guo Y, Cao X, Liu B, et al. Solving partial differential equations using deep learning and physical constraints[J]. Applied Sciences, 2020, 10(17): 5917. 二、二維的Navier–Stokes方程組的PINN解法 矢量形式的不可壓縮Navier-Stokes方程…

使用CADisplayLink實現UILabel動畫特效

在開發時&#xff0c;我們有時候會遇到需要定時對UIView進行重繪的需求&#xff0c;進而讓view產生不同的動畫效果。 本文項目 效果圖 初探 CADisplayLink 定時對View進行定時重繪可能會第一時間想到使用NSTimer&#xff0c;但是這樣的動畫實現起來是不流暢的&#xff0c;因為在…

《ASP.NET Core 6框架揭秘》實例演示[27]:ASP.NET Core 6 Minimal API的模擬實現

Minimal API僅僅是在基于IHost/IHostBuilder的服務承載系統上作了小小的封裝而已&#xff0c;它利用WebApplication和WebApplicationBuilder這兩個類型提供了更加簡潔的API&#xff0c;同時提供了與現有API的兼容。[本文節選《ASP.NET Core 6框架揭秘》第17章]一、基礎模型二、…

Mysql的關聯查詢語句

一 內連接( inner join&#xff09; 1、多表中同時符合某種條件的數據記錄的集合 (取兩表公共部分) 2、inner join 可以縮寫成 join 例如: select * from A,B WHERE A.idB.id 或者 select * from A inner join B on A.idB.id 內連接分為三類:{ &#xff08;1&#xff0…

高性能Server---Reactor模型

無處不在的C/S架構 在這個充斥著云的時代,我們使用的軟件可以說99%都是C/S架構的&#xff01; 你發郵件用的Outlook,Foxmail等你看視頻用的優酷&#xff0c;土豆等你寫文檔用的Office365,googleDoc&#xff0c;Evernote等你瀏覽網頁用的IE,Chrome等(B/S是特殊的C/S)……C/S架構…

計算機控制系統的試題,計算機控制系統練習題(1)

21. 給出多通道復用一個D/A轉換器的原理示意圖。 答&#xff1a;22. 什么是信號重構&#xff1f;答&#xff1a;把離散信號變為連續信號的過程&#xff0c;稱為信號重構&#xff0c;它是采樣的逆過程。23. 寫出零階保持器的傳遞函數&#xff0c;引入零階保持器對系統開環傳遞函…

springmvc_3(將數據放入map中)

jsp頁面 結果 轉載于:https://www.cnblogs.com/mohehpc/p/6491376.html

怎樣用原生js配合css的transition寫個無縫滾動

之所以想要寫原生js配合css轉換的無縫滾動&#xff0c;是因為之前在簡書上看到一哥們寫的一篇文章&#xff0c;說是在網上找了一堆js配合css transition屬性寫的輪播插件&#xff0c;可惜沒有無縫的效果&#xff0c;結果他用原生js重寫了一個可以無縫滾動的。好吧&#xff0c;我…

聊聊策略模式

1、簡介策略模式就是把各個平等的具體實現進行抽象、封裝成為獨立的算法類&#xff0c;然后通過上下文和具體的算法類來進行交互。各個策略算法都是平等的&#xff0c;地位是一樣的&#xff0c;正是由于各個算法的平等性&#xff0c;所以它們才是可以相互替換的。雖然我們可以動…

小學計算機課每周幾節,小學信息技術課時多少

滿意答案小學信息技術課程標準一、課程任務和教學目標中小學信息技術課程的主要任務是&#xff1a;培養學生對信息技術的興趣和意識&#xff0c;讓學生了解和掌握信息技術基本知識和技能&#xff0c;了解信息技術的發展及其應用對人類日常生活和科學技術的深刻影響。通過信息技…

張旭升20162329 2006-2007-2 《Java程序設計》第一周學習總結

20162329 2006-2007-2 《Java程序設計》第一周學習總結 教材學習內容總結 通過打書上的代碼熟悉了Java編程的基本過程 教材學習中的問題和解決過程 1.因為我的虛擬機不可用所以我在Windows中安裝了bash和git&#xff0c;但是由于Windows下bash中沒有中文而且我英語又不是很好所…

《圖解 HTTP》讀書筆記(未完待續)

ARP 協議&#xff08;Address Resolution Protocol&#xff09;一種以解析地址的協議&#xff0c;根據通信雙方的 IP 地址就可以查出對應的 MAC 地址。MAC&#xff08; Media Access Control Address&#xff09;地址是指網卡所屬的固定的地址MIME&#xff0c;多部分對象集合&a…

SQL查詢的安全方案

1.使用預處理語句防sql注入 2.寫入數據庫的數據要進行特殊字符轉義 3.錯誤信息不返回給用戶,記錄到日志 4.定期做數據備份 5.不給查詢用戶root權限,合理分配權限 6.關閉遠程訪問數據庫權限 7.修改root口令,不使用默認口令,使用較復雜口令 8.刪除多余的用戶 9.改變root用戶的名稱…

.NET 實現啟動時重定向程序運行路徑及 Windows 服務運行模式部署

日常工作中有時候會遇到需要將程序直接在服務器上運行&#xff0c;而不依賴于 IIS 托管的情況&#xff0c;直接運行有兩種方式&#xff0c;一種是部署為 服務模式&#xff0c;另一種則是 直接啟動 .NET 發布之后的 exe 文件以 控制臺模式運行&#xff0c;控制臺模式運行主要問題…

iOS runtime實戰應用:關聯對象

在開始之前建議先閱讀iOS runtime的基礎理解篇&#xff1a;iOS內功篇&#xff1a;runtime 有筒子在面試的時候&#xff0c;遇到這樣一個問題&#xff1a;“如何給NSArray添加一個屬性&#xff08;不能使用繼承&#xff09;”&#xff0c;筒子立馬蒙逼了&#xff0c;不能用繼承&…

黑龍江科技大學計算機考研復試科目,2020年黑龍江科技大學計算機應用技術考研經驗分享...

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓育明考研備考策略隨著IT業的迅猛發展&#xff0c;各高校計算機專業報名火爆&#xff0c;甚至文科學生跨專業報考時都會選擇計算機。計算機專業競爭日趨激烈&#xff0c;那么如何在充分發揮公共科目優勢的同時&#xff0c;盡量縮小專…

Mysql數據庫安全性問題【防注入】

一、SQL注入實例 后臺的插入語句代碼&#xff1a; $unsafe_variable $_POST[user_input]; mysql_query("INSERT INTO table (column) VALUES ($unsafe_variable)"); 當POST的內容為&#xff1a; value); DROP TABLE table;--以上的整個SQL查詢語句變成&#xff1…

Unexpected end of JSON input while parsing near錯誤解決方式(網上的方法)

原本是想創建一個create-react-app來著&#xff0c;但是在創建的中間會出現Unexpected end of JSON input while parsing near... 的錯誤。 在網上找到了一些方法&#xff0c;首先是清空npm的緩存。 npm cache clean --force 氮素&#xff0c;然并卵。near后面的內容變化了一下…

解決Qt5 Creator無法切換輸入法(fcitx),Ubuntu中不能使用搜狗輸入法錄入漢字問題...

2016年6月8日修正&#xff0c;ubuntu 16.04 Qt5.7.0 以及 Qt5.6.1均測試通過在Qt5.3之前&#xff0c;我發布過解決辦法 解決Qt5 Creator無法切換輸入法&#xff08;fcitx&#xff09;&#xff0c;不能錄入漢字問題&#xff0c;Qt5.4以及Qt5.5&#xff0c;舊辦法失效&#xff0c…

目前市場上用于個人計算機的硬盤尺寸是,第5章-硬盤(計算機組裝與維護).docx

ADDIN CNKISM.UserStyle一、選擇題1.磁盤存儲器的主要技術指標有多項&#xff0c;下面不屬于硬盤指標的是( )。A.存儲容量B.單碟容量C.轉速D.帶寬2.硬盤的平均尋道時間通常以毫秒為單位測量&#xff0c;是指( )。A.磁頭從一個柱面移到另一個隨機距離遠的柱面所需的平均時間B.…