mysqldump 备份还原
Mysqldump
???????? Mysqldump客戶端程序執行邏輯備份,可以生產一組SQL語句,這些語句可以執行重現原始數據庫對象定義和表數據;它可以轉存一個或多個數據庫進行備份或者轉移到其他數據庫。Mysqldump命令也能生成csv文件或其他分隔符的文本,后者XML格式文件;
???????? Mysqldump必須有SELECT 選項for dumptable,SHOW VIEW權限for 存儲視圖,TRIGGER 存儲觸發器;
???????? 導入dump文件的時候,你必須有這些語句的執行權限;
性能和可伸縮性考慮
???????? Mysqldump的優點包括查看或編輯輸出前的方便和靈活性,你可以為了開發或者DBA工作克隆一個數據庫,或者生產輕量級的測試數據庫。對于大量的數據,即使備份花費時間少,但是恢復的時候也會花費大量時間;
調用語法
???????? 數據量大的情況下,推薦物理備份,以原有格式備份數據文件,并且快速導入;
???????? 如果你的表主要是InnoDB的,或者Myisam和InnoDB混合的,考慮使用Mysqlbackup命令。它為InnDB提供最小的中斷性能。Mysqlbakcup也可以備份Myisam和其他引擎;
???????? Mysqldump現在可以一行行地獲取表內容,或者獲取整個表數據,獲取的時候會將數據加載到內存中,數據量大的情況下,加載過多數據會發生問題,這個時候就可以--quick(--opt)選項來一行行地獲取數據;
?
語法調用:
???????? 有三種方法使用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: 驗證
總結
以上是生活随笔為你收集整理的mysqldump 备份还原的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STK资源
- 下一篇: Word+Excel+PPT 2016三