新聞中心

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

        MySQL MyISAM和InNodb備份與恢復技巧

        作者: 時間:2016-09-12 來源:網絡 收藏

        在注釋中顯示日志的十六進制轉儲。該輸出可以幫助復制過程中的調試。在 5.1.2中添加了該選項。

        本文引用地址:http://www.104case.com/article/201609/304118.htm

        · --host=host_name,-h host_name

        獲取給定主機上的服務器的二進制日志。

        · --local-load=path,-l pat

        為指定目錄中的LOAD DATA INFILE預處理本地臨時文件。

        · --offset=N,-o N

        跳過前N個條目。

        · --password[=password],-p[password]

        當連接服務器時使用的密碼。如果使用短選項形式(-p),選項和 密碼之間不能有空格。如果在命令行中--password或-p選項后面沒有 密碼值,則提示輸入一個密碼。

        · --port=port_num,-P port_num

        用于連接遠程服務器的TCP/IP端口號。

        · --position=N,-j N

        不贊成使用,應使用--start-position。

        · --protocol={TCP | SOCKET | PIPE | -position

        使用的連接協議。

        · --read-from-remote-server,-R

        服務器讀二進制日志。如果未給出該選項,任何連接參數選項將被忽略。這些選項是--host、--password、--port、--protocol、--socket和--user。

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

        將輸出指向給定的文件。

        · --short-form,-s

        只顯示日志中包含的語句,不顯示其它信息。

        · --socket=path,-S path

        用于連接的套接字文件。

        · --start-datetime=datetime

        從二進制日志中第1個日期時間等于或晚于datetime參量的事件開始讀取。datetime值相對于運行mysqlbinlog的機器上的本地時區。該值格式應符合DATETIME或TIMESTAMP數據類型。例如:

        shell> mysqlbinlog --start-datetime=2004-12-25 11:25:56 binlog.000003

        該選項可以幫助點對點

        · --stop-datetime=datetime

        從二進制日志中第1個日期時間等于或晚于datetime參量的事件起停止讀。關于datetime值的描述參見--start-datetime選項。該選項可以幫助及時

        · --start-position=N

        從二進制日志中第1個位置等于N參量時的事件開始讀。

        · --stop-position=N

        從二進制日志中第1個位置等于和大于N參量時的事件起停止讀。

        · --to-last-logs,-t

        在MySQL服務器中請求的二進制日志的結尾處不停止,而是繼續打印直到最后一個二進制日志的結尾。如果將輸出發送給同一臺MySQL服務器,會導致無限循環。該選項要求--read-from-remote-server。

        · --disable-logs-bin,-D

        禁用二進制日志。如果使用--to-last-logs選項將輸出發送給同一臺MySQL服務器,可以避免無限循環。該選項在崩潰時也很有用,可以避免復制已經記錄的語句。注釋:該選項要求有SUPER權限。

        · --user=user_name,-u user_name

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

        · --version,-V

        顯示版本信息并退出。

        還可以使用--var_name=value選項設置下面的變量:

        · open_files_limit

        指定要保留的打開的文件描述符的數量。

        4. InnoDB 表/恢復策略

        4.1. 使用商業的在線熱工具

        InnoDB Hotbackup 是一個在線工具,你可以用它來在InnoDB數據庫運行之時備份你的InnoDB數據庫。InnoDB 熱備份工具 不要求你關閉數據庫,并且它不設置任何鎖定或干擾你正常的數據庫處理。InnoDB 熱備份工具 是非免費(商業的)附加軟件,它每年的證書費用是每臺MySQL服務器運行的計算機390歐元。

        具體使用方法可以參考相關文檔,我也沒有使用過這個工具。

        4.2. 使用mysqldump 熱備份

        Mysqldump提供對InnoDB非物理的在線邏輯熱備份。

        使用方法與備份MyISAM時一樣。

        4.3. 使用select into 熱備份單個/多個表

        可以使用select into備份一個或多個表,用法與MyISAM表相同。

        4.4. 二進制冷備份

        如果你可以關閉你的MySQL服務器,你可以生成一個包含InnoDB用來管理它的表的所有文件的二進制備份。使用如下步驟:

        1. 關閉MySQL服務器,確信它是無錯誤關閉。

        2. 復制你所有數據文件(ibdata文件和.ibd文件)到一個安全的地方。

        3. 復制你所有ib_logfile文件到一個安全的地方。

        4. 復制my.cnf配置文件或文件到一個安全的地方。

        5. 為你InnoDB表復制.frm文件到一個安全的地方。

        4.5. InnoDB 表恢復

        1、 先嘗試使用InnoDB的日志自動恢復功能,方法是重啟mysql服務。

        2、 在一些情況下,明顯地數據庫損壞是因為操作系統損壞它自己的文件緩存,磁盤上的數據可能完好,最好是首先重啟計算機。它可以消除那些顯得是數據庫頁損壞的錯誤。

        如果不行,則采用下面的方法進行恢復。

        3、 如果是mysqldump做的完全備份,先恢復完全備份,然后再恢復完全備份后的增量日志備份。

        4、 如果是采用select into備份表的話,則采用load data或mysqlimport恢復。

        5、 如果是采用二進制冷備份做的完全備份,則先停止mysql服務,覆蓋備份的二進制文件,然后執行上次完全備份后的增量日志備份。

        6、 注意:InnoDB二進制文件沒有MyISAM那么好,必須在相同的浮點數的cpu機器上移植。

        5. MyISAM/InnoDB 備份/恢復策略

        因為在一個數據庫中有可能要同時使用MyISAM和InnoDB兩種引擎,因此統一考慮他們的備份/恢復策略。

        1、 完整備份采用mysqldump。

        2、 增量備份采用bin-log日志。

        3、 單表備份采用select into。

        4、

        6. 定期維護表

        雖然MySQL提供了多種備份/恢復手段,但是定期維護表大大可以降低表毀壞的可能性,并且可以提高查詢性能。

        1、對于InnoDB引擎,你可以使用innodb_tablespace_monitor來檢查表空間文件內文件空間管理的完整性。

        2、對于MyISAM引擎,可以通過sql語句或myisamchk 工具來維護表 。



        關鍵詞: MySQL 備份 恢復

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 镇沅| 灵寿县| 连南| 阿合奇县| 英吉沙县| 雅安市| 凉城县| 会昌县| 连山| 平山县| 普兰店市| 铜鼓县| 高密市| 嘉兴市| 萍乡市| 鄢陵县| 龙州县| 荥阳市| 南城县| 伊春市| 扎赉特旗| 西吉县| 浏阳市| 阿鲁科尔沁旗| 建德市| 靖边县| 民权县| 西吉县| 沂南县| 略阳县| 孝昌县| 蒲城县| 漠河县| 泸溪县| 威宁| 新巴尔虎左旗| 荃湾区| 舟曲县| 滦平县| 绍兴市| 林甸县|