新聞中心

保證數(shù)據(jù)安全的最重要的一個(gè)措施就是定期的對(duì)數(shù)據(jù)庫進(jìn)行備份。這樣即使發(fā)生了意外,也會(huì)把損失降到最低。
數(shù)據(jù)庫備份是指通過導(dǎo)出數(shù)據(jù)或者復(fù)制表文件的方式來制作數(shù)據(jù)庫的副本。當(dāng)數(shù)據(jù)庫出現(xiàn)故障或遭到破壞時(shí),將備份的數(shù)據(jù)庫加載到系統(tǒng),從而使數(shù)據(jù)庫從錯(cuò)誤狀態(tài)恢復(fù)到備份時(shí)的正確狀態(tài)。
本節(jié)主要介紹如何使用 mysqldump 命令備份數(shù)據(jù)庫。
mysqldump 命令執(zhí)行時(shí),可以將數(shù)據(jù)庫中的數(shù)據(jù)備份成一個(gè)文本文件。數(shù)據(jù)表的結(jié)構(gòu)和數(shù)據(jù)將存儲(chǔ)在生成的文本文件中。
備份一個(gè)數(shù)據(jù)庫
使用 mysqldump 命令備份一個(gè)數(shù)據(jù)庫的語法格式如下:
mysqldump -u username -p dbname [tbname ...]> filename.sql
對(duì)上述語法參數(shù)說明如下:
- username:表示用戶名稱;
- dbname:表示需要備份的數(shù)據(jù)庫名稱;
- tbname:表示數(shù)據(jù)庫中需要備份的數(shù)據(jù)表,可以指定多個(gè)數(shù)據(jù)表。省略該參數(shù)時(shí),會(huì)備份整個(gè)數(shù)據(jù)庫;
- 右箭頭“>”:用來告訴 mysqldump 將備份數(shù)據(jù)表的定義和數(shù)據(jù)寫入備份文件;
- filename.sql:表示備份文件的名稱,文件名前面可以加絕對(duì)路徑。通常將數(shù)據(jù)庫備份成一個(gè)后綴名為
.sql的文件。
注意:mysqldump 命令備份的文件并非一定要求后綴名為
.sql,備份成其他格式的文件也是可以的。例如,后綴名為
.txt 的文件。通常情況下,建議備份成后綴名為
.sql 的文件。因?yàn)椋缶Y名為
.sql 的文件給人第一感覺就是與數(shù)據(jù)庫有關(guān)的文件。
例 1
下面使用 root 用戶備份 test 數(shù)據(jù)庫下的 student 表。打開命令行(cmd)窗口,輸入備份命令和密碼,運(yùn)行過程如下:
C:\Windows\system32>mysqldump -uroot -p test student>C:\student.sql Enter password: ****
注意:mysqldump 命令必須在 cmd 窗口下執(zhí)行,不能登錄到 MySQL 服務(wù)中執(zhí)行。
輸入密碼后,MySQL 會(huì)對(duì) test 數(shù)據(jù)庫下的 student 數(shù)據(jù)表進(jìn)行備份。之后就可以在指定路徑下查看剛才備份過的文件了。student.sql 文件中的部分內(nèi)容如下:
-- MySQL dump 10.13 Distrib 5.7.29, for Win64 (x86_64)
--
-- Host: localhost Database: test
-- ------------------------------------------------------
-- Server version 5.7.29-log
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
--此處刪除了部分內(nèi)容
--
-- Table structure for table `student`
--
DROP TABLE IF EXISTS `student`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `student` (
`id` int(4) NOT NULL,
`name` varchar(20) DEFAULT NULL,
`stuno` int(11) DEFAULT NULL,
`age` int(4) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `student`
--
LOCK TABLES `student` WRITE;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT INTO `student` VALUES (1,'zhangsan',23,18),(2,'lisi',24,19),(3,'wangwu',25,18),(4,'zhaoliu',26,18);
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
......
-- Dump completed on 2019-03-09 13:03:15
student.sql 文件開頭記錄了 MySQL 的版本、備份的主機(jī)名和數(shù)據(jù)庫名。
文件中,以“--”開頭的都是 SQL 語言的注釋。以 “/*!40101” 等形式開頭的是與 MySQL 有關(guān)的注釋。40101 是 MySQL 數(shù)據(jù)庫的版本號(hào),這里就表示 MySQL 4.1.1。如果恢復(fù)數(shù)據(jù)時(shí),MySQL 的版本比 4.1.1 高,“/*!40101”和“*/”之間的內(nèi)容被當(dāng)作 SQL 命令來執(zhí)行。如果比 4.1.1 低,“/*!40101”和“*/”之間的內(nèi)容被當(dāng)作注釋?!?*!”和“*/”中的內(nèi)容在其它數(shù)據(jù)庫中將被作為注釋忽略,這可以提高數(shù)據(jù)庫的可移植性。
DROP 語句、CREATE 語句和 INSERT 語句都是數(shù)據(jù)庫恢復(fù)時(shí)使用的;“DROP TABLE IF EXISTS 'student' ”語句用來判斷數(shù)據(jù)庫中是否還有名為 student 的表,如果存在,就刪除這個(gè)表;CREATE 語句用來創(chuàng)建 student 表;INSERT 語句用來恢復(fù)所有數(shù)據(jù)。文件的最后記錄了備份的時(shí)間。
注意:上面 student.sql 文件中沒有創(chuàng)建數(shù)據(jù)庫的語句,因此,student.sql 文件中的所有表和記錄必須恢復(fù)到一個(gè)已經(jīng)存在的數(shù)據(jù)庫中?;謴?fù)數(shù)據(jù)時(shí),CREATE TABLE 語句會(huì)在數(shù)據(jù)庫中創(chuàng)建表,然后執(zhí)行 INSERT 語句向表中插入記錄。
備份多個(gè)數(shù)據(jù)庫
如果要使用 mysqldump 命令備份多個(gè)數(shù)據(jù)庫,需要使用 --databases 參數(shù)。備份多個(gè)數(shù)據(jù)庫的語法格式如下:
mysqldump -u username -P --databases dbname1 dbname2 ... > filename.sql
加上“--databases”參數(shù)后,必須指定至少一個(gè)數(shù)據(jù)庫名稱,多個(gè)數(shù)據(jù)庫名稱之間用空格隔開。
例 2
下面使用 root 用戶備份 test 數(shù)據(jù)庫和 mysql 數(shù)據(jù)庫。命令如下:
mysqldump -u root -p --databases test mysql>C:\testandmysql.sql
執(zhí)行完后,可以在
C:\下面看到名為 testandmysql.sql 的文件,這個(gè)文件中存儲(chǔ)著這兩個(gè)數(shù)據(jù)庫的信息。
備份所有數(shù)據(jù)庫
mysqldump 命令備份所有數(shù)據(jù)庫的語法格式如下:
mysqldump -u username -P --all-databases>filename.sql
使用“--all-databases”參數(shù)時(shí),不需要指定數(shù)據(jù)庫名稱。
例 3
下面使用 root 用戶備份所有數(shù)據(jù)庫。命令如下:
mysqldump -u root -p --all-databases > C:\all.sql
執(zhí)行完后,可以在
C:\ 下面看到名為 all.sql 的文件,這個(gè)文件中存儲(chǔ)著所有數(shù)據(jù)庫的信息。
本文標(biāo)題:MySQLmysqldump備份數(shù)據(jù)庫(附帶實(shí)例)
當(dāng)前路徑:http://m.fisionsoft.com.cn/article/dpphjjo.html


咨詢
建站咨詢
