真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

備份mysql語句怎么寫 mysql備份表數(shù)據(jù)語句

備份mysql數(shù)據(jù)

其實(shí)你的這個(gè)問題是mysql中的一個(gè)核心問題,既mysql數(shù)據(jù)的備份和恢復(fù)

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),龍海企業(yè)網(wǎng)站建設(shè),龍海品牌網(wǎng)站建設(shè),網(wǎng)站定制,龍海網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,龍海網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

你可以使用三種方式

1.使用sql語句導(dǎo)入導(dǎo)出

2.使用mysqldump 和mysqlimport 工具

3.直接copy 數(shù)據(jù)文件 既冷備份

你說說的詳細(xì),就給積分,那我就說詳細(xì)些

一.使用sql語句完成mysql的備份和恢復(fù)

你可以使用SELECT INTO OUTFILE語句備份數(shù)據(jù),并用LOAD DATA INFILE語句恢復(fù)數(shù)據(jù)。這種方法只能導(dǎo)出數(shù)據(jù)的內(nèi)容,不包括表的結(jié)構(gòu),如果表的結(jié)構(gòu)文件損壞,你必須要先恢復(fù)原來的表的結(jié)構(gòu)。

語法:

SELECT * INTO {OUTFILE | DUMPFILE} 'file_name' FROM tbl_name

LOAD DATA [LOW_PRIORITY] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE]

INTO TABLE tbl_name

SELECT ... INTO OUTFILE 'file_name'格式的SELECT語句將選擇的行寫入一個(gè)文件。文件在服務(wù)器主機(jī)上被創(chuàng)建,并且不能是已經(jīng)存在的(不管別的,這可阻止數(shù)據(jù)庫(kù)表和文件例如“/etc/passwd”被破壞)。SELECT ... INTO OUTFILE是LOAD DATA INFILE逆操作。

LOAD DATA INFILE語句從一個(gè)文本文件中以很高的速度讀入一個(gè)表中。如果指定LOCAL關(guān)鍵詞,從客戶主機(jī)讀文件。如果LOCAL沒指定,文件必須位于服務(wù)器上。(LOCAL在MySQL3.22.6或以后版本中可用。)

為了安全原因,當(dāng)讀取位于服務(wù)器上的文本文件時(shí),文件必須處于數(shù)據(jù)庫(kù)目錄或可被所有人讀取。另外,為了對(duì)服務(wù)器上文件使用LOAD DATA INFILE,在服務(wù)器主機(jī)上你必須有file的權(quán)限。使用這種SELECT INTO OUTFILE語句,在服務(wù)器主機(jī)上你必須有FILE權(quán)限。

為了避免重復(fù)記錄,在表中你需要一個(gè)PRIMARY KEY或UNIQUE索引。當(dāng)在唯一索引值上一個(gè)新記錄與一個(gè)老記錄重復(fù)時(shí),REPLACE關(guān)鍵詞使得老記錄用一個(gè)新記錄替代。如果你指定IGNORE,跳過有唯一索引的現(xiàn)有行的重復(fù)行的輸入。如果你不指定任何一個(gè)選項(xiàng),當(dāng)找到重復(fù)索引值時(shí),出現(xiàn)一個(gè)錯(cuò)誤,并且文本文件的余下部分被忽略時(shí)。

如果你指定關(guān)鍵詞LOW_PRIORITY,LOAD DATA語句的執(zhí)行被推遲到?jīng)]有其他客戶讀取表后。

使用LOCAL將比讓服務(wù)器直接存取文件慢些,因?yàn)槲募膬?nèi)容必須從客戶主機(jī)傳送到服務(wù)器主機(jī)。在另一方面,你不需要file權(quán)限裝載本地文件。如果你使用LOCAL關(guān)鍵詞從一個(gè)本地文件裝載數(shù)據(jù),服務(wù)器沒有辦法在操作的當(dāng)中停止文件的傳輸,因此缺省的行為好像IGNORE被指定一樣。

當(dāng)在服務(wù)器主機(jī)上尋找文件時(shí),服務(wù)器使用下列規(guī)則:

? 如果給出一個(gè)絕對(duì)路徑名,服務(wù)器使用該路徑名。

