日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysqldump 备份还原

發布時間:2024/1/1 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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???? 壓縮serverclient間發送的所有信息

??? --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 备份还原的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。