六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

mysql備份還原庫(kù)命令方法解析(長(zhǎng)文)

[摘要]關(guān)于mysql數(shù)據(jù)庫(kù)備份與還原的方法,這里首先講到備份的工具:mysqlhotcopy,使用mysqlhotcopy工具可進(jìn)行快速備份,然后數(shù)據(jù)還原,使用MySQL命令還原;最后需要導(dǎo)出數(shù)據(jù)庫(kù)表。詳...
關(guān)于mysql數(shù)據(jù)庫(kù)備份與還原的方法,這里首先講到備份的工具:mysqlhotcopy,使用mysqlhotcopy工具可進(jìn)行快速備份,然后數(shù)據(jù)還原,使用MySQL命令還原;最后需要導(dǎo)出數(shù)據(jù)庫(kù)表。詳細(xì)的介紹還得閱讀本文。

1.數(shù)據(jù)備份

定期的備份數(shù)據(jù)庫(kù),使得在意外情況發(fā)生的時(shí)候,盡量的減少損失。

1.使用mysqldump命令備份

mysqldump是MySQL提供的一個(gè)數(shù)據(jù)庫(kù)備份工具,mysqldump命令執(zhí)行的時(shí)候,將數(shù)據(jù)庫(kù)備份成一個(gè)文本文件,該文件中包含了多個(gè)CREATE 和INSERT語(yǔ)句,使用這些語(yǔ)句可以重新創(chuàng)建表和插入數(shù)據(jù);

【使用mysqldump備份單個(gè)數(shù)據(jù)庫(kù)中】

mysqldump -u user -h host -p password dbname>filename.sql

【使用mysqldump備份數(shù)據(jù)庫(kù)中的指定表】

mysqldump -u user -h host -p password dbname[tbname,[tbname…]]>filename.sql

【使用mysqldump備份多個(gè)數(shù)據(jù)庫(kù)】

mysqldump -u user -h host -p password --databases[dbname,[dbname…]]>filename.sql

使用--databases參數(shù)之后,必須指定至少一個(gè)數(shù)據(jù)庫(kù)的名稱,多個(gè)數(shù)據(jù)庫(kù)之間使用空格隔開;

【備份系統(tǒng)中所有的數(shù)據(jù)庫(kù)】

mysqldump -u user -h host -p password --all-databases>filename.sql

提示:如果在服務(wù)器上進(jìn)行備份,并且表均為MyISAM,應(yīng)考慮使用mysqlhotcopy,因?yàn)榭梢愿斓倪M(jìn)行備份和恢復(fù);

2.直接復(fù)制整個(gè)數(shù)據(jù)庫(kù)目錄

因?yàn)镸ySQL表保存為文件方式,所以可以直接復(fù)制MySQL數(shù)據(jù)庫(kù)的存儲(chǔ)目錄以及文件進(jìn)行備份。

這是一種簡(jiǎn)單、快速、有效的備份方式,要想保持備份的一致性,備份前需要對(duì)相關(guān)表執(zhí)行LOCK TABLES 操作,然后對(duì)表執(zhí)行FLUSH TABLES(確保開始備份前將所有激活的索引頁(yè)寫入硬盤)。這樣當(dāng)復(fù)制數(shù)據(jù)庫(kù)目錄的文件時(shí),允許其他的用戶繼續(xù)查詢表。

這種方法對(duì)InnoDB存儲(chǔ)引擎的表不適用。使用這種方法備份數(shù)據(jù)最好還原到相同版本的服務(wù)器中,不同版本可能不兼容;

3.使用mysqlhotcopy工具快速備份

mysqlhotcopy是一個(gè)Perl腳本。

只能運(yùn)行在數(shù)據(jù)庫(kù)目錄所在的機(jī)器上,并且只能備份MyISAM和ARCHIVE類型的表;

2.數(shù)據(jù)還原

1.使用MySQL命令還原

mysql -u username -p [dbname] < filename.sql

注意:如果filename.sql文件為mysqldump工具創(chuàng)建的包含創(chuàng)建數(shù)據(jù)庫(kù)語(yǔ)句的文件,執(zhí)行的時(shí)候不需要指定數(shù)據(jù)庫(kù)名;

如果已經(jīng)登錄到MySQL服務(wù)器,還可以使用source命令導(dǎo)入SQL文件。