? 如果給出一個(gè)有一個(gè)或多個(gè)前置部件的相對(duì)路徑名,服務(wù)器相對(duì)服務(wù)器的數(shù)據(jù)目錄搜索文件。

? 如果給出一個(gè)沒有前置部件的一個(gè)文件名,服務(wù)器在當(dāng)前數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)目錄尋找文件。

假定表tbl_name具有一個(gè)PRIMARY KEY或UNIQUE索引,備份一個(gè)數(shù)據(jù)表的過程如下:

1、鎖定數(shù)據(jù)表,避免在備份過程中,表被更新

mysqlLOCK TABLES READ tbl_name;

關(guān)于表的鎖定的詳細(xì)信息,將在下一章介紹。

2、導(dǎo)出數(shù)據(jù)

mysqlSELECT * INTO OUTFILE ‘tbl_name.bak’ FROM tbl_name;

3、解鎖表

mysqlUNLOCK TABLES;

相應(yīng)的恢復(fù)備份的數(shù)據(jù)的過程如下:

1、為表增加一個(gè)寫鎖定:

mysqlLOCK TABLES tbl_name WRITE;

2、恢復(fù)數(shù)據(jù)

mysqlLOAD DATA INFILE ‘tbl_name.bak’

-REPLACE INTO TABLE tbl_name;

如果,你指定一個(gè)LOW_PRIORITY關(guān)鍵字,就不必如上要對(duì)表鎖定,因?yàn)閿?shù)據(jù)的導(dǎo)入將被推遲到?jīng)]有客戶讀表為止:

mysqlLOAD DATA LOW_PRIORITY INFILE ‘tbl_name’

-REPLACE INTO TABLE tbl_name;

3、解鎖表

mysql-UNLOCAK TABLES;

5.3.2使用mysqlimport恢復(fù)數(shù)據(jù)

如果你僅僅恢復(fù)數(shù)據(jù),那么完全沒有必要在客戶機(jī)中執(zhí)行SQL語句,因?yàn)槟憧梢院?jiǎn)單的使用mysqlimport程序,它完全是與LOAD DATA 語句對(duì)應(yīng)的,由發(fā)送一個(gè)LOAD DATA INFILE命令到服務(wù)器來運(yùn)作。執(zhí)行命令mysqlimport --help,仔細(xì)查看輸出,你可以從這里得到幫助。

shell mysqlimport [options] db_name filename ...

對(duì)于在命令行上命名的每個(gè)文本文件,mysqlimport剝?nèi)ノ募臄U(kuò)展名并且使用它決定哪個(gè)表導(dǎo)入文件的內(nèi)容。例如,名為“patient.txt”、“patient.text”和“patient”將全部被導(dǎo)入名為patient的一個(gè)表中。

常用的選項(xiàng)為:

-C, --compress 如果客戶和服務(wù)器均支持壓縮,壓縮兩者之間的所有信息。

-d, --delete 在導(dǎo)入文本文件前倒空表格。

l, --lock-tables 在處理任何文本文件前為寫入所定所有的表。這保證所有的表在服務(wù)器上被同步。

--low-priority,--local,--replace,--ignore分別對(duì)應(yīng)LOAD DATA語句的LOW_PRIORITY,LOCAL,REPLACE,IGNORE關(guān)鍵字。

例如恢復(fù)數(shù)據(jù)庫(kù)db1中表tbl1的數(shù)據(jù),保存數(shù)據(jù)的文件為tbl1.bak,假定你在服務(wù)器主機(jī)上:

shellmysqlimport --lock-tables --replace db1 tbl1.bak

這樣在恢復(fù)數(shù)據(jù)之前現(xiàn)對(duì)表鎖定,也可以利用--low-priority選項(xiàng):

shellmysqlimport --low-priority --replace db1 tbl1.bak

如果你為遠(yuǎn)程的服務(wù)器恢復(fù)數(shù)據(jù),還可以這樣:

shellmysqlimport -C --lock-tables --replace db1 tbl1.bak

當(dāng)然,解壓縮要消耗CPU時(shí)間。

象其它客戶機(jī)一樣,你可能需要提供-u,-p選項(xiàng)以通過身分驗(yàn)證,也可以在選項(xiàng)文件my點(diǎn)吸煙 f中存儲(chǔ)這些參數(shù),具體方法和其它客戶機(jī)一樣,這里就不詳述了。

