備份html
邏輯備份方法mysql
使用MYSQLDUMP命令備份sql
MYSQLDUMP是MYSQL提供的一個很是有用的數據庫備份工具。mysqldump命令執行時將數據庫備份成一個文本文件,數據庫
該文件中實際上包含了多個CREATE 和INSERT語句,使用這些語句能夠從新建立表和插入數據express
MYSQLDUMP的語法和選項服務器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
mysqldump -u
user
-p pwd -h host dbname[tbname,[tbname...]]>filename.sql
選項/
Option
做用/
Action
Performed
--add-drop-table
這個選項將會在每個表的前面加上
DROP
TABLE
IF EXISTS語句,這樣能夠保證導回MySQL數據庫的時候不會出錯,由於每次導回的時候,都會首先檢查表是否存在,存在就刪除
--add-locks
這個選項會在
INSERT
語句中捆上一個LOCK
TABLE
和UNLOCK
TABLE
語句。這就防止在這些記錄被再次導入數據庫時其餘用戶對錶進行的操做
-c
or
- complete_insert
這個選項使得mysqldump命令給每個產生
INSERT
語句加上列(field)的名字。當把數據導出導另一個數據庫時這個選項頗有用。
--delayed-insert 在INSERT命令中加入DELAY選項
-F
or
-flush-logs 使用這個選項,在執行導出以前將會刷新MySQL服務器的log.
-f
or
-
force
使用這個選項,即便有錯誤發生,仍然繼續導出
--full 這個選項把附加信息也加到CREATE TABLE的語句中
-l
or
-lock-tables 使用這個選項,導出表的時候服務器將會給表加鎖。
-t
or
-
no
-
create
- info
這個選項使的mysqldump命令不建立
CREATE
TABLE
語句,這個選項在您只須要數據而不須要DDL(數據庫定義語句)時很方便。
-d
or
-
no
-data 這個選項使的mysqldump命令不建立
INSERT
語句。
在您只須要DDL語句時,可使用這個選項。
--opt 此選項將打開全部會提升文件導出速度和創造一個能夠更快導入的文件的選項。
-q
or
-quick 這個選項使得MySQL不會把整個導出的內容讀入內存再執行導出,而是在讀到的時候就寫入導文件中。
-T path
or
-tab = path 這個選項將會建立兩個文件,一個文件包含DDL語句或者表建立語句,另外一個文件包含數據。DDL文件被命名爲table_name.sql,數據文件被命名爲table_name.txt.路徑名是存放這兩個文件的目錄。目錄必須已經存在,而且命令的使用者有對文件的特權。
-w
"WHERE Clause"
or
-
where
=
"Where clause "
如前面所講的,您可使用這一選項來過篩選將要放到 導出文件的數據。
假定您須要爲一個表單中要用到的賬號創建一個文件,經理要看今年(2004年)全部的訂單(Orders),它們並不對DDL感興趣,而且須要文件有逗號分隔,由於這樣就很容易導入到Excel中。 爲了完成這個任務,您可使用下面的句子:
bin/mysqldump –p –
where
"Order_Date >='2000-01-01'"
–tab = /home/mark –
no
-
create
-info –fields-terminated-
by
=, Meet_A_Geek Orders
這將會獲得您想要的結果。
schema
:模式
The
set
of
statements, expressed
in
data definition language, that completely describe the structure
of
a data base.
一組以數據定義語言來表達的語句集,該語句集完整地描述了數據庫的結構。
SELECT
INTO
OUTFILE :
|
mysqldump提供了不少選項,包括調試和壓縮的,在這裏只是列舉最有用的。架構
運行幫助命令mysqldump –help能夠得到特定版本的完整選項列表oracle
user表示用戶名稱;socket
host表示登陸用戶的主機名稱;工具
pwd爲登陸密碼;
dbname爲須要備份的數據庫名稱;
tbname爲dbname數據庫中須要備份的數據表,能夠指定多個須要備份的表;
右箭頭「>」告訴mysqldump將備份數據庫表定義和數據寫入備份文件;
filename爲備份文件的名稱
一、使用mysqldump備份單個數據庫中的全部表
數據庫的記錄是這樣的
打開cmd,而後執行下面的命令
能夠看到C盤下面已經生成了school_2014-7-10.sql文件
使用editplus來打開這個sql文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
-- MySQL dump 10.13 Distrib 5.5.20, for Win32 (x86)
--
-- Host: 127.0.0.1 Database: school
-- ------------------------------------------------------
-- Server version 5.5.20-log
/*!40101
SET
@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101
SET
@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101
SET
@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101
SET
NAMES utf8 */;
/*!40103
SET
@OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103
SET
TIME_ZONE=
'+00:00'
*/;
/*!40014
SET
@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014
SET
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101
SET
@OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=
'NO_AUTO_VALUE_ON_ZERO'
*/;
/*!40111
SET
@OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `book`
--
DROP
TABLE
IF EXISTS `book`;
/*!40101
SET
@saved_cs_client = @@character_set_client */;
/*!40101
SET
character_set_client = utf8 */;
CREATE
TABLE
`book` (
`bookid`
int
(11)
NOT
NULL
,
`bookname`
varchar
(255)
NOT
NULL
,
`authors`
varchar
(255)
NOT
NULL
,
`info`
varchar
(255)
DEFAULT
NULL
,
`comment`
varchar
(255)
DEFAULT
NULL
,
`year_publication`
year
(4)
NOT
NULL
,
KEY
`BkNameIdx` (`bookname`)
) ENGINE=MyISAM
DEFAULT
CHARSET=utf8;
/*!40101
SET
character_set_client = @saved_cs_client */;
--
-- Dumping data for table `book`
--
LOCK TABLES `book` WRITE;
/*!40000
ALTER
TABLE
`book` DISABLE KEYS */;
INSERT
INTO
`book`
VALUES
(1,
'鍓戝湥'
,
'灝忔槑'
,
'13'
,
'hao'
,2013);
/*!40000
ALTER
TABLE
`book` ENABLE KEYS */;
UNLOCK TABLES;
--
-- 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` (
`stuno`
int
(11)
DEFAULT
NULL
,
`stuname`
varchar
(60)
DEFAULT
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
/*!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
(2,
'xiaofang'
),(3,
'zhanghai'
),(6,
'haojie'
);
/*!40000
ALTER
TABLE
`student` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `stuinfo`
--
DROP
TABLE
IF EXISTS `stuinfo`;
/*!40101
SET
@saved_cs_client = @@character_set_client */;
/*!40101
SET
character_set_client = utf8 */;
CREATE
TABLE
`stuinfo` (
`stuno`
int
(11)
DEFAULT
NULL
,
`class`
varchar
(60)
DEFAULT
NULL
,
`city`
varchar
(60)
DEFAULT
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
/*!40101
SET
character_set_client = @saved_cs_client */;
--
-- Dumping data for table `stuinfo`
--
LOCK TABLES `stuinfo` WRITE;
/*!40000
ALTER
TABLE
`stuinfo` DISABLE KEYS */;
INSERT
INTO
`stuinfo`
VALUES
(1,
'wuban'
,
'henan'
),(2,
'liuban'
,
'hebei'
),(3,
'qiban'
,
'shandong'
);
/*!40000
ALTER
TABLE
`stuinfo` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103
SET
TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101
SET
SQL_MODE=@OLD_SQL_MODE */;
/*!40014
SET
FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014
SET
UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101
SET
CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101
SET
CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101
SET
COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111
SET
SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2014-07-23 22:04:16
|
能夠看到,備份文件包含了一些信息,文件開頭首先寫明瞭mysqldump工具的版本號;
而後是主機信息,以及備份的數據庫名稱,最後是mysql服務器的版本號5.5.20
備份文件接下來的部分是一些SET語句,這些語句將一些系統變量賦值給用戶定義變量,以確保被恢復的數據庫的系統變量和原來
備份時的變量相同
例如:
1
|
/*!40101
SET
@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
該set語句將當前系統變量character_set_client的值賦值給用戶變量@OLD_CHARACTER_SET_CLIENT
備份文件的最後幾行mysql使用set語句恢復服務器系統變量原來的值,例如:
1
|
/*!40101
SET
CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
該語句將用戶定義變量@OLD_CHARACTER_SET_CLIENT 中保存的值賦值給實際的系統變量OLD_CHARACTER_SET_CLIENT
備份文件中的「–」字符開頭的行爲註釋語句;以「/*!」開頭、以「*/」結尾的語句爲可執行的mysql註釋,這些語句能夠被mysql執行
但在其餘數據庫管理系統將被做爲註釋忽略,這能夠提升數據庫的可移植性
另外注意到,備份文件開始的一些語句以數字開頭,這些數字表明瞭mysql版本號,該數字告訴咱們這些語句只有在指定的mysql版本
或者比該版本高的狀況下才能執行。
例如:40101,代表這些語句只有在mysql版本爲4.01.01或者更高版本的條件下才能夠執行
二、使用mysqldump備份數據庫中的某個表
備份school數據庫裏面的book表
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
-- MySQL dump 10.13 Distrib 5.5.20, for Win32 (x86)
--
-- Host: 127.0.0.1 Database: school
-- ------------------------------------------------------
-- Server version 5.5.20-log
/*!40101
SET
@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101
SET
@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101
SET
@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101
SET
NAMES utf8 */;
/*!40103
SET
@OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103
SET
TIME_ZONE=
'+00:00'
*/;
/*!40014
SET
@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014
SET
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101
SET
@OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=
'NO_AUTO_VALUE_ON_ZERO'
*/;
/*!40111
SET
@OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `book`
--
DROP
TABLE
IF EXISTS `book`;
/*!40101
SET
@saved_cs_client = @@character_set_client */;
/*!40101
SET
character_set_client = utf8 */;
CREATE
TABLE
`book` (
`bookid`
int
(11)
NOT
NULL
,
`bookname`
varchar
(255)
NOT
NULL
,
`authors`
varchar
(255)
NOT
NULL
,
`info`
varchar
(255)
DEFAULT
NULL
,
`comment`
varchar
(255)
DEFAULT
NULL
,
`year_publication`
year
(4)
NOT
NULL
,
KEY
`BkNameIdx` (`bookname`)
) ENGINE=MyISAM
DEFAULT
CHARSET=utf8;
/*!40101
SET
character_set_client = @saved_cs_client */;
--
-- Dumping data for table `book`
--
LOCK TABLES `book` WRITE;
/*!40000
ALTER
TABLE
`book` DISABLE KEYS */;
INSERT
INTO
`book`
VALUES
(1,
'劍聖'
,
'小明'
,
'13'
,
'hao'
,2013);
/*!40000
ALTER
TABLE
`book` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103
SET
TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101
SET
SQL_MODE=@OLD_SQL_MODE */;
/*!40014
SET
FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014
SET
UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101
SET
CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101
SET
CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101
SET
COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111
SET
SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2014-07-23 22:24:29
|
備份文件中的內容跟前面的介紹是同樣的,惟一不一樣的是隻包含了book表的CREATE語句和INSERT語句
三、使用mysqldump備份多個數據庫
若是要使用mysqldump備份多個數據庫,須要使用–databases參數。
使用–databases參數以後,必須指定至少一個數據庫的名稱,多個數據庫名稱之間用空格隔開
使用mysqldump備份school庫和test庫
備份文件裏的內容,基本上跟第一個例子同樣,可是指明瞭裏面的內容那一部分屬於test庫,哪一部分屬於school庫
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
|
-- MySQL dump 10.13 Distrib 5.5.20, for Win32 (x86)
--
-- Host: 127.0.0.1 Database: school
-- ------------------------------------------------------
-- Server version 5.5.20-log
/*!40101
SET
@OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101
SET
@OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101
SET
@OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101
SET
NAMES utf8 */;
/*!40103
SET
@OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103
SET
TIME_ZONE=
'+00:00'
*/;
/*!40014
SET
@OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014
SET
@OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101
SET
@OLD_SQL_MODE=@@SQL_MODE, SQL_MODE=
'NO_AUTO_VALUE_ON_ZERO'
*/;
/*!40111
SET
@OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Current Database: `school`
--
CREATE
DATABASE
/*!32312 IF
NOT
EXISTS*/ `school` /*!40100
DEFAULT
CHARACTER
SET
utf8 */;
USE `school`;
--
-- Table structure for table `book`
--
DROP
TABLE
IF EXISTS `book`;
/*!40101
SET
@saved_cs_client = @@character_set_client */;
/*!40101
SET
character_set_client = utf8 */;
CREATE
TABLE
`book` (
`bookid`
int
(11)
NOT
NULL
,
`bookname`
varchar
(255)
NOT
NULL
,
`authors`
varchar
(255)
NOT
NULL
,
`info`
varchar
(255)
DEFAULT
NULL
,
`comment`
varchar
(255)
DEFAULT
NULL
,
`year_publication`
year
(4)
NOT
NULL
,
KEY
`BkNameIdx` (`bookname`)
) ENGINE=MyISAM
DEFAULT
CHARSET=utf8;
/*!40101
SET
character_set_client = @saved_cs_client */;
--
-- Dumping data for table `book`
--
LOCK TABLES `book` WRITE;
/*!40000
ALTER
TABLE
`book` DISABLE KEYS */;
INSERT
INTO
`book`
VALUES
(1,
'劍聖'
,
'小明'
,
'13'
,
'hao'
,2013);
/*!40000
ALTER
TABLE
`book` ENABLE KEYS */;
UNLOCK TABLES;
--
-- 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` (
`stuno`
int
(11)
DEFAULT
NULL
,
`stuname`
varchar
(60)
DEFAULT
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
/*!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
(2,
'xiaofang'
),(3,
'zhanghai'
),(6,
'haojie'
);
/*!40000
ALTER
TABLE
`student` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `stuinfo`
--
DROP
TABLE
IF EXISTS `stuinfo`;
/*!40101
SET
@saved_cs_client = @@character_set_client */;
/*!40101
SET
character_set_client = utf8 */;
CREATE
TABLE
`stuinfo` (
`stuno`
int
(11)
DEFAULT
NULL
,
`class`
varchar
(60)
DEFAULT
NULL
,
`city`
varchar
(60)
DEFAULT
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
/*!40101
SET
character_set_client = @saved_cs_client */;
--
-- Dumping data for table `stuinfo`
--
LOCK TABLES `stuinfo` WRITE;
/*!40000
ALTER
TABLE
`stuinfo` DISABLE KEYS */;
INSERT
INTO
`stuinfo`
VALUES
(1,
'wuban'
,
'henan'
),(2,
'liuban'
,
'hebei'
),(3,
'qiban'
,
'shandong'
);
/*!40000
ALTER
TABLE
`stuinfo` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Current Database: `test`
--
CREATE
DATABASE
/*!32312 IF
NOT
EXISTS*/ `test` /*!40100
DEFAULT
CHARACTER
SET
utf8 */;
USE `test`;
--
-- Table structure for table `book`
--
DROP
TABLE
IF EXISTS `book`;
/*!40101
SET
@saved_cs_client = @@character_set_client */;
/*!40101
SET
character_set_client = utf8 */;
CREATE
TABLE
`book` (
`bookid`
int
(11)
NOT
NULL
,
`bookname`
varchar
(255)
NOT
NULL
,
`authors`
varchar
(255)
NOT
NULL
,
`info`
varchar
(255)
DEFAULT
NULL
,
`comment`
varchar
(255)
DEFAULT
NULL
,
`year_publication`
year
(4)
NOT
NULL
,
KEY
`year_publication` (`year_publication`)
) ENGINE=MyISAM
DEFAULT
CHARSET=latin1;
/*!40101
SET
character_set_client = @saved_cs_client */;
--
-- Dumping data for table `book`
--
LOCK TABLES `book` WRITE;
/*!40000
ALTER
TABLE
`book` DISABLE KEYS */;
INSERT
INTO
`book`
VALUES
(12,
'dajiahao'
,
'NIHAO'
,
'??'
,
'henhao'
,1990);
/*!40000
ALTER
TABLE
`book` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `innodb_monitor`
--
DROP
TABLE
IF EXISTS `innodb_monitor`;
/*!40101
SET
@saved_cs_client = @@character_set_client */;
/*!40101
SET
character_set_client = utf8 */;
CREATE
TABLE
`innodb_monitor` (
`a`
int
(11)
DEFAULT
NULL
) ENGINE=InnoDB
DEFAULT
CHARSET=utf8;
/*!40101
SET
character_set_client = @saved_cs_client */;
--
-- Dumping data for table `innodb_monitor`
--
LOCK TABLES `innodb_monitor` WRITE;
/*!40000
ALTER
TABLE
`innodb_monitor` DISABLE KEYS */;
/*!40000
ALTER
TABLE
`innodb_monitor` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `test_innodb_lock`
--
DROP
TABLE
IF EXISTS `test_innodb_lock`;
|