新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > MySQL MyISAM和InNodb備份與恢復技巧

        MySQL MyISAM和InNodb備份與恢復技巧

        作者: 時間:2016-09-12 來源:網(wǎng)絡 收藏

        該選項用于轉儲大的表。它強制mysqldump從服務器一次一行地檢索表中的行而不是檢索所有行并在輸出前將它緩存到內(nèi)存中。

        · --quote-names,-Q

        用‘`’字符引用數(shù)據(jù)庫、表和列名。如果服務器SQL模式包括ANSI_QUOTES選項,用‘’字符引用名。默認啟用該選項。可以用--skip-quote-names禁用,但該選項應跟在其它選項后面,例如可以啟用--quote-names的--compatible。

        · --result-file=file,-r file

        將輸出轉向給定的文件。該選項應用在Windows中,因為它禁止將新行‘/n’字符轉換為‘/r/n’回車、返回/新行序列。

        · --routines,-R

        在轉儲的數(shù)據(jù)庫中轉儲存儲程序(函數(shù)和程序)。使用---routines產(chǎn)生的輸出包含CREATE PROCEDURE和CREATE FUNCTION語句以重新創(chuàng)建子程序。但是,這些語句不包括屬性,例如子程序定義者或創(chuàng)建和修改時間戳。這說明當重載子程序時,對它們進行創(chuàng)建時定義者應設置為重載用戶,時間戳等于重載時間。

        如果你需要創(chuàng)建的子程序使用原來的定義者和時間戳屬性,不使用--routines。相反,使用一個具有mysql數(shù)據(jù)庫相應權限的賬戶直接轉儲和重載mysql.proc表的內(nèi)容。

        該選項在 5.1.2中添加進來。在此之前,存儲程序不轉儲。

        · --set-charset

        將SET NAMES default_character_set加到輸出中。該選項默認啟用。要想禁用SET NAMES語句,使用--skip-set-charset。

        · --single-transaction

        該選項從服務器轉儲數(shù)據(jù)之前發(fā)出一個BEGIN SQL語句。它只適用于事務表,例如InnoDB和BDB,因為然后它將在發(fā)出BEGIN而沒有阻塞任何應用程序時轉儲一致的數(shù)據(jù)庫狀態(tài)。

        當使用該選項時,應記住只有InnoDB表能以一致的狀態(tài)被轉儲。例如,使用該選項時任何轉儲的MyISAM或HEAP表仍然可以更改狀態(tài)。

        --single-transaction選項和--lock-tables選項是互斥的,因為LOCK TABLES會使任何掛起的事務隱含提交。

        要想轉儲大的表,應結合--quick使用該選項。

        · --socket=path,-S path

        當連接localhost(為默認主機)時使用的套接字文件。

        · --skip--comments

        參見---comments選項的描述。

        · --tab=path,-T path

        產(chǎn)生tab分割的數(shù)據(jù)文件。對于每個轉儲的表,mysqldump創(chuàng)建一個包含創(chuàng)建表的CREATE TABLE語句的tbl_name.sql文件,和一個包含其數(shù)據(jù)的tbl_name.txt文件。選項值為寫入文件的目錄。

        默認情況,.txt數(shù)據(jù)文件的格式是在列值和每行后面的新行之間使用tab字符??梢允褂?-fields-xxx和--行--xxx選項明顯指定格式。

        注釋:該選項只適用于mysqldump與mysqld服務器在同一臺機器上運行時。你必須具有FILE權限,并且服務器必須有在你指定的目錄中有寫文件的許可。

        · --tables

        覆蓋---database或-B選項。選項后面的所有參量被看作表名。

        · --triggers

        為每個轉儲的表轉儲觸發(fā)器。該選項默認啟用;用--skip-triggers禁用它。

        · --tz-utc

        在轉儲文件中加入SET TIME_ZONE='+00:00'以便TIMESTAMP列可以在具有不同時區(qū)的服務器之間轉儲和重載。(不使用該選項,TIMESTAMP列在具有本地時區(qū)的源服務器和目的服務器之間轉儲和重載)。--tz-utc也可以保護由于夏令時帶來的更改。--tz-utc默認啟用。要想禁用它,使用--skip-tz-utc。該選項在 5.1.2中加入。

        · --user=user_name,-u user_name

        連接服務器時使用的MySQL用戶名。

        · --verbose,-v

        冗長模式。打印出程序操作的詳細信息。

        · --version,-V

        顯示版本信息并退出。

        · --where='where-condition', -w 'where-condition'

        只轉儲給定的WHERE條件選擇的記錄。請注意如果條件包含命令解釋符專用空格或字符,一定要將條件引用起來。

        2.2. 文件冷

        當mysql服務器停止時,通過復制所有表文件(*.frm、*.MYD和*.MYI文件)來MyISAM數(shù)據(jù)庫。

        2.3. MyISAM 表

        1、 如果是通過mysqldump的,就執(zhí)行:mysql –u root 備份文件名。

        2、 如果通過mysqlhotcopy或文件冷/熱拷貝來備份的,停止mysql服務,使用備份文件來覆蓋現(xiàn)有文件。

        3、 如果是采用BACKUP TABLE備份的,使用restore table來。因為backup table不會備份索引文件,表注意重建索引。

        4、 如果是采用SELECT INTO ...OUTFILE備份的,使用load data恢復數(shù)據(jù),也可以使用mysqlimport命令來代替。

        3. 日志備份

        3.1. 日志備份的好處及如何啟用

        日志備份可以支持MyISAM和InnoDB,這跟有些備份工具只支持MyISAM不一樣。

        另外,日志可以做增量備份,這是其他方法無法做到的。

        啟動日志備份:用--log-bin[=file_name]選項來啟動mysql服務。

        3.2. 增量備份

        先執(zhí)行FLUSH LOGS刷新日志,同步日志緩存到磁盤,關閉當前的日志并產(chǎn)生新的日志文件。

        拷貝上一次完整備份或增量備份后的一個或一些日志文件到一個安全的地方。

        這樣就制作了一個增量備份。

        3.3. 日志恢復

        日志恢復可以選擇恢復某個數(shù)據(jù)庫、某些操作點或時間范圍,非常靈活。

        通過mysqlbinlog工具可以恢復二進制日志,可以一次恢復多個日志文件,命令如下:

        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



        關鍵詞: MySQL 備份 恢復

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 拉萨市| 军事| 会东县| 长沙县| 南京市| 策勒县| 连城县| 洛扎县| 方山县| 垦利县| 河间市| 五常市| 屯留县| 柏乡县| 苏尼特右旗| 安庆市| 临西县| 瓦房店市| 新余市| 上饶县| 富锦市| 哈密市| 墨竹工卡县| 巴林右旗| 望都县| 天祝| 应城市| 大宁县| 安顺市| 杭锦旗| 团风县| 成安县| 德兴市| 甘孜县| 阿图什市| 洛宁县| 保康县| 儋州市| 台东市| 邮箱| 通河县|