<a href="#1">gtid 特性相關</a>
<a href="#2">避免表級鎖等待</a>
<a href="#3">設定導出字元集</a>
<a href="#4">其他導出時需要注意的選項</a>
<a href="#5">舉例</a>
<a href="#6">rds for mysql 不支援的選項</a>
<a href="#7">rds for mysql 邏輯備份</a>
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 會提示下面的錯誤:
mysqldump 預設會啟用 lock-tables 選項,對要導出的表加表級鎖,阻止表上的 dml 操作。
rds for mysql 執行個體預設支援的 innodb 和 tokudb 引擎均支援事務,建議使用 single-transaction 選項進行導出,而不要設定 lock-all-tables 或 lock-tables 選項。
lock-all-tables
false
false,true
在資料導出期間放置 global read lock,所有庫下的所有表在導出期間為隻讀。自動關閉 lock-tables 和 single-transaction 選項。rds 不支援該選項。
2
lock-tables
true
導出期間在導出表上放置表級鎖。預設開啟。可以通過指定 --skip-lock-tables 選項來關閉。
3
single-transaction
導出操作被放置在一個事務中執行。自動關閉 lock-tables 選項。
關于表級鎖的情況,請參考:rds for mysql innodb表級鎖等待
如果不指定,mysqldump 預設使用 utf8 字元集進行導出。
default-character-set
utf8
執行個體支援的字元集
mysqldump 到 rds 執行個體導出連接配接的字元集
no-defaults
na
除了.mylogin.cnf,不讀取任何選項檔案
defaults-file=file_name
讀取指定的選項檔案
add-drop-database
在 create database 語句前增加 drop database 語句
4
add-drop-table
在 create table 語句前增加 drop table 語句,預設開啟,使用選項 --skip-add-drop-table 來關閉。
5
add-locks
在表相關語句前後增加 lock tables tab_name write; 和 unlock tables; 語句。這樣在導入資料時可以加快資料導入。
6
compatible=name
ansi,postgresql,
oracle,mssql
增強與指定的資料庫類型的相容性
7
compact
啟用 --skip-add-drop-table, --skip-add-locks, --skip-comments, --skip-disable-keys, --skip-set-charset 選項
8
databases
導出多個庫。預設 mysqldump 将第一個名字識别為庫,其後的名字識别為表。指定該選項後,mysqldump會将所有名稱識别為庫,并在每個庫前增加 create database 和 use database 語句。
9
disable-keys
在插入資料前後增加 /!40000 alter table tab_name disable keys / 和 /!40000 alter table tab_name enable keys / 語句來加速插入。該選項僅對 myisam 引擎表的非唯一索引有效。
10
events
導出資料庫内的計劃事件(定時任務)
11
extended-insert
使用擴充的 insert 語句,一條 insert 語句插入多行。
12
hex-blob
以16進制導出 binary、varbinary、blob 類型資料。
如果跨版本遷移資料,建議增加該選項。
13
ignore-table=db.tab
不導出某表或視圖。格式:庫名.表名(db.tab)。可以多次使用該選項來忽略多張表。
14
max-allowed-packet
24 mb
24 mb - 1 gb
mysqldump 和 rds 執行個體通信緩存最大值。預設24 mb。最大 1 gb。
15
no-create-db
輸出中不包含 create database 語句
16
no-create-info
輸出中不包含 create table 語句
17
no-data
不導出資料
18
opt
啟用 --add-drop-table, --add-locks, --create-options --disable-keys, --extended-insert, --lock-tables, --quick, --set-charset; 可以通過指定 skip-opt 選項關閉預設 opt 選項。
19
dump-date
如果指定了 --comments 選項(預設開啟),在輸出的注釋中顯示導出日期時間。
20
routines
導出存儲過程和函數(預設不導出)
21
result-file
将輸出重定向到檔案
22
set-charset
在導出檔案中加上 set names default_chararacter_set
23
triggers
導出表上的 trigger
all-databases
false, true
導出所有資料庫,包括 mysql
flush-logs
導出前在執行個體中執行 flush logs; 指令
flush-privileges
導出 mysql 系統庫後,輸出中包含 flush privileges; 指令
在資料導出期間放置 global read lock,所有庫下的所有表在導出期間為隻讀。自動關閉 lock-tables 和 single-transaction 選項。
tab=dir_name
在指定的目錄下生成 tbl_name.sql 檔案(包含表建立語句)和 以 tab 作為分隔符的tbl_name.txt文本格式的資料檔案。
--all-databases: rds for mysql 普通使用者對 mysql 庫中部分表沒有權限,是以不能導出全部庫表。
--flush-logs: rds for mysql 普通使用者沒有 reload 權限,是以不能執行 flush logs; 指令。
--flush-privileges:因為 rds for mysql 不支援 mysql 系統庫的導出,是以沒必要使用該選項。
--lock-all-tables:因為 rds for mysql 普通使用者沒有 reload 權限,是以不能使用該選項。
--tab=dir_name:該選項要求 mysqldump 和 rds for mysql 執行個體在同一實體機上,是以不支援。但該選項可以和 --no-data 選項搭配使用來擷取表的建立語句。
rds for mysql 支援執行個體和單庫級别的邏輯備份。
邏輯備份執行期間不會影響主執行個體的正常使用。
邏輯備份導入權限問題請參考:rds for mysql權限問題(錯誤代碼:1227,1725)