source filename

提示:執(zhí)行source命令之前,必須使用use語(yǔ)句選擇數(shù)據(jù)庫(kù)。不然,恢復(fù)過(guò)程中會(huì)出現(xiàn)錯(cuò)誤;

2.直接復(fù)制到數(shù)據(jù)庫(kù)目錄

如果數(shù)據(jù)庫(kù)通過(guò)復(fù)制數(shù)據(jù)庫(kù)文件備份,可以直接復(fù)制備份的文件到MySQL數(shù)據(jù)目錄下實(shí)現(xiàn)還原。

通過(guò)該方式還原的時(shí)候,必須保持備份數(shù)據(jù)庫(kù)和待還原的數(shù)據(jù)庫(kù)服務(wù)器的主版本號(hào)相同。而且這種方式只是對(duì)MyISAM引擎的表有效,對(duì)于InnoDB引擎的表不可用;

執(zhí)行還原以前關(guān)閉MySQL服務(wù),將備份的文件或者目錄覆蓋MySQL的data目錄,啟動(dòng)MySQL服務(wù)。

對(duì)于Linux/Unix操作系統(tǒng)來(lái)講,復(fù)制完文件需要將文件的用戶或者用戶組更改為mysql運(yùn)行的用戶和組,通常用戶是mysql,組也是mysql;

3.mysqlhotcopy快速恢復(fù)

mysqlhotcopy備份之后的文件也可以用來(lái)恢復(fù)數(shù)據(jù)庫(kù),在MySQL服務(wù)器停止運(yùn)行的時(shí)候,將備份的數(shù)據(jù)庫(kù)文件復(fù)制到MySQL存放的位置(MySQL的data文件夾),重新啟動(dòng)MySQL服務(wù)即可。

如果以根用戶執(zhí)行該操作,必須指定數(shù)據(jù)庫(kù)文件的所有者

chown -R mysql.mysql /var/lib/mysql/dbname

cp -R /usr/backup/test usr/local/mysql/data

執(zhí)行完該語(yǔ)句,重啟服務(wù)器,MySQL將恢復(fù)到備份狀態(tài)

提示:如果需要恢復(fù)的數(shù)據(jù)庫(kù)已經(jīng)存在,則在使用DROP語(yǔ)句刪除已經(jīng)存在的數(shù)據(jù)庫(kù)之后,恢復(fù)才可以成功,另外MySQL不同版本之間必須兼容;

3.數(shù)據(jù)庫(kù)遷移

數(shù)據(jù)庫(kù)遷移就是把數(shù)據(jù)從一個(gè)系統(tǒng)移動(dòng)到另一個(gè)系統(tǒng)上。數(shù)據(jù)遷移有以下原因:

1.相同版本的MySQL數(shù)據(jù)庫(kù)之間的遷移

相同版本的MySQL數(shù)據(jù)庫(kù)之間的遷移就是指在主版本號(hào)相同的MySQL數(shù)據(jù)庫(kù)之間進(jìn)行數(shù)據(jù)庫(kù)移動(dòng)。

舉例:

將www.abc.com主機(jī)上的MySQL數(shù)據(jù)庫(kù)全部遷移到www.bcd.com主機(jī)上:

mysqldump -h www.abc.com -u root -ppassword dbname mysql -h www.bcd.com -uroot -ppassword

說(shuō)明:

mysqldump導(dǎo)入的數(shù)據(jù)直接通過(guò)管道符 ,傳給mysql命令導(dǎo)入到主機(jī)www.bcd.com數(shù)據(jù)庫(kù)中,dbname為需要遷移的數(shù)據(jù)庫(kù)名稱,如果需要遷移全部的數(shù)據(jù)庫(kù),可以使用參數(shù) --all-databases

2.不同版本的MySQL數(shù)據(jù)庫(kù)之間的遷移

MySQL服務(wù)器升級(jí)的時(shí)候,需要先停止服務(wù),然后卸載舊版本,并安裝新版本MySQL,這種更新方法很簡(jiǎn)單,如果想保留舊版本中的用戶訪問(wèn)控制信息,需要備份MySQL中的mysql數(shù)據(jù)庫(kù),在新版本MySQL安裝完成之后,重新讀入mysql備份文件中的信息;

舊版本與新版本的字符集不同時(shí),遷移過(guò)程需要對(duì)默認(rèn)字符集進(jìn)行修改,不然可能無(wú)法正常顯示結(jié)果;

對(duì)于InnoDB引擎的表,一般只能使用mysqldump工具將數(shù)據(jù)導(dǎo)出,然后使用mysql命令導(dǎo)入到目標(biāo)服務(wù)器上。

從新版本向舊版本遷移數(shù)據(jù)的時(shí)候,需要特別的小心,最好使用mysqldump命令導(dǎo)出,然后導(dǎo)入目標(biāo)數(shù)據(jù)庫(kù)中;

3.不同數(shù)據(jù)庫(kù)之間的遷移

數(shù)據(jù)庫(kù)遷移可以使用一些工具,例如在Windows系統(tǒng)下,可以使用MyODBC實(shí)現(xiàn)MySQL和SQL Server之間的遷移。

MySQL官方提供的工具M(jìn)ySQL Migration Toolkit也可以實(shí)現(xiàn)在不同數(shù)據(jù)庫(kù)間進(jìn)行數(shù)據(jù)遷移;

4.表的導(dǎo)出和導(dǎo)入

MySQL數(shù)據(jù)庫(kù)中的數(shù)據(jù)可以導(dǎo)出成SQL文本文件、xml文件或者HTML文件。

1.使用SELECT…INTO OUTFILE導(dǎo)出文本文件

MySQL數(shù)據(jù)庫(kù)導(dǎo)出數(shù)據(jù)的時(shí)候,允許使用包含導(dǎo)出定義的SELECT語(yǔ)句進(jìn)行數(shù)據(jù)導(dǎo)出操作。該文件被創(chuàng)建到服務(wù)器主機(jī)上,因此必須擁有文件寫入權(quán)限(FILE權(quán)限),才能使用此語(yǔ)法。

語(yǔ)法格式:

SELECT columnlist FORM table WHERE condition INTO OUTFILE ‘filename’ [OPTIONS]

[OPTIONS]選項(xiàng):

FIELDS TERMINATED BY ‘value’

FIELDS [OPTIONALLY] ENCLOSED BY ‘value’

FIELDS ESCAPED BY ‘value’

LINES STARTING BY ‘value’

LINES TERMINATED BY ‘value’

說(shuō)明:filename不能是一個(gè)已經(jīng)存在的文件;

OPTIONS部分語(yǔ)法包括FIELDS部分的語(yǔ)法和LINES子句,其可能的取值有:

FIELDS TERMINATED BY ‘value’:

設(shè)置字段之間的分隔字符,可以為單個(gè)或者多個(gè)字符,默認(rèn)情況下為制表符‘\t’

FIELDS [OPTIONALLY] ENCLOSED BY ‘value’:

設(shè)置字段的包圍字符,只能為單個(gè)字符,如果使用了OPTIONALLY,則只有CHAR和VERCHAR等字符數(shù)據(jù)字段被包括;

FIELDS ESCAPED BY ‘value’:

設(shè)置如何寫入或者讀取特殊字符,只能為單個(gè)字符,即設(shè)置轉(zhuǎn)義字符,默認(rèn)值為“\”

LINES STARTING BY ‘value’:

設(shè)置每行數(shù)據(jù)開始字符,可以為單個(gè)或者多個(gè),默認(rèn)不使用任何字符

LINES TERMINATED BY ‘value’:

設(shè)置每行數(shù)據(jù)結(jié)尾的字符 可以為單個(gè)或者多個(gè)字符,默認(rèn)值為‘\n’;

注意:FIELDS和LINES兩個(gè)子句是可選的,如果同時(shí)指定,F(xiàn)IELDS必須位于LINES的前面;

2.使用mysqldump命令導(dǎo)出文本文件

mysqldump工具不僅可以將數(shù)據(jù)導(dǎo)出為包含CREATE、INSERT的SQL文件,也可以導(dǎo)出為純文本文件;

mysqldump -T path-u root -p dbname [tables] [OPTIONS]

--OPTIONS選項(xiàng):

--fields-terminated-by=value

--fields-enclosed-by=value

--fields-optionally-enclosed-by=value

--fields-escaped-by=value

--lines-terminated-end-by=value

