MYSQL數據備份與還原學習筆記


數據備份與還原

 

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’  以什么作為該行的結尾

 

 

 

例1SELECT * 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)       導入操作的參數的名稱和值,要與導出操作的參數名稱和值一致,這樣才能成功導入數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM