天天看點

MySQLDUMP注意事項&使用技巧

MySQLDUMP大家并不陌生,這裡簡單說其備份流程,及注意事項等等;

   常用參數:

   -single-transaction :

   隻針對事務存儲引擎(Innodb)生成一緻性快照,其他引擎不能保證導     出是一緻的;備份期間禁止使用ALTER,DROP,RENAME,TRUNCATE這樣的語句,否則會導緻一緻性快     照失效;該選項自動關閉lock-tables;

   --master-data:

   該選項将binlog的file&pos添加的輸出中,自動啟用--lock-all-tables;若同時設定--single-transaction,則不會啟用--lock-all-tables選項(全局讀鎖隻會在開始dump時加一小段時間);自動關閉--lock-tables

   --lock-all-tables:

   全局讀鎖,自動關閉--single-transaction & --lock-tables

   --flush-logs:

   在開始導出前flush logs(一次導出N多資料庫時每個庫都會flush logs ;配合--lock-all-tables 或者master-data使用隻會重新整理一次);

   --delete-master-logs:

   備份完成後,删除db上的日志,自動啟用 --master-data

   --apply-slave-statements:

   在’CHANGE MASTER’前加上’STOP SLAVE’,在導出檔案的末尾加上’START SLAVE’.

   --flush-privileges:

   導出的資料庫中含有mysql DB時使用;

   -w --where :

   導出部分資料内容;

   -T /datadir/

   在DB上生成Create .sql and .txt files(這兩個檔案在同一台機器上才起作用,并且生成的檔案可以覆寫掉上次備份内容;在其他機器遠端連接配接使用該選項時,隻會生成.txt file,并且執行使用者必須有file,select權限,且生成的檔案不能覆寫到上次備份的内容)

   --tz-utc :對于跨時區導入導出資料很重要,預設該參數啟用,并SET TIME_ZONE=’+00:00’,是以從其他時區導入到本地區時,會預設+8:00小時,;如果要保留資料源的時間,還是使用--skip-tz-utc來過濾掉這個功能;

   --default-character-set=UTF8:

   關于字元集的問題,這個不多說,要確定 server版本和

   --innodb-optimize-keys(隻存在于percona版本中):

   使用innodb fast index 功能來重建二級索引;

   --include-master-host-port(隻存在于percona中) :

   Adds 'MASTER_HOST=<host>, MASTER_PORT=<port>' to 'CHANGE  MASTER TO..

   在5.1版本當中:用–master-data和–single-transaction來導出資料,因為--lock-tables被自動關閉,是以導出過程中隻會對目前正在做導出操作的表有IS鎖,已經完成或沒有開始的表,則不會加鎖。如果用預設--lock-tables打開的選項,則會先把所有庫的鎖加上,再進行導出操作,最後一次性釋放所有鎖。

   在5.5當中:最大的差別還是由于Meta data lock 的存在,使用--single-transaction時,事務内操作過的表都會持有MDL,是以不會被DDL破壞,還沒備份到的表不會持有MDL,是以可以進行DDL操作;

   mysqldump暫時不支援 同時導出多個庫中的多個資料表

   mysqludmp client版本相一緻;否則可能會出很多字元集或者其他的怪問題;

本文轉自 位鵬飛 51CTO部落格,原文連結:http://blog.51cto.com/weipengfei/1346400,如需轉載請自行聯系原作者