說(shuō)明:只有指定了T參數(shù)才可以導(dǎo)出為純文本文件;path表示導(dǎo)出數(shù)據(jù)的目錄;tables為指定要導(dǎo)出表的名稱;如果不指定,將導(dǎo)出數(shù)據(jù)庫(kù)dbname中的所有的表;

[options]取值:

--fields-terminated-by=value:

設(shè)置字段之間的分隔字符,可以為單個(gè)或者多個(gè)字符,默認(rèn)情況下為制表符‘\t’

--fields-enclosed-by=value:

設(shè)置字段的包圍字符;

--fields-optionally-enclosed-by=value:

設(shè)置字段的包圍字符,只能為單個(gè)字符,如果使用了OPTIONALLY,則只有CHAR和VERCHAR等字符數(shù)據(jù)字段被包括;

--fields-escaped-by=value:

控制如何寫入或者讀取特殊字符,只能為單個(gè)字符,及設(shè)置轉(zhuǎn)義字符,默認(rèn)為反斜線“\”;

--lines-terminated-end-by=value:

設(shè)置每行數(shù)據(jù)結(jié)尾的字符,可以為單個(gè)或者多個(gè)字符,默認(rèn)值為‘\n’

3.使用MySQL命令導(dǎo)出文本文件

mysql是一個(gè)功能豐富的工具命令,使用MySQL還可以在命令行模式下執(zhí)行SQL指令將查詢結(jié)果導(dǎo)入到文本文件中。相比mysqldump,MySQL工具導(dǎo)出的結(jié)果可讀性更強(qiáng)。

如果MySQL服務(wù)器是一個(gè)單獨(dú)的機(jī)器,用戶是在一個(gè)client上進(jìn)行操作,用戶要把數(shù)據(jù)導(dǎo)入到client機(jī)器上,可以使用mysql -e語(yǔ)句;

使用MySQL導(dǎo)出數(shù)據(jù)文本文件語(yǔ)句的基本格式如下:

mysql -u root -p --execute=”SELECT語(yǔ)句” dbname > filename.txt

使用MySQL命令還可以指定查詢結(jié)果的顯示格式:

如果某行記錄字段很多,可能一行不能完全顯示,可以使用--vartical參數(shù),將每條記錄分為多行顯示;

【將查詢結(jié)果導(dǎo)出到HTML文件中】

mysql -u root -p --html --execute=”SELECT語(yǔ)句” dbname > filename.html

【將查詢結(jié)果導(dǎo)出到xml文件中】

mysql -u root -p --xml --execute=”SELECT語(yǔ)句” dbname > filename.xml

4.使用LOAD DATA INFILE方式導(dǎo)入文本文件

LOAD DATA INFILE 語(yǔ)句用于高速的從一個(gè)文本文件中讀取行,并裝入一個(gè)表中。文件名稱必須為文字字符串。

LOAD DATA INFILE ‘路徑+文件名.txt’ INTO TABLE tablename [OPTIONS] [IGNORE number LINES]

注意:如果導(dǎo)出的.txt文件中指定了一些特殊的字符,因此還原語(yǔ)句中也要指定這些字符,以確保還原之后數(shù)據(jù)的完整性和正確性;

--OPTIONS選項(xiàng)

FIELDS TERMINATED BY ‘value’

FIELDS [OPTIONALLY] ENCLOSED BY ‘value’

FIELDS ESCAPED BY ‘value’

LINES STARTING BY ‘value’

LINES TERMINATED BY ‘value’

可以看到LOAD DATA 語(yǔ)句中,關(guān)鍵字INFILE后面的filename文件為導(dǎo)入數(shù)據(jù)的來(lái)源;

tablename表示待導(dǎo)入的數(shù)據(jù)表名稱;

OPTIONS部分語(yǔ)法包括FIELDS部分的語(yǔ)法和LINES子句,其可能的取值有:

FIELDS TERMINATED BY ‘value’:

設(shè)置字段之間的分隔字符,可以為單個(gè)或者多個(gè)字符,默認(rèn)情況下為制表符‘\t’

FIELDS [OPTIONALLY] ENCLOSED BY ‘value’:

設(shè)置字段的包圍字符,只能為單個(gè)字符,如果使用了OPTIONALLY,則只有CHAR和VERCHAR等字符數(shù)據(jù)字段被包括;

FIELDS ESCAPED BY ‘value’:

