在日常維護工作當中經常會需要對數據進行導出操作,而mysqldump是導出數據過程中使用非常頻繁的一個工具;它自帶的功能參數非常多,文章中會列舉出一些常用的操作,在文章末尾會將所有的參數詳細說明列出來。
語法:
默認不帶參數的導出,導出文本內容大概如下:創建數據庫判斷語句-刪除表-創建表-鎖表-禁用索引-插入數據-啟用索引-解鎖表。
Usage: mysqldump [OPTIONS] database [tables] OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...] OR mysqldump [OPTIONS] --all-databases [OPTIONS]
1.導出所有數據庫
該命令會導出包括系統數據庫在內的所有數據庫
mysqldump -uroot -proot --all-databases >/tmp/all.sql 2.導出db1、db2兩個數據庫的所有數據
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
3.導出db1中的a1、a2表
注意導出指定表只能針對一個數據庫進行導出,且導出的內容中和導出數據庫也不一樣,導出指定表的導出文本中沒有創建數據庫的判斷語句,只有刪除表-創建表-導入數據
mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql
4.條件導出,導出db1表a1中id=1的數據
如果多個表的條件相同可以一次性導出多個表
mysqldump -uroot -proot --no-create-info --databases db1 --tables a1 --where="id='a'" >/tmp/a1.sql 5.生成新的binlog文件,-F
有時候會希望導出數據之后生成一個新的binlog文件,只需要加上-F參數即可
mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql 6.只導出表結構不導出數據,--no-data
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql 7.跨服務器導出導入數據
mysqldump --host=h2 -uroot -proot --databases db1 |mysql --host=h3 -uroot -proot db2 將h2服務器中的db1數據庫的所有數據導入到h3中的db2數據庫中,db2的數據庫必須存在否則會報錯
8.將主庫的binlog位置和文件名追加到導出數據的文件中,--dump-slave
注意:--dump-slave命令如果當前服務器是從服務器那么使用該命令會執行stop slave來獲取master binlog的文件和位置,等備份完后會自動執行start slave啟動從服務器。但是如果是大的數據量備份會給從和主的延時變的更大,使用--dump-slave獲取到的只是當前的從服務器的數據執行到的主的binglog的位置是(relay_mater_log_file,exec_master_log_pos),而不是主服務器當前的binlog執行的位置,主要是取決于主從的數據延時。
該參數在在從服務器上執行,相當于執行show slave status。當設置為1時,將會以CHANGE MASTER命令輸出到數據文件;設置為2時,會在change前加上注釋。
該選項將會打開--lock-all-tables,除非--single-transaction被指定。 |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信