天天看點

mysql常用邏輯備份mysqldump的使用方法

作者:blueic1115

概述:很多時候我們對mysql的備份有不同的需求,比如我們隻需要對mysql資料庫執行個體中的某一個庫的資料、某一個庫的表結構、某個表的資料、某個表的結構、多個表的資料、多個表的結構、或者是對一些指定字首的表的資料、結構進行備份等等,為了不影響目前的資料寫入,我們在操作的時候需要不能鎖表 等等。

#備份所有資料庫

1、mysqldump -h127.0.0.1 -P3306 -uroot -p --all-databases --master-data=2 --single-transaction --quick -R --events > /backup/all_db.sql

( 說明: --single-transaction 使用該參數,使備份innodb表時不鎖表進行,但官方說法需要增加參數 --skip-opt ,因為--opt參數預設開啟,包含了鎖表方法,需要注意。

--master-data=2 備份的檔案中增加注釋的binlog檔案,以及pos節點,以便增加主從時使用,當然,不需要的時候也可以不加此參數。

--quick 該參數用于加快資料備份。 )

#備份指定字首的表

1、mysqldump -h127.0.0.1 -P33106 -uroot -p dedeutfdb $(mysql -h127.0.0.1 -P33106 -uroot -p -D dedeutfdb -Bse "show tables like 'dede_sys_%'") > /tmp/4.sql

#同上,最後的_需要轉義,比對帶有dede_sys_的表

2、mysqldump -h127.0.0.1 -P33106 -uroot -p dedeutfdb $(mysql -h127.0.0.1 -P33106 -uroot -p -D dedeutfdb -Bse "show tables like 'dede_sys\_%'") > /tmp/4.sql

#導出指定的多個表(包含表資料和表結構)

1、mysqldump -h127.0.0.1 -P33106 -uroot -p dedeutfdb --tables dede_sys_enum dede_sys_module > /tmp/2tables01.sql (會鎖表)

2、mysqldump -h127.0.0.1 -P33106 -uroot -p dedeutfdb --single-transaction --skip-opt --tables dede_sys_enum dede_sys_module > /tmp/2tables02.sql (不鎖表)

#隻導出指定資料庫的 資料内容 或 表結構

-t, --no-create-info Don't write table creation info.

1、mysqldump -h127.0.0.1 -P33106 -uroot -p -t dedeutfdb > /tmp/nocreate01.sql

-d, --no-data No row information.

1、mysqldump -h127.0.0.1 -P33106 -uroot -p -d dedeutfdb > /tmp/nodata01.sql

2、mysqldump -h127.0.0.1 -P33106 -uroot -p --skip-opt -d dedeutfdb > /tmp/nodata02.sql (加參數--skip-opt,沒有“DROP TABLE IF EXISTS”等語句)

#備份多個指定的資料表的表結構(不包含資料)

1、mysqldump -h127.0.0.1 -P33106 -uroot -p -d dedeutfdb --tables dede_sys_enum dede_sys_module > /tmp/2tables-nodata01.sql

#備份多個指定的資料表的資料(不包含建立表結構)

1、mysqldump -h127.0.0.1 -P33106 -uroot -p -t dedeutfdb --tables dede_sys_enum dede_sys_module > /tmp/2tables-nocreate01.sql

mysql常用邏輯備份mysqldump的使用方法

圖一 有鎖表

2、mysqldump -h127.0.0.1 -P33106 -uroot -p -t dedeutfdb --single-transaction --skip-opt --tables dede_sys_enum dede_sys_module > /tmp/2tables-nocreate01.sql (不鎖表操作方法,但插入資料方式有變化,也可以下面3的方法)

mysql常用邏輯備份mysqldump的使用方法

圖二 沒有鎖

3、mysqldump -h127.0.0.1 -P33106 -uroot -p -t dedeutfdb --single-transaction --skip-add-drop-table --skip-add-locks --tables dede_sys_enum dede_sys_module > /tmp/2tables-nocreate01.sql

mysql常用邏輯備份mysqldump的使用方法

圖三沒有鎖

#排除表

1、mysqldump -h127.0.0.1 -P33106 -uroot -p dedeutfdb --ignore-table=dedeutfdb.dede_addonarticle > j01.sql (可以多個--ignore-table=dedeutfdb. 排除多個表)

#備份所有資料庫

1、mysqldump -h127.0.0.1 -uroot -pPWD123 -A > db-all.sql

// -A, --all-databases // 所有資料庫 , 包括mysql等

#備份指定的某個或幾個資料庫

2、mysqldump -h127.0.0.1 -uroot -pPWD123 -B db01 db02 > db1-2.sql

-B, --databases // 指定資料庫 ,備份多個庫時必須指定這個參數,否則會認為db02是db01中的表。

#備份一個庫,使用-B, --databases參數的差別

mysql常用邏輯備份mysqldump的使用方法

圖四

1、mysqldump -h127.0.0.1 -uroot -pPWD123 -B db01 > db01.sql

2、mysqldump -h127.0.0.1 -uroot -pPWD123 db01 > db01.sql

(以上2個方式都是備份單個資料庫,但不同的是加參數時,會在sql中增加一下語句,

CREATE DATABASE /*!32312 IF NOT EXISTS*/ `dedeutfdb` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `dedeutfdb`;

繼續閱讀