數據備份與還原
1.mysqldump
1.1 文件地址:
E:\xampp\mysql\bin
文件名:mysqldump.exe
CMD下進入mysqldump.exe
cd E:\xampp_new\mysql\bin
1.2 調用mysqldump的參數
Mysqldump –u 用戶名 [-h 主機] [-p 密碼] 數據庫名 [表名稱 表名稱] > 備份到的路徑及文件名
備份多個數據庫的全部表:
Mysqldump –u 用戶名 [-h 主機] [-p 密碼] –databases 數據庫1名稱 數據庫2名稱> 備份到的路徑及文件名
備份MYSQL的全部數據庫:
Mysqldump –u 用戶名 [-h 主機] [-p 密碼] –all-databases > 備份到的路徑及文件名
說明:
如果加表名稱,就備份指定的表,如果不加表名稱,則表示備份數據庫的全部表。
1.3備份操作:
備份數指定的據庫:
mysqldump -uroot -hlocalhost -p123 homework>G:/homeworks20141124.sql
備份指定數據庫的指定數據表:
mysqldump -uroot -hlocalhost -p123 homework province>G:/homeworks20141124.sql
備份指定數據庫的指定的多個數據表:
mysqldump -uroot -hlocalhost -p123 homework province users2>G:\學習\Mysql\日志\1.sql
備份多個數據庫的所有表:
mysqldump -uroot -hlocalhost -p123 --databases homework mysqlpart2>G:\學習\Mysql\日志\2.sql
備份MYSQL下的全部數據庫:
mysqldump -uroot -hlocalhost -p123 --all-databases>G:\學習\Mysql\日志\3.sql
說明:mysqladmin密碼在:E:\xampp\phpMyAdmin\ config.inc.php 文件中
1.4 mysqldump其它常用參數:
add-drop-database 如果備份的時候,加上該參數,就會生成生成DROP DATABASE
add-drop-tables 如果備份的時候,加上該參數,就會生成 DROP TABLES語句
comment=[0|1] 在生成備份文件的時候,會加上系統的注釋
complete-insert 如果加上該參數,那么在生成備份文件的時候,就會生成表名所擁有的所有列名的INSERT語句
2. sql 文件的內容:
(1)MYSQLdump工具的版本號:
-- MySQL dump 10.13 Distrib 5.6.16, for Win32 (x86)
-- Host: localhost Database: homework
-- ------------------------------------------------------
-- Server version 5.6.16 (mysql的版本號)
(2)變量賦值及注釋內容:
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
說明:
①/*! 注釋內容*/; 是MYSQL可執行注釋,MYSQL會執行注釋內容,其它數據庫不會執行這些注釋內容。
②40101是支持可執行語句的MYSQL的最低版本
③用SET定義一個用戶級的變量,由系統級的變量為其賦值,數據庫的系統參數以變量的形式保存下來。
(3)數據庫的表備份
--
-- Table structure for table `province`
--
DROP TABLE IF EXISTS `province`;
…
(4)以INSERT語句來保存數據,用於恢復數據庫時的數據還原
--
-- Dumping data for table `province`
--
LOCK TABLES `province` WRITE;
/*!40000 ALTER TABLE `province` DISABLE KEYS */;
INSERT INTO `province` VALUES (1,'北京'),(2,'上海'),(3,'遼寧'),(4,'天津'),(5,'廣東'),(6,'福建'),(100,'吉林');
/*!40000 ALTER TABLE `province` ENABLE KEYS */;
UNLOCK TABLES;
3. 備份數據文件的方法
備份數據文件夾里的全部文件:
E:\xampp\mysql\data\
4. 客戶端工具備份方法:
可以通過sql文件恢復數據庫
CREATE TABLE 保存表的結構
INSERT INTO 保存了數據
5. 數據庫還原技術
5.1 mysql命令還原數據庫
mysql -u 用戶名 -p 密碼 要還原的數據庫 <備份文件路徑和文件名
mysql -u root -p 123 homework <G:學習\Mysql\日志\hw1.sql
5.2 使用粘貼數據庫文件的方式進行還原(禁止使用該方法)
通過操作發現,使用直接復制、粘貼數據庫文件的方法,對數據庫進行恢復,是不可行的,會造成數據庫無法啟動,就算后面刪除日志文件,數據庫可以啟動了,也是無法瀏覽數據庫內的表文件的。
5.3 使用客戶端工具進行還原
6. 表的導入和導出
6.1 SELECT INTO OUTFILE 導出數據表
導出數據表只是導出數據表的內容,並無SQL語句:
SELECT語句 INTO OUTFILE ‘導出路徑及文件名’
[LINES TERMINATED BY ‘每一行的結尾字符’]
;
參數介紹:
FIELDS TERMINATED BY ‘,’ 列的結尾符
FIELDS ENCLOSED BY ‘\”’ 列的數據是用什么擴起來(引起來)
FIELDS ESCAOED BY ‘\’ 定義一個新的轉義字符的符號
LINES STARTING BY ‘>’ 以什么作為該行的開頭
LINES TERMINATED BY ‘\r\n’ 以什么作為該行的結尾
例1:SELECT * FROM users2 INTO OUTFILE 'G:\users2.txt';
說明:
路徑中不能包含中文
例2:以轉義字符換行導出:
SELECT * FROM province INTO OUTFILE 'G:\1.txt' LINES TERMINATED BY '\r\n';
顯示:
1 北京
2 上海
3 遼寧
4 天津
5 廣東
6 福建
100 吉林
6.2使用MYSQLDUMP工具導出表數據:
MYSQLDUMP工具會導出數據表的數據和數據表的SQL表結構語句(不包含INSERT語句,即不包含數據表的數據內容)
語法:
mysqldump -T 文件要保存的路徑 數據庫名稱 數據表名稱 -u 用戶名 –p 密碼
[--lines-terminated-by=換行符]
說明:
-T 表示要輸出
參數介紹:
--fields-terminated-by=, 每列的結尾
--fields-optionally-enclosed-by=\” 每列以什么進行引用
--fields-escaped-by=? 定義轉義字符
--lines-terminated-by=\r\n 每一行以什么結尾
例1:
mysqldump -T G:/ homework province -u root -p
例2,格式化換行輸出表數據:
mysqldump -T G:/ homework province -u root -p --lines-terminated-by=\r\n
6.3 使用mysq導出表數據:
在系統環境下(非mysql環境內):
mysql -u root -p --execute="SELECT語句" 數據庫名稱 >輸出文件的路徑及文件名
例:
mysql -u root -p --execute="select * from province" homework >G:/p.txt
顯示:
id pro_name
1 北京
2 上海
3 遼寧
4 天津
5 廣東
6 福建
100 吉林
6.4 通過LOAD DATA方式將數據導入數據表中
LOAD DATA INFILE '輸入文件的路徑及文件名' INTO TABLE 要導入表的表名稱;
LOAD DATA INFILE 'G:/p.txt' INTO TABLE province;
LOAD DATA INFILE 'G:/p.txt' INTO TABLE province CHARACTER SET utf8 ;
注意:
(1) 導入txt之前,應當刪除字段的表頭,否則表頭內容也會被當做字段的值導入字段中。
(2) 導入txt之前,應當將txt另存為utf-8格式,否則中文無法導入。
(3) 導入txt之前,一定要將utf-8的文檔去BOM頭化,否則因為有前導字符串,會導入錯誤。
6.5通過mysqlimport工具方式將數據導入數據表中
該命令需要使用系統的命令窗口進行輸入:
mysqlimport -u 用戶名 -p 數據庫名稱 導入表的路徑及文件名
mysqlimport -u root -p homework G:/province.txt
說明:
(1) 如果沒有指定表的名稱,那么系統會根據txt的文件名來導入相應的表內,所以txt的文件名要與數據表的名稱一致。
(2) 導入操作的參數的名稱和值,要與導出操作的參數名稱和值一致,這樣才能成功導入數據。