mysqldump備份單庫、部分庫、全庫、及排除部分庫

T1YSL發表於2022-09-01

本文針對MySQL的mysqldump工具在使用時,對於某些場景需要備份多個資料庫或者排除部分資料庫的場景進行舉例。主要針對於備份的庫是否符合預期,其餘一些備份引數可根據使用場景增加調整。

我的環境的mysql的版本為

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.27    |
+-----------+
1 row in set (0.00 sec)

原本MySQL資料庫包含7個資料庫。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| database1          |
| database2          |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| xmaster            |
+--------------------+
7 rows in set (0.00 sec)

1.mysqldump備份單庫

( --database database1 )

備份database1單庫

image.png

[mysql@mogdb-kernel-0005 back_demo]$ ll
total 0
[mysql@mogdb-kernel-0005 back_demo]$ mysqldump -u root -p'mysql' --databases  database1 > backup_01.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[mysql@mogdb-kernel-0005 back_demo]$ ll
total 4
-rw-rw-r-- 1 mysql mysql 1470 Aug 16 12:13 backup_01.sql
[mysql@mogdb-kernel-0005 back_demo]$ cat backup_01.sql | grep -i 'create database'
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
[mysql@mogdb-kernel-0005 back_demo]$

其中mysqldump: [Warning] Using a password on the command line interface can be insecure警告是因為我使用了明文密碼的原因。

2.mysqldump備份部分庫

( --database database1 database2)
備份database1和database2兩個庫
image.png

[mysql@mogdb-kernel-0005 back_demo]$ ll
total 4
-rw-rw-r-- 1 mysql mysql 1470 Aug 16 12:13 backup_01.sql
[mysql@mogdb-kernel-0005 back_demo]$ mysqldump -u root -p'mysql' --databases  database1  database2> backup_02.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[mysql@mogdb-kernel-0005 back_demo]$ ll
total 8
-rw-rw-r-- 1 mysql mysql 1470 Aug 16 12:13 backup_01.sql
-rw-rw-r-- 1 mysql mysql 1687 Aug 16 12:29 backup_02.sql
[mysql@mogdb-kernel-0005 back_demo]$ cat backup_02.sql | grep -i 'create database'
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database2` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;

3.mysqldump備份全庫

( --all-databases ,或者 -A)
image.png

[mysql@mogdb-kernel-0005 back_demo]$ ll
total 8
-rw-rw-r-- 1 mysql mysql 1470 Aug 16 12:13 backup_01.sql
-rw-rw-r-- 1 mysql mysql 1687 Aug 16 12:29 backup_02.sql
[mysql@mogdb-kernel-0005 back_demo]$ mysqldump -u root -p'mysql' --all-databases > backup_03.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[mysql@mogdb-kernel-0005 back_demo]$ ll
total 1200
-rw-rw-r-- 1 mysql mysql    1470 Aug 16 12:13 backup_01.sql
-rw-rw-r-- 1 mysql mysql    1687 Aug 16 12:29 backup_02.sql
-rw-rw-r-- 1 mysql mysql 1219017 Aug 16 12:44 backup_03.sql
[mysql@mogdb-kernel-0005 back_demo]$ cat backup_03.sql  | grep 'CREATE DATABASE \/\*\!32312 IF NOT EXISTS\*\/ '
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database1` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database2` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `xmaster` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;

4.mysqldump排除部分庫備份

(利用xargs和grep篩選)
image.png
排除掉information_schema、performance_schema、sys、mysql、database1幾個庫,只備份其餘的庫。

[mysql@mogdb-kernel-0005 back_demo]$ ll
total 1200
-rw-rw-r-- 1 mysql mysql    1470 Aug 16 12:13 backup_01.sql
-rw-rw-r-- 1 mysql mysql    1687 Aug 16 12:29 backup_02.sql
-rw-rw-r-- 1 mysql mysql 1219017 Aug 16 12:44 backup_03.sql
[mysql@mogdb-kernel-0005 back_demo]$ mysql -uroot -p'mysql' -N -e "show databases;"|grep -Ev "information_schema|performance_schema|sys|mysql|database1"|xargs mysqldump -uroot -p'mysql' --databases > backup_04.sql
mysql: [Warning] Using a password on the command line interface can be insecure.
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[mysql@mogdb-kernel-0005 back_demo]$ ll
total 1204
-rw-rw-r-- 1 mysql mysql    1470 Aug 16 12:13 backup_01.sql
-rw-rw-r-- 1 mysql mysql    1687 Aug 16 12:29 backup_02.sql
-rw-rw-r-- 1 mysql mysql 1219017 Aug 16 12:44 backup_03.sql
-rw-rw-r-- 1 mysql mysql    2271 Aug 16 12:50 backup_04.sql
[mysql@mogdb-kernel-0005 back_demo]$ cat backup_04.sql  | grep 'CREATE DATABASE \/\*\!32312 IF NOT EXISTS\*\/ '
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `database2` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/ `xmaster` /*!40100 DEFAULT CHARACTER SET utf8mb4 C


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2913034/,如需轉載,請註明出處,否則將追究法律責任。

相關文章