Mysqldump mysql
Mysqldump客戶端程序執行邏輯備份,能夠生產一組SQL語句,這些語句能夠執行重現原始數據庫對象定義和表數據;它能夠轉存一個或多個數據庫進行備份或者轉移到其餘數據庫。Mysqldump命令也能生成csv文件或其餘分隔符的文本,後者XML格式文件;sql
Mysqldump必須有SELECT 選項for dumptable,SHOW VIEW權限for 存儲視圖,TRIGGER 存儲觸發器;shell
導入dump文件的時候,你必須有這些語句的執行權限;數據庫
性能和可伸縮性考慮安全
Mysqldump的優勢包括查看或編輯輸出前的方便和靈活性,你能夠爲了開發或者DBA工做克隆一個數據庫,或者生產輕量級的測試數據庫。對於大量的數據,即便備份花費時間少,可是恢復的時候也會花費大量時間;服務器
調用語法socket
數據量大的狀況下,推薦物理備份,以原有格式備份數據文件,而且快速導入;性能
若是你的表主要是InnoDB的,或者Myisam和InnoDB混合的,考慮使用Mysqlbackup命令。它爲InnDB提供最小的中斷性能。Mysqlbakcup也能夠備份Myisam和其餘引擎;測試
Mysqldump如今能夠一行行地獲取表內容,或者獲取整個表數據,獲取的時候會將數據加載到內存中,數據量大的狀況下,加載過多數據會發生問題,這個時候就能夠--quick(--opt)選項來一行行地獲取數據;ui
語法調用:
有三種方法使用mysqldump:
Mysqldump[option] db_name [tb1_name …] 備份庫中某些表
Mysqldump[option] --databases db_name… 備份指定數據庫
Mysqldump[option] --all-databases 備份整個數據庫
查看你的版本語法支持:mysqldump --help
選項-語法(字母順序)
--add-drop-database
--add-drop-table
--add-drop-trigger
--add-locks 對每一個轉存的表進行LOCK和UNLOCK操做;
--all-databases 備份全部數據庫
--bind-address 指定mysql地址
--comment 增長註釋
--compress 壓縮全部信息
--databases 將全部名稱參數解釋爲數據庫名稱
--debug 記錄debug log信息
--debug-check 退出的時候打印debug信息
--default-character-set 指定默認字符集
--delete-master-logs dump後刪除全部二進制日誌
--flush-logs 開始存儲以前刷新日誌文件
--force 及時發生錯誤也繼續執行
--help 顯示幫助信息
--host 鏈接的host地址
--ignore-error 忽略指定錯誤
--ignore-table 忽略指定表
--lock-all-tables 鎖定全部庫的全部表
--lock-tables dump前,鎖定全部表
--log-error 記錄告警和錯誤
--no-create-db 不記錄create database語句
--no-create-info 不記錄create table語句
--no-data 不記錄表內容
--order-by-primary 以主鍵或第一個惟一索引排序
--password 當鏈接服務器的時候輸入密碼
--port 指定端口
--protocol 指定協議
--quick
--replace
--secure-auth 不以老的格式發送密碼給服務器
--set-charset 指定字符集
--single-transaction
--skip-add-drop-table 每一個CREATE TABKE前,跳過DROPTABLE
--skip-add-lock 不加鎖
--skip-comments 不加註釋
--skip-set-charset 跳過字符集設置
--skip-trigger 跳過觸發器複製
--ssl 啓用加密鏈接
--ssl-mode 以安全模式鏈接
--triggers 複製觸發器
--user
--verbose
--where
--xml 產生xml文件
鏈接選項
--bind-address=ip_address 鏈接到指定地址
--compress, -C 壓縮server和client間發送的全部信息
--host=host_name, -h host_name
--password[=password], -p[password]
--port=port_num, -P port_num
--protocol={TCP|SOCKET|PIPE|MEMORY}
--socket=path, -S path
--user=user_name, -u user_name 提供用戶名
max_allowed_packet C/S間通訊支持的最大buffer,默認24M,最大1G
選項-文件
--defaults-file=file_name 使用file_name而不是全路徑名
案例:
備份整個數據庫文件
shell> mysqldump db_name > backup-file.sql
將dump文件加載到sql
shell> mysql db_name < backup-file.sql
從新加載的另外一方式:
shell> mysql -e "source /path-to-backup/backup-file.sql"db_name
一個命令導出幾個實例
shell> mysqldump --databases db_name1 [db_name2...] > my_databases.sql
dump全部數據庫
shell> mysqldump --all-databases >all_databases.sql
InnoDB中,提供在線備份
shell> mysqldump --all-databases --master-data--single-transaction > all_databases.sql
mysqldump能夠用於升級/降級的兼容性測試:
mysqldump--all-databases --no-data --routines --events > dump-defs.sql
由於沒有導入數據,因此速度快,當驗證兼容性正常的時候,再行導入數據
mysqldump--all-databases --no-create-info > dump-data.sql
限制
默認狀況下不會複製INFORMATION_SCHEMA,performance_schema信息
SCHEMA主要用於收集服務器性能參數,且庫裏表的存儲引擎均爲PERFORMANCE_SCHEMA
這張數據表保存了MySQL服務器全部數據庫的信息。如數據庫名,數據庫的表,表欄的數據類型與訪問權限等。
若是想要複製這些信息,必須加上—databases選項去指定這2個庫;
驗證
Step1 作備份mysqldump--databases itdb > itdb.txt 備份itdb庫
cat itdb.txt能夠查看裏面內容
Step2: 刪除itdb庫;
Step3: itdb恢復 mysql < itdb.txt
Step4: 驗證