mysqldump: 最早,也是最成熟的邏輯備份工具,是 MySQL 原生的用來備份整個數(shù)據(jù)庫實例、單個數(shù)據(jù)庫、單張表的邏輯備份工具, 上手簡單,學習成本幾乎為 0。備份簡單,恢復也簡單。
三穗ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
比如導出單個數(shù)據(jù)庫 ytt: mysqldump ytt /tmp/ytt.sql;
恢復也非常簡單:mysql /tmp/ytt.sql
缺點是備份速度慢。在整個備份過程中,是單線程運行;備份出來的數(shù)據(jù)集要恢復的話同樣也是單線程運行,恢復速度也慢。除非對同一時刻的所有表單獨備份出來,自己寫額外腳本進行多線程恢復。
關(guān)鍵字: mysql 還原或者導入數(shù)據(jù)庫命令:
mysql -u root --password=root
備份數(shù)據(jù)庫命令:
mysqldump -u root --password=root --database helloworld helloworld_backup.sql
其他用法:
1.導出整個數(shù)據(jù)庫
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名 導出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc wcnc.sql
2.導出一個表
mysqldump -u 用戶名 -p 數(shù)據(jù)庫名表名 導出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users wcnc_users.sql
3.導出一個數(shù)據(jù)庫結(jié)構(gòu)
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc d:\wcnc_db.sql
-d 沒有數(shù)據(jù) --add-drop-table 在每個create語句之前增加一個drop table
4.導入數(shù)據(jù)庫
常用source 命令
進入mysql數(shù)據(jù)庫控制臺,
如mysql -u root -p
mysqluse 數(shù)據(jù)庫
然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)
mysqlsource d:\wcnc_db.sql
備份表結(jié)構(gòu),(主鍵、索引、等) 表數(shù)據(jù);
備份方法2種:1 如果你的開發(fā)環(huán)境是php的, 下一個phpmyadmin 的mysql web 后臺管理中心可進行備份等諸多操作
2:使用CMD 進入 mysql 控制臺, 使用mysqldump命令進行備份
使用直接拷貝的方法備份時,尤其要注意表沒有被使用,應該對表進行讀鎖定或停止MySQL服務。備份一個表,需要三個文件:
對于MyISAM表:
tbl_name.frm 表的描述文件
tbl_name.MYD 表的數(shù)據(jù)文件
tbl_name.MYI 表的索引文件
對于ISAM表:
tbl_name.frm 表的描述文件
tbl_name.ISD 表的數(shù)據(jù)文件
tbl_name.ISM 表的索引文件
對于MyISAM表,你可以從運行在不同硬件系統(tǒng)的服務器之間復制文件,例如,SUN服務器和INTEL PC機之間。
當 然,這只是備份一個數(shù)據(jù)表,在很多情況下我們需要備份完整的數(shù)據(jù)庫,這個時候同樣可以直接復制數(shù)據(jù)庫文件夾即可完成備份;若想再省點兒事,把整個數(shù)據(jù)庫目 錄“data”復制也可以,但是在還原數(shù)據(jù)時要注意,只能一個一個地還原數(shù)據(jù)庫,因為該目錄下有mysql運行時的配置文件,若正在運行的mysql配置 信息遭到還原破壞,整個mysql服務就會無法啟動。
SELECT INTO OUTFILE和MYSQLDUMP備份數(shù)據(jù):
MySQLdump工具可以把整個數(shù)據(jù)庫裝載到一個單獨的文本文件中。這個文件包含所有重建數(shù)據(jù)庫和表的SQL命令。這個命令取得所有的模式 (Schema)并且將其轉(zhuǎn)換成DDL語法(CREATE語句,即數(shù)據(jù)庫定義語句),還取得所有的數(shù)據(jù),并且為這些數(shù)據(jù)創(chuàng)建INSERT語句。所有的東西 都被包含到了一個文本文件中。這個文本文件可以用一個簡單的批處理和一個合適SQL語句導回到MySQL中。這個工具令人難以置信地簡單而快速。
有3種方式來調(diào)用mysqldump
選擇一個數(shù)據(jù)庫或一個數(shù)據(jù)表備份到一個文件:
/bin mysqldump [options] db_name [tables] filename.txt
選擇多個數(shù)據(jù)庫備份到一個文件:
/bin mysqldump [options] --database DB1 [DB2 DB3...] filename.txt
所有數(shù)據(jù)庫備份到一個文件:
/bin mysqldump [options] --all--database filename.txt
Option選擇:
--help,-?
顯示幫助消息并退出。
--add-drop-table
這個選項將會在每一個表的前面加上DROP TABLE IF EXISTS語句,這樣可以保證導回MySQL數(shù)據(jù)庫的時候不會出錯,因為每次導回的時候,都會首先檢查表是否存在,存在就刪除
--add-locks
這個選項會在INSERT語句中捆上一個LOCK TABLE和UNLOCK TABLE語句。這就防止在這些記錄被再次導入數(shù)據(jù)庫時其他用戶對表進行的操作
-c or --complete_insert
這個選項使得MySQLdump命令給每一個產(chǎn)生INSERT語句加上列(field)的名字。當把數(shù)據(jù)導出導另外一個數(shù)據(jù)庫時這個選項很有用。
--delayed-insert 在INSERT命令中加入DELAY選項
-F or --flush-logs 使用這個選項,在執(zhí)行導出之前將會刷新MySQL服務器的log.
-f or --force 使用這個選項,即使有錯誤發(fā)生,仍然繼續(xù)導出
--full 這個選項把附加信息也加到CREATE TABLE的語句中
-l or --lock-tables 使用這個選項,導出表的時候服務器將會給表加鎖。
-t or --no-create- info
這個選項使的MySQLdump命令不創(chuàng)建CREATE TABLE語句,這個選項在您只需要數(shù)據(jù)而不需要DDL(數(shù)據(jù)庫定義語句)時很方便。
-d or --no-data 這個選項使的MySQLdump命令不創(chuàng)建INSERT語句。
在您只需要DDL語句時,可以使用這個選項。
--opt 此選項將打開所有會提高文件導出速度和創(chuàng)造一個可以更快導入的文件的選項。
-q or --quick 這個選項使得MySQL不會把整個導出的內(nèi)容讀入內(nèi)存再執(zhí)行導出,而是在讀到的時候就寫入導文件中。
-T path or --tab = path
這 個選項將會將數(shù)據(jù)庫中每一個表創(chuàng)建兩個文件,一個文件包含DDL語句或者表創(chuàng)建語句,另一個文件包含數(shù)據(jù)。DDL文件被命名為 table_name.sql,數(shù)據(jù)文件被命名為table_name.txt。該參數(shù)的path為存放目錄,而且該目錄必須已經(jīng)存在。 如:/binmysqldump –uroot –p --tab=d:\\ mydata
-w "WHERE Clause" or --where = "Where clause " 篩選將要放到導出文件的數(shù)據(jù)。
下面來看幾組mysqldump命令案例:
將數(shù)據(jù)庫mydata的內(nèi)容備份到mydata.txt文件中:
/binMySQLdump –uroot -p mydata d:\\mydata.txt
將mydata數(shù)據(jù)庫中的users表的內(nèi)容備份到d:\\users.txt:
/binMySQLdump –uroot -p mydata users d:\\users.txt
將mydata數(shù)據(jù)庫中的users表username值為“feihu”的數(shù)據(jù)備份到d:\\users.txt:
/binMySQLdump –uroot -p --where=”username=’feihu’” mydata users d:\\users.txt;
將mydata數(shù)據(jù)庫以及內(nèi)部表的創(chuàng)建結(jié)構(gòu)(DDL)備份到d:\\users.txt:
/binMySQLdump –uroot –p -d mydata d:\\mydata.txt
將mydata和mydata2數(shù)據(jù)庫同時備份到d:\\users.txt:
/bin MySQLdump –uroot –p -d mydata mydata2 d:\\mydata.txt
將所有數(shù)據(jù)備份到一個數(shù)據(jù)庫,命令怎么寫呢???
schema: 模式The set of statements, expressed in data definition language, that completely describe the structure of a data base.(一組以數(shù)據(jù)定義語言來表達的語句集,該語句集完整地描述了數(shù)據(jù)庫的結(jié)構(gòu)。)
當需要將還原備份數(shù)據(jù)時,使用如下語句:
/binmysql –uroot –p mydata d:\\mydata.txt;
注意使用“”符號,導入數(shù)據(jù)。還可以使用source命令執(zhí)行文件中的腳本來還原數(shù)據(jù),如:
Mysqlsource d:\mydata.txt;
LOAD DATA INFILE和MYSQLIMPORT恢復數(shù)據(jù)
關(guān)于load data infile語句的使用已經(jīng)在別一節(jié)講述過了,詳細請參考“使用LOAD DATA和INSERT語句導入Mysql數(shù)據(jù)”。如果你僅僅恢復數(shù)據(jù), mysqlimport完全是與LOAD DATA 語句對應的,讀者可以任意選擇一個去實現(xiàn)。
MySQLimport位于MySQL/bin目錄中,是MySQL的一個載入(或者說導入)數(shù)據(jù)的一個非常有效的工具。這是一個命令行工具。有兩個參數(shù) 以及大量的選項可供選擇。這個工具把一個文本文件(textfile)導入到你指定的數(shù)據(jù)庫和表中。比方說我們要從文件users.txt中把數(shù)據(jù)導入到 數(shù)據(jù)庫mydata中的表users中:
/binmysqlimport –uroot –p mydata d:\users.txt
注意:這里users.txt是我們要導入數(shù)據(jù)的文本文件,而mydata是我們要操作的數(shù)據(jù)庫,數(shù)據(jù)庫中的表名是users,這里文本文件的數(shù)據(jù)格式必須與users表中的記錄格式一致,否則MySQLimport命令將會出錯。
其中表的名字是導入文件的第一個句號(.)前面文件字符串,另外一個例子:MySQLimport mydata users.2009.10.txt;那么我們將把文件中的內(nèi)容導入到數(shù)據(jù)庫mydata 中的users表中。
上面的例子中,都只用到兩個參數(shù),并沒有用到更多的選項,下面介紹MySQLimport的選項
-d or --delete 新數(shù)據(jù)導入數(shù)據(jù)表中之前刪除數(shù)據(jù)數(shù)據(jù)表中的所有信息
-f or --force 不管是否遇到錯誤,MySQLimport將強制繼續(xù)插入數(shù)據(jù)
-i or --ignore MySQLimport跳過或者忽略那些有相同唯一關(guān)鍵字的行, 導入文件中的數(shù)據(jù)將被忽略。
-l or -lock-tables 數(shù)據(jù)被插入之前鎖住表,這樣就防止了,你在更新數(shù)據(jù)庫時,用戶的查詢和更新受到影響。
-r or -replace 這個選項與-i選項的作用相反;此選項將替代表中有相同唯一關(guān)鍵字的記錄。
--fields-enclosed-by= char 指定文本文件中數(shù)據(jù)的記錄時以什么括起的, 很多情況下數(shù)據(jù)以雙引號括起。 默認的情況下數(shù)據(jù)是沒有被字符括起的。
--fields-terminated-by=char 指定各個數(shù)據(jù)的值之間的分隔符,在句號分隔的文件中,分隔符是句號。您可以用此選項指定數(shù)據(jù)之間的分隔符。默認的分隔符是跳格符(Tab)
--lines-terminated-by=str 此選項指定文本文件中行與行之間數(shù)據(jù)的分隔字符串或者字符。 默認的情況下MySQLimport以newline為行分隔符。您可以選擇用一個字符串來替代一個單個的字符:一個新行或者一個回車。
MySQLimport命令常用的選項還有-v 顯示版本(version),-p 提示輸入密碼(password)等。
如果,我們要導入一個文件(Orders.txt)中行的記錄格式是這樣的:
"1", "ORD89876", "1 Dozen Roses", "19991226"
我們的任務是要把這個文件里面的數(shù)據(jù)導入到數(shù)據(jù)庫mydata中的表格Orders中,我們使用這個命令:
/BinMySQLimport -uroot–prl --fields-enclosed-by=" --fields-terminated-by=, mydata Orders.txt
比如我們要插入一些數(shù)據(jù),使用包含下面文本的文件(文件名為New_Data.sql,當然我們也可以取名為New_Data.txt及任何其他的合法名字,并不一定要以后綴sql結(jié)尾):
USE mydata; INSERT INTO Orders (Orders_ID, username) VALUES(1, "Block"); INSERT INTO Orders (Orders_ID, username) VALUES(2, "Newton"); INSERT INTO Orders (Orders_ID, username) VALUES(3, "Simmons");
注意上面的這些句子的語法都必須是正確的,并且每個句子以分號結(jié)束。上面的USE命令選擇數(shù)據(jù)庫,INSERT命令插入數(shù)據(jù)。
然后運行下面的命令:
/binmysql –uroot –p mydata d:\New_Data.txt;
接著按提示輸入密碼,如果上面的文件中的語句沒有錯誤,那么這些數(shù)據(jù)就被導入到了數(shù)據(jù)庫中。
分享標題:怎么備份mysql表結(jié)構(gòu) mysql 備份表結(jié)構(gòu)
URL鏈接:http://jinyejixie.com/article14/dosgjde.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、虛擬主機、App開發(fā)、營銷型網(wǎng)站建設、全網(wǎng)營銷推廣、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)