下面的操做以XSCJ庫爲例. mysql
1、使用SQL語句備份和恢復數據表結構 sql
備份XSCJ數據庫中的KC表中數據到D盤FILE目錄中,要求字段值若是是字符就用雙引號標註,字段值之間用逗號隔開,每行以「?」爲結束標誌。最後將備份後的數據導入到一個和KC表結構同樣的空表COURSE表中。 數據庫
首先導出數據: 服務器
USE XSCJ; 工具
SELECT * FROM kc 命令行
INTO OUTFILE 'f:/FILE/kc.txt' CHARACTER SET utf8 日誌
FIELDS TERMINATED BY ',' 索引
OPTIONALLY ENCLOSED BY '"' 接口
LINES TERMINATED BY '?'; 資源
文件備份完後能夠將文件中的數據導入到COURSE表中,使用如下命令:
LOAD DATA INFILE 'f:/FILE/kc.txt'
INTO TABLE kc CHARACTER SET utf8
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '?';
2、使用客戶端程序備份和恢復數據
一、備份數據庫
(1)
使用mysqldump備份XS表和KC表。具體命令以下:
mysqldump -h localhost -uroot -proot XSCJ XS KC > d:\twotables.sql
說明:若是是本地服務器,-h選項能夠省略。在MySQL的bin目錄下能夠看到,已經保存了一個.sql格式的文件,文件中存儲了建立XS表和KC表的一系列SQL語句。
注意:若在命令中沒有表名,則備份整個數據庫。
mysqldump -h localhost -uroot -proot XSCJ XS KC > d:\twotables.sql
(2)
備份XSCJ數據庫和mysql數據庫到D盤FILE文件夾下。
mysqldump -uroot -proot --databases XSCJ mysql>D:/FILE/data.sql
說明:命令執行完後,在FILE文件夾下的data.sql文件被建立了,其中存儲了XSCJ數據庫和mysql數據庫的所有SQL語句。
(3)
備份MySQL服務器上的全部數據庫。使用以下命令:
mysqldump -uroot -proot --all-databases>all.sql
雖然用mysqldump導出表的結構頗有用,可是在恢復數據時,若是數據量很大,衆多SQL語句將使恢復的效率下降。能夠經過使用--tab=選項,分開數據和建立表的SQL語句。
(4)
將XSCJ數據庫中全部表的表結構和數據都分別備份到D盤FILE文件夾下。命令以下:
mysqldump -uroot -proot xscj --tab=D:\FILE
其效果是在目錄FILE中生成6個文件,分別是xs.txt、xs.sql、kc.txt、kc.sql、xs_kc.txt和xs_kc.sql。
二、恢復數據庫
mysqldump程序備份的文件中存儲的是SQL語句的集合,用戶能夠將這些語句還原到服務器中以恢復一個損壞的數據庫。
(1)
假設XS表結構損壞,備份文件在D盤FILE目錄下,現將包含XS表結構的.sql文件恢復到服務器中。命令以下:
mysql -uroot -proot XSCJ<D:\FILE\xs.sql
(2)
使用mysqlimport恢復數據
mysqlimport客戶端能夠用來恢復表中的數據,它提供了LOAD DATA INFILE語句的一個命令行接口,發送一個LOAD DATA INFILE命令到服務器來運做
恢復XSCJ數據庫中表XS的數據,保存數據的文件爲XS.txt,命令以下:
mysqlimport -uroot -proot XSCJ d:\file\XS.txt
mysqlimport也須要提供-u、-p選項來鏈接服務器。值得注意的是,mysqlimport是經過執行LOAD DATA INFILE語句來恢復數據庫的,因此上例中備份文件未指定位置的默認是在MySQL的DATA目錄中。若是不在則要指定文件的具體路徑。
LOAD DATA INFILE 'D:/file/xs.txt'
INTO TABLE xs CHARACTER SET gbk
FIELDS TERMINATED BY '\t' ENCLOSED BY ''
LINES TERMINATED BY '\n'
3、使用MySQL界面工具進行備份和恢復
4、日誌文件概述
1.錯誤日誌 記錄啓動、運行或中止mysqld時出現的問題。
My.ini配置信息:
#log-error=d:/mysql_log_err.txt
2.
查詢日誌 記錄創建的客戶端鏈接和執行的語句。
My.ini配置信息:
#log=d:/mysql_log.txt
3.
更新日誌 記錄更改數據的語句。不同意使用該日誌。
My.ini配置信息:
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=d:/mysql_log_update.txt
4.
二進制日誌 記錄全部更改數據的語句。還用於複製。
My.ini配置信息:
log-bin=「d:/mysql_log_bin」
5.
慢日誌 記錄全部執行時間超過long_query_time秒的全部查詢或不使用索引的查詢。
My.ini配置信息:
#long_query_time =1
#log-slow-queries= d:/mysql_log_slow.txt
是否啓用了日誌
mysql>show variables like 'log_%';
怎樣知道當前的日誌
mysql> show master status;
顯示二進制日誌數目
4、使用二進制日誌文件
一、啓用日誌
二進制日誌能夠在啓動服務器的時候啓用,這須要修改C:\Program Files\MySQL文件夾中的my.ini選項文件。打開該文件,找到[mysqld]所在行,在該行後面加上如下格式的一行:
log-bin="D:/mysql_data/Data/bin_log"
保存,重啓服務器。重啓服務器的方法能夠是:
net stop mysql
再啓動服務器:
net start mysql
此時,MySQL安裝目錄的bin目錄下多出兩個文件:bin_log.000001和bin_log.index。bin_log.000001就是二進制日誌文件,以二進制形式存儲,用於保存數據庫更新信息。當這個日誌文件大小達到最大,MySQL還會自動建立新的二進制文件。bin_log.index是服務器自動建立的二進制日誌索引文件,包含全部使用的二進制日誌文件的文件名。
使用mysqlbinlog實用工具能夠檢查二進制日誌文件。
例如,運行如下命令能夠查看bin_log.000001的內容:
mysqlbinlog bin_log.000001
因爲二進制數據可能很是龐大,沒法在屏幕上延伸,能夠保存到文本文件中:
mysqlbinlog bin_log.000001>D:/FILE/lbin-log000001.txt
【例】 假設用戶在星期一下午1點使用mysqldump工具進行數據庫XSCJ的徹底備份,備份文件爲xscj.sql。從星期一下午1點開始用戶啓用日誌,bin_log.000001文件保存了從星期一下午1點到星期二下午1點的全部更改。假如數據庫崩潰。現要將數據庫恢復到星期一下午1點時的狀態,在DOS窗口輸入如下命令:
(1)mysql -uroot -proot XSCJ<file.sql
(2)使用如下命令將數據庫恢復到星期二下午時的狀態:
mysqlbinlog bin_log.000001 | mysql -uroot -proot
自動清除日誌文件
方法1:在配置文件中設置:
Expire_logs_days =10
方法2:在運行時設置
Set global Expire_logs_days=10
因爲日誌文件要佔用很大的硬盤資源,因此要及時將沒用的日誌文件清除掉。如下這條SQL語句用於清除全部的日誌文件:
RESET MASTER;
若是要刪除部分日誌文件,可使用PURGE MASTER LOGS語句。
語法格式爲:
PURGE {MASTER | BINARY} LOGS TO 'log_name‘
例如:PURGE BINARY LOGS TO ‘bin_log.000004’,將此以前的日誌所有刪除
或
PURGE {MASTER | BINARY} LOGS BEFORE 'date‘
例如:PURGE BINARY LOGS BEFORE '2012-03-16 15:26:00'
說明:第一個語句用於刪除特定的日誌文件,log_name爲文件名。第二個語句用於刪除時間date以前的全部日誌文件。MASTER和BINARY是同義詞。