二、使用mysqldump備份數(shù)據(jù)

同mysqlimport一樣,也存在一個(gè)工具mysqldump備份數(shù)據(jù),但是它比SQL語句多做的工作是可以在導(dǎo)出的文件中包括SQL語句,因此可以備份數(shù)據(jù)庫(kù)表的結(jié)構(gòu),而且可以備份一個(gè)數(shù)據(jù)庫(kù),甚至整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)。

mysqldump [OPTIONS] database [tables]

mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]

mysqldump [OPTIONS] --all-databases [OPTIONS]

如果你不給定任何表,整個(gè)數(shù)據(jù)庫(kù)將被傾倒。

通過執(zhí)行mysqldump --help,你能得到你mysqldump的版本支持的選項(xiàng)表。

1、備份數(shù)據(jù)庫(kù)的方法

例如,假定你在服務(wù)器主機(jī)上備份數(shù)據(jù)庫(kù)db_name

shell mydqldump db_name

當(dāng)然,由于mysqldump缺省時(shí)把輸出定位到標(biāo)準(zhǔn)輸出,你需要重定向標(biāo)準(zhǔn)輸出。例如,把數(shù)據(jù)庫(kù)備份到bd_name.bak中:

shell mydqldump db_namedb_name.bak

你可以備份多個(gè)數(shù)據(jù)庫(kù),注意這種方法將不能指定數(shù)據(jù)表:

shell mydqldump --databases db1 db1db.bak

你也可以備份整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的拷貝,不過對(duì)于一個(gè)龐大的系統(tǒng),這樣做沒有什么實(shí)際的價(jià)值:

shell mydqldump --all-databasesdb.bak

雖然用mysqldump導(dǎo)出表的結(jié)構(gòu)很有用,但是恢復(fù)大量數(shù)據(jù)時(shí),眾多SQL語句使恢復(fù)的效率降低。你可以通過使用--tab選項(xiàng),分開數(shù)據(jù)和創(chuàng)建表的SQL語句。

-T,--tab= 在選項(xiàng)指定的目錄里,創(chuàng)建用制表符(tab)分隔列值的數(shù)據(jù)文件和包含創(chuàng)建表結(jié)構(gòu)的SQL語句的文件,分別用擴(kuò)展名.txt和.sql表示。該選項(xiàng)不能與--databases或--all-databases同時(shí)使用,并且mysqldump必須運(yùn)行在服務(wù)器主機(jī)上。

例如,假設(shè)數(shù)據(jù)庫(kù)db包括表tbl1,tbl2,你準(zhǔn)備備份它們到/var/mysqldb

shellmysqldump --tab=/var/mysqldb/ db

其效果是在目錄/var/mysqldb中生成4個(gè)文件,分別是tbl1.txt、tbl1.sql、tbl2.txt和tbl2.sql。

2、mysqldump實(shí)用程序時(shí)的身份驗(yàn)證的問題

同其他客戶機(jī)一樣,你也必須提供一個(gè)MySQL數(shù)據(jù)庫(kù)帳號(hào)用來導(dǎo)出數(shù)據(jù)庫(kù),如果你不是使用匿名用戶的話,可能需要手工提供參數(shù)或者使用選項(xiàng)文件:

如果這樣:

shellmysql -u root –pmypass db_namedb_name.sql

或者這樣在選項(xiàng)文件中提供參數(shù):

[mysqldump]

user=root

password=mypass

然后執(zhí)行

shellmysqldump db_namedb_name.sql

那么一切順利,不會(huì)有任何問題,但要注意命令歷史會(huì)泄漏密碼,或者不能讓任何除你之外的用戶能夠訪問選項(xiàng)文件,由于數(shù)據(jù)庫(kù)服務(wù)器也需要這個(gè)選項(xiàng)文件時(shí),選項(xiàng)文件只能被啟動(dòng)服務(wù)器的用戶(如,mysql)擁有和訪問,以免泄密。在Unix下你還有一個(gè)解決辦法,可以在自己的用戶目錄中提供個(gè)人選項(xiàng)文件(~/.my點(diǎn)吸煙 f),例如,/home/some_user/.my點(diǎn)吸煙 f,然后把上面的內(nèi)容加入文件中,注意防止泄密。在NT系統(tǒng)中,你可以簡(jiǎn)單的讓c:\my點(diǎn)吸煙 f能被指定的用戶訪問。

