mysqldump 資料庫備份程式
mysqldump 資料庫備份程式
mysqldump客戶端工具執行邏輯備份,生成一組SQL語句可以用來執行重新建立原資料庫物件定義和表資料。它dumps一個或多個MySQL資料庫的備份或者傳輸到另外的伺服器。mysqldump命令也可以生成CSV或,其它文字或XML格式的輸出
mysqldump的優點是在還原之前它可以方便與靈活的檢視或者編輯輸出。可以克隆資料庫來給開發人員和DBA使用,或者提供測試環境。它並不是一種用來備份大量資料的快速或可擴充套件的方案。使用大資料大小,即使備份操作花費的時間合理,但還原資料可能非常緩慢因為重放SQL語句呼叫磁碟I/O來執行插入操作,索引建立等等。
對於大規模的備份和還原,物理備份更合適,可以以它們的原有格式來複制資料檔案來快速完成還原操作:
.如果你的表主要是InnoDB表,或者如果你有一種混合的InnoDB與MyISAM表,可以考慮MySQL企業級備份產品的mysqlbackup命令。它為InnoDB備份提供了最好的效能並且破壞性最小,它也可以從MyISAM和其它儲存引擎中備份資料表,並且它提供了許多不同的選項來適應不同的備份場景。
mysqldump可以逐行檢索和dump表的內容或者它可以在dump它之前從一個表與記憶體的快取中來檢索整個內容。如果dump一個大表從記憶體中的快取中檢索可能是一個問題。為了逐行dump表,使用--quick選項(或--opt,它啟用--quick)--opt選項(因此--quick)預設被啟用,因此啟用記憶體快取,使用--skip-quick選項.
如果使用一個最近版本的mysqldump來生成一個dump被載入到一箇舊版本的MySQL伺服器中,使用--skip-opt選項來代替--extended-insert選項。
有三種常用方式來使用mysqldump命令來完成對一個或多個表,一個或多個資料庫,或整個MySQL伺服器來進行dump:
shell> mysqldump [options] db_name [tbl_name ...] shell> mysqldump [options] --databases db_name ... shell> mysqldump [options] --all-databases
為了dump整個資料庫,在db_name後面不要接任何表名,或者使用--database或--all-databases選項。
mysqldump支援以下選項,它可以在命令列或在選項檔案中的[mysqldump]與[client]組中進行指定。
mysqldump選項:
--add-drop-database 在每個create database語句之前加上drop database語句
--add-drop-table 在每個create table語句之前加上drop table語句
--add-drop-trigger 在每個create trigger語句之前加上drop table語句
--add-locks 使用lock tables與unlock tables語句來包圍每個表的dump
--all-databases dump所有資料庫中的所有表
--allow-keywords 允許建立關鍵字列名
--apply-slave-statements 在change master語句之前包含stop slave,在結束輸出之前包含start slave
--bind-address 使用特定的網路介面來連線MySQL伺服器
--character-sets-dir 安裝字符集的目錄
--comments 新增註釋到dump檔案中
--compact 產生更緊湊的輸出
--compatible 產生的輸出將與其它的資料庫系統或者舊版本的MySQL伺服器更相容
--complete-insert 使用完整的insert語句包括列名
--compress 對在客戶端和伺服器之間傳送的所有資訊進行壓縮
--create-options 在create table語句中包含所有的MySQL特定的表選項
--databases 將所有的命名引數解釋為資料庫名
--debug 寫除錯日誌
--debug-check 當程式退出時列印除錯資訊
--debug-info 當程式退出時列印除錯資訊,記憶體與CPU統計資訊
--default-auth 要使用的身份認證外掛
--default-character-set 指定的預設字符集
--default-extra-file 除了常用的選項檔案外還要讀取的選項檔案
--default-file 只讀指定的選項檔案
--default-group-suffix 選項組字尾值
--delete-master-logs 在一個主複製伺服器上,在執行dump操作後刪除binary日誌檔案
--disable-keys 對於每個表,圍繞insert語句使用語句來禁用與啟用關鍵字
--dump-date 如果--comments被指定,包含dump日期作為"Dump completed on"註釋
--dump-slave 包含change master語句來列出slave's master相關的二進位制日誌
--enable-cleartext-plugin 使用cleartext身份認證外掛
--events 來自轉儲資料庫的轉儲事件
--extended-insert 使用多行插入語法
--fields-enclosed-by 這個選項與--tab選項一起使用並且與load data infile相關子句有相同的意思
--fields-escaped-by 這個選項與--tab選項一起使用並且與load data infile相關子句有相同的意思
--fields-optionally-enclosed-by 這個選項與--tab選項一起使用並且與load data infile相關子句有相同的意思。
--fields-terminated-by 這個選項與--tab選項一起使用並且與load data infile相關子句有相同的意思
--flush-logs 在開始dump之前清空MySQL伺服器的日誌檔案
--flush-privileges 在dump MySQL資料庫後釋出一個flush privileges語句。
--force 在一個表被dump時即使出現錯誤也會繼續
--help 顯示幫助資訊並退出
--hex-blob 使用十六進位制表示法來dump二進位制列
--host 要連線的主機(IP地址或主機名)
--ignore-error 忽略特定的錯誤資訊
--ignore-table 不dump指定的表
--include-master-host-port 在使用--dump-slave生成的change master語句中包含master_host/master_port選項
--insert-ignore 寫insert ignore而不是insert語句
--lines-terminated-by 這個選項與--tab選項一起使用並且有與load data infile相關子句相同的意思
--lock-all-tables 跨所有資料庫鎖定所有表
--lock-tables 在dump他們之前鎖定所有表
--log-error 將警告與錯誤追加到指定檔案
--master-data 輸出所寫入的二進位制日誌檔名與位置
--max_allowed_packet 傳送到到伺服器或從伺服器接收到的最大包長度
-net_buffer_length TCP/IP與socket通訊的緩衝大小
--no-autocommit 對於每個dump表的insert語句包含了set autocommit=0與commit語句
--no-create-db 不寫create database語句
--no-create-info 對於重建的每個dump表不寫create table語句
--no-data 不dump表的內容
--no-defaults 不讀取選項檔案
--no-set-names 與--skip-set-charset相同
--no-tablespaces 在輸出中不寫入任何create logfile group或create tablespace語句
--opt 對於--add-drop-table --add-locks --create-options --disable-kyes --extended-insert --lock-tables --quick --sset-charset的速記法
--order-by-primary 透過主鍵或它的第一個唯一索引排序來dump每個表的行記錄
--password 當連線伺服器時使用的密碼
--pipe 在Windows上,使用命名管道連線伺服器
--plugin-dir 外掛被安裝的目錄
--port 用於連線的TCP/IP埠號
--print-defaults 列印預設選項
--protocol 使用的連線協議
--quick 從伺服器中一次一行地檢索資料
--quote-names 引號內的識別符號
--replace 寫replace語句而不是insert語句
--result-file 指示輸出到指定檔案
--routines 從被dump的資料庫中dump儲存程式(過程與函式)
--secure-auth 不使用舊格式傳送密碼到伺服器
--set-charset 新增set names default_character_set到輸出中
--set-gtid-purged 是否向輸出新增set @@global.gtid_purged
--shared-memory-base-name 用於共享記憶體連線的共享記憶體名
--single-transaction 在從伺服器dump資料之前執行begin sql語句
--skip-add-drop-table 在每個create table語句之前不新增drop table語句
--skip-add-locks 不新增鎖
--skip-comments 不新增註釋到dump檔案
--skip-compact 不產生更多緊湊輸出
--skip-disable-keys 不禁用關鍵字
--skip-extended-insert 關閉擴充套件插入
--skip-opt 關閉--opt選項集
--skip-quick 不從伺服器一次一行地檢索表的行
--skip-quote-names 不要引用識別符號
--skip-set-charset 不寫set names語句
--skip-triggers 不dump觸發器
--skip-tz-utc 關閉tz-utc
--socket 對於本地連線,使用的Unix socket檔案
--ssl 啟用加密連線
--ssl-ca 包含可信SSL CA列表的檔案路徑
--ssl-capath 包含PEM格式可信SSL CA認證的目錄路徑
--ssl-cert 包含PEM格式X509認證的檔案路徑
--ssl-cipher 用於連線加密的允許密碼列表
--ssl-crl 包含證照撤銷列表的檔案路徑
--ssl-crlpath 包含證照撤銷列表檔案的目錄的路徑
--ssl-key 包含PEM格式的X509 鑰匙的檔案路徑
--ssl-mode 連線伺服器的安全狀態
--ssl-verify-server-cert 根據連線到伺服器時使用的主機名驗證伺服器證照公共名稱值
--tab 生成用製表符分隔的資料檔案
--tables 覆蓋--database或-B選項
--tls-version 對於加密連線允許的連線協議
--triggers 對於每個被dump的表dump觸發器
--tz-utc 新增set time_zone='+00:00'到dump檔案
--user 連線伺服器時所使用的使用者名稱
--verbose 詳細模式
--version 顯示版本資訊並退出
--where 透過指定where條件只dump所選擇的行
--xml 生成XML輸出
1、備份命令
格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --database 資料庫名 > 檔名.sql
例如: mysqldump -h 192.168.1.100 -p 3306 -uroot -ppassword --database cmdb > /data/backup/cmdb.sql
2、備份壓縮
匯出的資料有可能比較大,不好備份到遠端,這時候就需要進行壓縮
格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --database 資料庫名 | gzip > 檔名.sql.gz
例如: mysqldump -h192.168.1.100 -p 3306 -uroot -ppassword --database cmdb | gzip > /data/backup/cmdb.sql.gz
3、備份同個庫多個表
格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --database 資料庫名 表1 表2 .... > 檔名.sql
例如 mysqldump -h192.168.1.100 -p3306 -uroot -ppassword cmdb t1 t2 > /data/backup/cmdb_t1_t2.sql
4、同時備份多個庫
格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --databases 資料庫名1 資料庫名2 資料庫名3 > 檔名.sql
例如:mysqldump -h192.168.1.100 -uroot -ppassword --databases cmdb bbs blog > /data/backup/mutil_db.sql
5、備份例項上所有的資料庫
格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --all-databases > 檔名.sql
例如:mysqldump -h192.168.1.100 -p3306 -uroot -ppassword --all-databases > /data/backup/all_db.sql
6、備份資料出帶刪除資料庫或者表的sql備份
格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --add-drop-table --add-drop-database 資料庫名 > 檔名.sql
例如:mysqldump -uroot -ppassword --add-drop-table --add-drop-database cmdb > /data/backup/all_db.sql
7、備份資料庫結構,不備份資料
格式:mysqldump -h主機名 -P埠 -u使用者名稱 -p密碼 --no-data 資料庫名1 資料庫名2 資料庫名3 > 檔名.sql
例如:mysqldump --no-data –databases db1 db2 cmdb > /data/backup/structure.sql
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2871757/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux基礎命令---mysqldump資料庫備份LinuxMySql資料庫
- Mysql備份和還原資料庫-mysqldumpMySql資料庫
- 使用Mysqldump備份和恢復MySQL資料庫MySql資料庫
- Mysqldump備份說明及資料庫備份指令碼分享-運維筆記MySql資料庫指令碼運維筆記
- mysqldump使用方法(MySQL資料庫的備份與恢復)MySql資料庫
- mysqlpump 資料庫備份程式MySql資料庫
- windows下使用mysqldump備份資料庫並上傳到阿里雲OSSWindowsMySql資料庫阿里
- 【mysqldump】mysqldump及備份恢復示例MySql
- mysqldump備份單庫、部分庫、全庫、及排除部分庫MySql
- Mysqldump的備份流程MySql
- MySQLDump的備份方法MySql
- mysqldump備份技巧分享MySql
- 資料庫備份資料庫
- 詳解MySQL資料備份之mysqldump使用方法MySql
- Mysqldump 在備庫進行備份時會阻塞備庫的sql_threadMySqlthread
- windows mysqldump備份指令碼WindowsMySql指令碼
- mysql 資料庫 備份MySql資料庫
- 資料庫備份策略資料庫
- MongoDB資料庫備份MongoDB資料庫
- oracle資料庫備份之exp增量備份Oracle資料庫
- mysqldump備份時如何保持資料的一致性MySql
- oracle 備份資料庫,匯出資料庫Oracle資料庫
- 簡單的mysqldump備份(windows)MySqlWindows
- 使用RMAN備份資料庫資料庫
- 資料庫備份恢復資料庫
- SQL資料庫備份管理SQL資料庫
- innobackupex 備份MySQL資料庫MySql資料庫
- 資料庫備份指令碼資料庫指令碼
- mysqldump 備份匯出資料排除某張表或多張表MySql
- Dedecms備份的資料檔案位置及備份資料庫的方法資料庫
- mysql5.6 mysqldump備份報錯MySql
- MySQL主從配置及mysqldump備份MySql
- BMMySQL定時備份資料庫(全庫備份)的實現meuMySql資料庫
- 利用RMAN備份重建資料庫資料庫
- mysql資料庫備份命令大全MySql資料庫
- dnf資料庫備份&遷移資料庫
- 2.4.14 Step 13: 備份資料庫資料庫
- 備份mysql資料庫報告MySql資料庫