在日常維護作業當中經常會需要對資料進行匯出操作,而mysqldump是匯出資料程序中使用非常頻繁的一個工具;它自帶的功能引數非常多,文章中會列舉出一些常用的操作,在文章末尾會將所有的引數詳細說明列出來,
參見博客,
語法
默認不帶引數的匯出,匯出文本內容大概如下:創建資料庫判斷陳述句-洗掉表-創建表-鎖表-禁用索引-插入資料-啟用索引-解鎖表,
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
匯出所有資料庫
mysqldump -uroot -proot --all-databases >/tmp/all.sql
匯出db1、db2的資料庫中所有資料
mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql
匯出db1中的a1、a2表
注意匯出指定表只能針對一個資料庫進行匯出,且匯出的內容中和匯出資料庫也不一樣,匯出指定表的匯出文本中沒有創建資料庫的判斷陳述句,只有洗掉表-創建表-匯入資料
mysqldump -uroot -proot --databases db1 --tables a1 a2 >/tmp/db1.sql
條件匯出,匯出db1表a1中id=1的資料
如果多個表的條件相同可以一次性匯出多個表
欄位是整形
mysqldump -uroot -proot --databases db1 --tables a1 --where='id=1' >/tmp/a1.sql
欄位是字串,并且匯出的sql中不包含drop table,create table
mysqldump -uroot -proot --no-create-info --databases db1 --tables a1 --where="id='a'" >/tmp/a1.sql
生成新的binlog檔案,-F
有時候會希望匯出資料之后生成一個新的binlog檔案,只需要加上-F引數即可
mysqldump -uroot -proot --databases db1 -F >/tmp/db1.sql
只匯出表結構不匯出資料,--no-data
mysqldump -uroot -proot --no-data --databases db1 >/tmp/db1.sql
服務器匯出匯入資料
mysqldump --host=h1 -uroot -proot --databases db1 |mysql --host=h2 -uroot -proot db2
將h1服務器中的db1資料庫的所有資料匯入到h2中的db2資料庫中,db2的資料庫必須存在否則會報錯
mysqldump --host=192.168.80.137 -uroot -proot -C --databases test |mysql --host=192.168.80.133 -uroot -proot test
將主庫的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被指定,
在執行完后會自動關閉--lock-tables選項,--dump-slave默認是1
mysqldump -uroot -proot --dump-slave=1 --databases db1 >/tmp/db1.sql
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/125305.html
標籤:Linux
上一篇:Linux簡介[學習筆記]
下一篇:作業系統-信號量臨界區保護