你可能要問,為什么這么麻煩呢,例如,這樣使用命令行:

shellmysql -u root –p db_namedb_name.sql

或者在選項(xiàng)文件中加入

[mysqldump]

user=root

password

然后執(zhí)行命令行:

shellmysql db_namedb_name.sql

你發(fā)現(xiàn)了什么?往常熟悉的Enter password:提示并沒有出現(xiàn),因?yàn)闃?biāo)準(zhǔn)輸出被重定向到文件db_name.sql中了,所以看不到往常的提示符,程序在等待你輸入密碼。在重定向的情況下,再使用交互模式,就會(huì)有問題。在上面的情況下,你還可以直接輸入密碼。然后在文件db_name.sql文件的第一行看到:

Enter password:#……..

你可能說問題不大,但是mysqldump之所以把結(jié)果輸出到標(biāo)準(zhǔn)輸出,是為了重定向到其它程序的標(biāo)準(zhǔn)輸入,這樣有利于編寫腳本。例如:

用來自于一個(gè)數(shù)據(jù)庫(kù)的信息充實(shí)另外一個(gè)MySQL數(shù)據(jù)庫(kù)也是有用的:

shellmysqldump --opt database | mysql --host=remote-host -C database

如果mysqldump仍運(yùn)行在提示輸入密碼的交互模式下,該命令不會(huì)成功,但是如果mysql是否運(yùn)行在提示輸入密碼的交互模式下,都是可以的。

如果在選項(xiàng)文件中的[client]或者[mysqldump]任何一段中指定了password選項(xiàng),且不提供密碼,即使,在另一段中有提供密碼的選項(xiàng)password=mypass,例如

[client]

user=root

password

[mysqldump]

user=admin

password=mypass

那么mysqldump一定要你輸入admin用戶的密碼:

mysqlmysqldump db_name

即使是這樣使用命令行:

mysqlmysqldump –u root –ppass1 db

也是這樣,不過要如果-u指定的用戶的密碼。

其它使用選項(xiàng)文件的客戶程序也是這樣

3、有關(guān)生成SQL語句的優(yōu)化控制

--add-locks 生成的SQL 語句中,在每個(gè)表數(shù)據(jù)恢復(fù)之前增加LOCK TABLES并且之后UNLOCK TABLE。(為了使得更快地插入到MySQL)。

--add-drop-table 生成的SQL 語句中,在每個(gè)create語句之前增加一個(gè)drop table。

-e, --extended-insert 使用全新多行INSERT語法。(給出更緊縮并且更快的插入語句)

下面兩個(gè)選項(xiàng)能夠加快備份表的速度:

-l, --lock-tables. 為開始導(dǎo)出數(shù)據(jù)前,讀鎖定所有涉及的表。

-q, --quick 不緩沖查詢,直接傾倒至stdout。

理論上,備份時(shí)你應(yīng)該指定上訴所有選項(xiàng)。這樣會(huì)使命令行過于復(fù)雜,作為代替,你可以簡(jiǎn)單的指定一個(gè)--opt選項(xiàng),它會(huì)使上述所有選項(xiàng)有效。

例如,你將導(dǎo)出一個(gè)很大的數(shù)據(jù)庫(kù):

shell mysqldump --opt db_name db_name.txt

當(dāng)然,使用--tab選項(xiàng)時(shí),由于不生成恢復(fù)數(shù)據(jù)的SQL語句,使用--opt時(shí),只會(huì)加快數(shù)據(jù)導(dǎo)出。

4、恢復(fù)mysqldump備份的數(shù)據(jù)

由于備份文件是SQL語句的集合,所以需要在批處理模式下使用客戶機(jī)

? 如果你使用mysqldump備份單個(gè)數(shù)據(jù)庫(kù)或表,即:

shellmysqldump --opt db_name db_name.sql

由于db_name.sql中不包括創(chuàng)建數(shù)據(jù)庫(kù)或者選取數(shù)據(jù)庫(kù)的語句,你需要指定數(shù)據(jù)庫(kù)

shellmysql db2 db_name.sql

