MySQL數據庫的備份與恢復(4)——mysqldump參數詳解

MySQL數據庫的備份與恢復(4)——mysqldump參數詳解

mysqldump是MySQL自帶的邏輯備份命令,備份文件包含一組SQL語句,可以通過執行這些語句來生成備份前的數據庫對象定義和表數據。mysqldump命令還可以生成CSV,其他分隔文本或XML格式的輸出。

mysqldump命令的格式如下:

mysqldump [options] [db_name [tbl_name ...]]

常用的[options]參數如下:

1、指定登錄用戶名

-uuser_name
--user=user_name

說明:指定與服務器連接時,MySQL使用的用戶名。

2、指定登錄主機

--host = host_name
-h host_name

說明:該參數可以省略,默認主機是localhost。

3、指定登錄密碼

-pyour_pass
--password[=your_pass]

說明:與服務器連接時使用的口令。

4、指定連接主機使用的端口號

-P port_num
--port=port_num

說明:指定與主機連接時使用的TCP/IP端口號(用於連接到localhost以外的主機)。

5、備份所有的數據庫

--all-databases
-A

說明:與使用–databases選項並命名所有數據庫相同。

6、備份指定的數據庫

--databases db_name1 db_name2 ...
-B db_name1 db_name2 ...

說明:
(1)如果省略該選項,mysqldump將第一個名稱參數視爲數據庫名稱,將後續名稱視爲表名稱,並且包含CREATE DATABASE和USE語句。
(2)使用該選項,則將所有名稱參數視爲數據庫名稱,CREATE DATABASE和USE語句包含在每個新數據庫之前的輸出中。
(3)該選項可用於備份INFORMATION_SCHEMA和performace_schema數據庫,這兩個數據庫即使使用–all-databases選項也不會進行備份。

7、只備份表結構

-d
--no-data   

說明:只導出表結構,不包含表中的數據。

8、只備份表中的數據

-t
--no-create-info

9、導出前刷新日誌文件(生成新的binlog文件)

-F
--flush-logs   

說明:導出數據之後生成一個新的binlog文件,便於恢復數據。

10、導出滿足指定條件的記錄

-w
--where='where-condition'   

說明:
(1)導出滿足指定查詢條件的記錄。
(2)如果條件中包含單引號,則該參數可以使用雙引號,比如:

[root@Mysql11 tmp]# mysqldump -uroot -p123456 hist stu --where="name='jack'" > /tmp/stu_name.sql;
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@Mysql11 tmp]# cat /tmp/stu_name.sql 
..........
--
-- Table structure for table `stu`
--

DROP TABLE IF EXISTS `stu`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `stu` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `address` varchar(20) DEFAULT NULL,
  `phone` char(11) DEFAULT NULL,
  `dept_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `stu`
--
-- WHERE:  name='jack'

LOCK TABLES `stu` WRITE;
/*!40000 ALTER TABLE `stu` DISABLE KEYS */;
INSERT INTO `stu` VALUES (3,'jack',20,'Zhengzhou','13675871454',1);
/*!40000 ALTER TABLE `stu` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

..............

-- Dump completed on 2020-07-02 12:16:55

11、導出文件格式爲文本文件

-T
--tab=path-to-some-directory   

說明:對於每個給定的表,創建一個table_name.sql文件(包含SQL CREATE 命令)和一個table_name.txt文件(包含數據)。

12、指定導出的文本文件的格式

--fields-enclosed-by=...   
--fields-optionally-enclosed-by=...   
--fields-escaped-by=...   
--fields-terminated-by=...

說明:這些選擇與-T選擇一起使用,並且有相應的LOAD DATA INFILE子句相同的含義。

例如:

[root@Mysql11 tmp]# mysqldump -uroot -p123456 hist stu --tab='/tmp' --fields-terminated-by=',' 
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@Mysql11 tmp]# ls /tmp
stu.sql  stu.txt
[root@Mysql11 tmp]# cat /tmp/stu.txt
1,zhangsan,20,Xinxiang,15578941258,1
2,tom,20,Xinxiang,13778942222,1
3,jack,20,Zhengzhou,13675871454,1
4,john,21,Zhengzhou,13937681111,2
5,mark,22,Aanyang,13055882233,2

13、保證導出數據的一致性狀態

--single-transaction

說明:
(1)該參數適合innoDB引擎的數據庫備份;
(2)innoDB表在備份時,通常啓用選項–single-transaction來保證備份的一致性,實際上它的工作原理是設定本次會話的隔離級別爲:repeatable read,以確保本次會話備份時,不會看到其他會話已經提交了的數據。

14、指定導出文件的字符集

--default-character-set=name

例如:

[root@Mysql11 tmp]# mysqldump -uroot -p123456 --databases hist --default-character-set=utf8 > /tmp/hist.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

15、將當前服務器binlog的位置和文件名追加到輸出文件

--master-data=[1,2]

說明:該參數記錄當前服務器的binlog,相當於執行show master status,狀態(file,position)的值。

例如:

[root@Mysql11 tmp]# mysqldump -uroot -p123456 --master-data=1 hist > /tmp/hist.sql
mysqldump: [Warning] Using a password on the command line interface can be insecure.

[root@Mysql11 tmp]# cat /tmp/hist.sql
.............

CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=154;
--
-- Table structure for table `course`
--
......................

16、將主庫的binlog位置和文件名追加到導出數據的文件中

--dump-slave=[1,2]

說明:
(1)如果當前服務器是從服務器,使用該命令會執行stop slave來獲取master binlog的文件和位置,等備份完後會自動執行start slave啓動從服務器。使用–dump-slave獲取到的只是當前的從服務器的數據執行到的主的binglog的位置,即:relay_mater_log_file,exec_master_log_pos,而不是主服務器當前的binlog執行的位置,取決於主從的數據延時。
(2)該參數在從服務器上執行,相當於執行show slave status。
(3)當設置爲1時,將會以CHANGE MASTER命令輸出到數據文件,設置爲2時,會在change前加上註釋。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章