設(shè)置如何寫入或者讀取特殊字符,只能為單個(gè)字符,即設(shè)置轉(zhuǎn)義字符,默認(rèn)值為“\”

LINES STARTING BY ‘value’:

設(shè)置每行數(shù)據(jù)開始字符,可以為單個(gè)或者多個(gè),默認(rèn)不使用任何字符

LINES TERMINATED BY ‘value’:

設(shè)置每行數(shù)據(jù)結(jié)尾的字符 可以為單個(gè)或者多個(gè)字符,默認(rèn)值為‘\n’;

[IGNORE number LINES]

選項(xiàng)表示忽略文件開始處的行數(shù),number表示忽略的行數(shù)。執(zhí)行LOAD DATA語(yǔ)句需要FILE權(quán)限;

5.使用mysqlimport命令導(dǎo)入文本文件

使用mysqlimport命令可以導(dǎo)入文本文件,并且不需要登錄MySQL客戶端。

使用mysqlimport語(yǔ)句需要指定所需的選項(xiàng)、導(dǎo)入的數(shù)據(jù)庫(kù)名稱以及導(dǎo)入的數(shù)據(jù)文件的路徑和名稱。

mysqlimport命令的基本語(yǔ)法如下:

mysqlimport -u root -p dbname filename.txt [OPTIONS]

[options]取值:

--fields-terminated-by=value:

設(shè)置字段之間的分隔字符,可以為單個(gè)或者多個(gè)字符,默認(rèn)情況下為制表符‘\t’

--fields-enclosed-by=value:

設(shè)置字段的包圍字符;

--fields-optionally-enclosed-by=value:

設(shè)置字段的包圍字符,只能為單個(gè)字符,如果使用了OPTIONALLY,則只有CHAR和VERCHAR等字符數(shù)據(jù)字段被包括;

--fields-escaped-by=value:

控制如何寫入或者讀取特殊字符,只能為單個(gè)字符,及設(shè)置轉(zhuǎn)義字符,默認(rèn)為反斜線“\”;

--lines-terminated-end-by=value:

設(shè)置每行數(shù)據(jù)結(jié)尾的字符,可以為單個(gè)或者多個(gè)字符,默認(rèn)值為‘\n’

--ignore-lines=n

忽略數(shù)據(jù)文件的前n行;

注意:mysqlimport命令不能指定導(dǎo)入數(shù)據(jù)庫(kù)的表名稱,數(shù)據(jù)表的名稱由導(dǎo)入文件名稱決定,即文件名作為表名,導(dǎo)入數(shù)據(jù)之前該表必須存在。

相關(guān)推薦:

mysql 數(shù)據(jù)庫(kù) 備份還原命令

Mysql數(shù)據(jù)庫(kù)備份和還原命令備忘

以上就是mysql備份還原庫(kù)命令方法解析(長(zhǎng)文)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。




主站蜘蛛池模板: 欧美中文字幕一区 | 青草免费免费观看视频在线 | 天天插天天爱 | 日本a级片免费观看 | 中文字幕一区在线观看 | 日韩一级片在线免费观看 | 手机看片日韩日韩国产在线看 | 欧美性xxxxxx爱| 在线不卡一区二区三区日韩 | 日本在线观看永久免费网站 | 自怕偷自怕亚洲精品 | 日韩欧美国产一区二区三区 | 亚洲乱码一二三四区麻豆 | 婷婷六月天在线 | 青青在线视频免费观看 | 欧美特黄一区二区三区 | 性网站视频 | 在线天堂中文在线资源网 | 添人人躁日日躁夜夜躁夜夜揉 | 性a视频| 先锋资源国产 | 日本成a人片在线观看网址 日本草草影院 | 伊在线视频 | 欧美中文综合在线视频 | 色国产精品一区在线观看 | 欧美性美 | 日日摸夜夜摸无需播放器 | 亚洲婷婷综合中文字幕第一页 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠扒开双腿 | 四虎国产永久在线精品免费观看 | 日本欧美高清全视频 | 色综合久久久久久 | 午夜网站在线观看免费网址免费 | 性欧美一级| 视频免费在线观看 | 亚洲欧美日韩精品久久 | 综合久久久久久久 | 日韩一区二区久久久久久 | 日韩中文字幕在线看 | 性8成人有声小说在线播放 性 色 黄 一级 | 亚洲天堂中文字幕在线观看 |