? 如果,你使用--databases或者--all-databases選項(xiàng),由于導(dǎo)出文件中已經(jīng)包含創(chuàng)建和選用數(shù)據(jù)庫(kù)的語句,可以直接使用,不比指定數(shù)據(jù)庫(kù),例如:

shellmysqldump --databases db_name db_name.sql

shellmysql db_name.sql

? 如果你使用--tab選項(xiàng)備份數(shù)據(jù),數(shù)據(jù)恢復(fù)可能效率會(huì)高些

例如,備份數(shù)據(jù)庫(kù)db_name后在恢復(fù):

shellmysqldump --tab=/path/to/dir --opt test

如果要恢復(fù)表的結(jié)構(gòu),可以這樣:

shellmysql /path/to/dir/tbl1.sql

如果要恢復(fù)數(shù)據(jù),可以這樣

shellmysqlimport -l db /path/to/dir/tbl1.txt

如果是在Unix平臺(tái)下使用(推薦),就更方便了:

shellls -l *.sql | mysql db

shellmysqlimport --lock-tables db /path/to/dir/*.txt

三 .用直接拷貝的方法備份恢復(fù)

根據(jù)本章前兩節(jié)的介紹,由于MySQL的數(shù)據(jù)庫(kù)和表是直接通過目錄和表文件實(shí)現(xiàn)的,因此直接復(fù)制文件來備份數(shù)據(jù)庫(kù)數(shù)據(jù),對(duì)MySQL來說特別方便。而且自MySQL 3.23起MyISAM表成為缺省的表的類型,這種表可以為在不同的硬件體系中共享數(shù)據(jù)提供了保證。

使用直接拷貝的方法備份時(shí),尤其要注意表沒有被使用,你應(yīng)該首先對(duì)表進(jìn)行讀鎖定。

備份一個(gè)表,需要三個(gè)文件:

對(duì)于MyISAM表:

tbl_name.frm 表的描述文件

tbl_name.MYD 表的數(shù)據(jù)文件

tbl_name.MYI 表的索引文件

對(duì)于ISAM表:

tbl_name.frm 表的描述文件

tbl_name.ISD 表的數(shù)據(jù)文件

tbl_name.ISM 表的索引文件

你直接拷貝文件從一個(gè)數(shù)據(jù)庫(kù)服務(wù)器到另一個(gè)服務(wù)器,對(duì)于MyISAM表,你可以從運(yùn)行在不同硬件系統(tǒng)的服務(wù)器之間復(fù)制文件

像你這個(gè)問題,可以把遠(yuǎn)程機(jī)器的mysql數(shù)據(jù)目錄ftp下載到你本地的mysql目錄下,重啟mysql就可以了

Mysql查詢器的備份語句怎么寫

mysqldump 是一個(gè) 可執(zhí)行程序, 不是 sql 語句里面的一個(gè)命令。

進(jìn)入MySQL目錄下的bin文件夾

mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 導(dǎo)出的文件名

C:\Program Files\MySQL\MySQL Server 5.5\binmysqldump -u root -p Test test.sql

Enter password: ********

C:\Program Files\MySQL\MySQL Server 5.5\bindir *.sql

驅(qū)動(dòng)器 C 中的卷沒有標(biāo)簽。

卷的序列號(hào)是 406A-C32E

C:\Program Files\MySQL\MySQL Server 5.5\bin 的目錄

2013-01-29 16:34 39,574 test.sql

1 個(gè)文件 39,574 字節(jié)

0 個(gè)目錄 5,498,294,272 可用字節(jié)

導(dǎo)入

C:\Program Files\MySQL\MySQL Server 5.5\binmysql -u root -p

Enter password: ********

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 17

Server version: 5.5.29 MySQL Community Server (GPL)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql create database test2;

Query OK, 1 row affected (0.04 sec)

mysql use test2

Database changed

mysql source test.sql

......

備份MYSQL數(shù)據(jù)庫(kù)SQL語句怎么寫

備份MYSQL數(shù)據(jù)庫(kù)SQL語句怎么寫

mysqldump -uroot -pPassword dbname dbname.sql


分享標(biāo)題:備份mysql語句怎么寫 mysql備份表數(shù)據(jù)語句
文章URL:http://weahome.cn/article/ddgcpsi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部