使用MYSQL進行數據庫備份
又很正規的數據庫備份方法
同其他的數據庫服務器有相同的概念
但有沒有想過
MySQL會有更簡捷的使用文件目錄的備份方法
而且又快有好
一數據備份捷徑 因為這個方法沒有得到官方正式文檔的驗證
我們暫稱為試驗吧
目的
備份hostA主機中一個mysql數據庫TestA
並恢復到到hostB機中
試驗環境 操作系統
WinNT
Mysql
phpMyAdmin
在hostA中安裝mysql數據庫並建立TestA數據庫
hostB機安裝mysql數據庫
沒有TestA數據庫
方法步驟 啟動phpMyAdmin察看HostA和HostB中的數據庫列表
在HostB中沒有TestA數據庫
找到HostA中mysql的安裝目錄
並找到數據庫目錄data
在我的試驗環境中
這個目錄是
C:mysqldata
找到對應數據庫名稱的子目錄
C:mysqldataTestA
粘貼拷貝到HostB的Data目錄下
是HostA同HostB Mysql數據目錄下的文件相同
刷新HostB的phpMyAdmin察看一下數據庫列表
我們看到TestA已經出現
並且作查詢修改等操作都正常
備份恢復恢復成功
試驗結論
Mysql的數據庫可以通過文件形式保存
備份
恢復只要將相應文件目錄恢復即可
無需使用其它工具備份
二正規的方法(官方建議) 導出要用到MySQL的mysqldump工具
基本用法是
mysqldump [OPTIONS] database [tables]
如果你不給定任何表
整個數據庫將被導出
通過執行mysqldump
help
你能得到你mysqldump的版本支持的選項表
注意
如果你運行mysqldump沒有
quick或
opt選項
mysqldump將在導出結果前裝載整個結果集到內存中
如果你正在導出一個大的數據庫
這將可能是一個問題
mysqldump支持下列選項
add
locks
在每個表導出之前增加LOCK TABLES並且之後UNLOCK TABLE
(為了使得更快地插入到MySQL)
add
drop
table
在每個create語句之前增加一個drop table
allow
keywords
允許創建是關鍵詞的列名字
這由在列名前面加表名的方法做到
c
complete
insert
使用完整的insert語句(用列名字)
C
compress
如果客戶和服務器均支持壓縮
壓縮兩者間所有的信息
delayed
用INSERT DELAYED命令插入行
e
extended
insert
使用全新多行INSERT語法
(給出更緊縮並且更快的插入語句)
#
debug[=option_string]
跟蹤程序的使用(為了調試)
help
顯示一條幫助消息並且退出
fields
terminated
by=
fields
enclosed
by=
fields
optionally
enclosed
by=
fields
escaped
by=
fields
terminated
by=
這些選擇與
T選擇一起使用
並且有相應的LOAD DATA INFILE子句相同的含義
LOAD DATA INFILE語法
F
flush
logs
在開始導出前
洗掉在MySQL服務器中的日志文件
f
force
即使我們在一個表導出期間得到一個SQL錯誤
繼續
h
host=
從命名的主機上的MySQL服務器導出數據
缺省主機是localhost
l
lock
tables
為開始導出鎖定所有表
t
no
create
info
不寫入表創建信息(CREATE TABLE語句)
d
no
data
不寫入表的任何行信息
如果你只想得到一個表的結構的導出
這是很有用的!
opt
同
quick
add
drop
table
add
locks
extended
insert
lock
tables
應該給你為讀入一個MySQL服務器的盡可能最快的導出
pyour_pass
password[=your_pass]
與服務器連接時使用的口令
如果你不指定
=your_pass
部分
mysqldump需要來自終端的口令
P port_num
port=port_num
與一台主機連接時使用的TCP/IP端口號
(這用於連接到localhost以外的主機
因為它使用 Unix套接字
)
q
quick
不緩沖查詢
直接導出至stdout
使用mysql_use_result()做它
S /path/to/socket
socket=/path/to/socket
與localhost連接時(它是缺省主機)使用的套接字文件
T
tab=path
to
some
directory
對於每個給定的表
創建一個table_name
sql文件
它包含SQL CREATE 命令
和一個table_name
txt文件
它包含數據
注意
這只有在mysqldump運行在mysqld守護進程運行的同一台機器上的時候才工作
txt文件的格式根據
fields
xxx和
lines
xxx選項來定
u user_name
user=user_name
與服務器連接時
MySQL使用的用戶名
缺省值是你的Unix登錄名
O var=option
set
variable var=option
設置一個變量的值
可能的變量被列在下面
v
verbose
冗長模式
打印出程序所做的更多的信息
V
version
打印版本信息並且退出
w
where=
where
condition
只導出被選擇了的記錄
注意引號是強制的!
where=user=
jimf
wuserid>
wuserid<
最常見的mysqldump使用可能制作整個數據庫的一個備份
mysqldump
opt database > backup
file
sql
但是它對用來自於一個數據庫的信息充實另外一個MySQL數據庫也是有用的
mysqldump
opt database | mysql
host=remote
host
C database
由於mysqldump導出的是完整的SQL語句
所以用mysql客戶程序很容易就能把數據導入了
mysqladmin create target_db_name
mysql target_db_name < backup
file
sql
From:http://tw.wingwit.com/Article/program/MySQL/201311/29365.html