MySQL MyISAM和InNodb備份與恢復(fù)技巧
該選項用于轉(zhuǎn)儲大的表。它強制mysqldump從服務(wù)器一次一行地檢索表中的行而不是檢索所有行并在輸出前將它緩存到內(nèi)存中。
· --quote-names,-Q
用‘`’字符引用數(shù)據(jù)庫、表和列名。如果服務(wù)器SQL模式包括ANSI_QUOTES選項,用‘’字符引用名。默認啟用該選項??梢杂?-skip-quote-names禁用,但該選項應(yīng)跟在其它選項后面,例如可以啟用--quote-names的--compatible。
· --result-file=file,-r file
將輸出轉(zhuǎn)向給定的文件。該選項應(yīng)用在Windows中,因為它禁止將新行‘/n’字符轉(zhuǎn)換為‘/r/n’回車、返回/新行序列。
· --routines,-R
在轉(zhuǎn)儲的數(shù)據(jù)庫中轉(zhuǎn)儲存儲程序(函數(shù)和程序)。使用---routines產(chǎn)生的輸出包含CREATE PROCEDURE和CREATE FUNCTION語句以重新創(chuàng)建子程序。但是,這些語句不包括屬性,例如子程序定義者或創(chuàng)建和修改時間戳。這說明當(dāng)重載子程序時,對它們進行創(chuàng)建時定義者應(yīng)設(shè)置為重載用戶,時間戳等于重載時間。
如果你需要創(chuàng)建的子程序使用原來的定義者和時間戳屬性,不使用--routines。相反,使用一個具有mysql數(shù)據(jù)庫相應(yīng)權(quán)限的MySQL賬戶直接轉(zhuǎn)儲和重載mysql.proc表的內(nèi)容。
該選項在MySQL 5.1.2中添加進來。在此之前,存儲程序不轉(zhuǎn)儲。
· --set-charset
將SET NAMES default_character_set加到輸出中。該選項默認啟用。要想禁用SET NAMES語句,使用--skip-set-charset。
· --single-transaction
該選項從服務(wù)器轉(zhuǎn)儲數(shù)據(jù)之前發(fā)出一個BEGIN SQL語句。它只適用于事務(wù)表,例如InnoDB和BDB,因為然后它將在發(fā)出BEGIN而沒有阻塞任何應(yīng)用程序時轉(zhuǎn)儲一致的數(shù)據(jù)庫狀態(tài)。
當(dāng)使用該選項時,應(yīng)記住只有InnoDB表能以一致的狀態(tài)被轉(zhuǎn)儲。例如,使用該選項時任何轉(zhuǎn)儲的MyISAM或HEAP表仍然可以更改狀態(tài)。
--single-transaction選項和--lock-tables選項是互斥的,因為LOCK TABLES會使任何掛起的事務(wù)隱含提交。
要想轉(zhuǎn)儲大的表,應(yīng)結(jié)合--quick使用該選項。
· --socket=path,-S path
當(dāng)連接localhost(為默認主機)時使用的套接字文件。
· --skip--comments
參見---comments選項的描述。
· --tab=path,-T path
產(chǎn)生tab分割的數(shù)據(jù)文件。對于每個轉(zhuǎn)儲的表,mysqldump創(chuàng)建一個包含創(chuàng)建表的CREATE TABLE語句的tbl_name.sql文件,和一個包含其數(shù)據(jù)的tbl_name.txt文件。選項值為寫入文件的目錄。
默認情況,.txt數(shù)據(jù)文件的格式是在列值和每行后面的新行之間使用tab字符??梢允褂?-fields-xxx和--行--xxx選項明顯指定格式。
注釋:該選項只適用于mysqldump與mysqld服務(wù)器在同一臺機器上運行時。你必須具有FILE權(quán)限,并且服務(wù)器必須有在你指定的目錄中有寫文件的許可。
· --tables
覆蓋---database或-B選項。選項后面的所有參量被看作表名。
· --triggers
為每個轉(zhuǎn)儲的表轉(zhuǎn)儲觸發(fā)器。該選項默認啟用;用--skip-triggers禁用它。
· --tz-utc
在轉(zhuǎn)儲文件中加入SET TIME_ZONE='+00:00'以便TIMESTAMP列可以在具有不同時區(qū)的服務(wù)器之間轉(zhuǎn)儲和重載。(不使用該選項,TIMESTAMP列在具有本地時區(qū)的源服務(wù)器和目的服務(wù)器之間轉(zhuǎn)儲和重載)。--tz-utc也可以保護由于夏令時帶來的更改。--tz-utc默認啟用。要想禁用它,使用--skip-tz-utc。該選項在MySQL 5.1.2中加入。
· --user=user_name,-u user_name
連接服務(wù)器時使用的MySQL用戶名。
· --verbose,-v
冗長模式。打印出程序操作的詳細信息。
· --version,-V
顯示版本信息并退出。
· --where='where-condition', -w 'where-condition'
只轉(zhuǎn)儲給定的WHERE條件選擇的記錄。請注意如果條件包含命令解釋符專用空格或字符,一定要將條件引用起來。
2.2. 文件冷備份
當(dāng)mysql服務(wù)器停止時,通過復(fù)制所有表文件(*.frm、*.MYD和*.MYI文件)來備份MyISAM數(shù)據(jù)庫。
2.3. MyISAM 表恢復(fù)
1、 如果是通過mysqldump備份的,就執(zhí)行:mysql –u root 備份文件名。
2、 如果通過mysqlhotcopy或文件冷/熱拷貝來備份的,停止mysql服務(wù),使用備份文件來覆蓋現(xiàn)有文件。
3、 如果是采用BACKUP TABLE備份的,使用restore table來恢復(fù)。因為backup table不會備份索引文件,恢復(fù)表注意重建索引。
4、 如果是采用SELECT INTO ...OUTFILE備份的,使用load data恢復(fù)數(shù)據(jù),也可以使用mysqlimport命令來代替。
3. 日志備份
3.1. 日志備份的好處及如何啟用
日志備份可以支持MyISAM和InnoDB,這跟有些備份工具只支持MyISAM不一樣。
另外,日志可以做增量備份,這是其他方法無法做到的。
啟動日志備份:用--log-bin[=file_name]選項來啟動mysql服務(wù)。
3.2. 增量備份
先執(zhí)行FLUSH LOGS刷新日志,同步日志緩存到磁盤,關(guān)閉當(dāng)前的日志并產(chǎn)生新的日志文件。
拷貝上一次完整備份或增量備份后的一個或一些日志文件到一個安全的地方。
這樣就制作了一個增量備份。
3.3. 日志恢復(fù)
日志恢復(fù)可以選擇恢復(fù)某個數(shù)據(jù)庫、某些操作點或時間范圍,非常靈活。
通過mysqlbinlog工具可以恢復(fù)二進制日志,可以一次恢復(fù)多個日志文件,命令如下:
shell> mysqlbinlog [options] hostname-bin.[0-9]* | mysql
mysqlbinlog命令選項
· ---help,-?
顯示幫助消息并退出。
· ---database=db_name,-d db_name
只列出該數(shù)據(jù)庫的條目(只用本地日志)。
· --force-read,-f
使用該選項,如果mysqlbinlog讀它不能識別的二進制日志事件,它會打印警告,忽略該事件并繼續(xù)。沒有該選項,如果mysqlbinlog讀到此類事件則停止。
· --hexdump,-H
評論