• 沒有找到結果。

復原資料

在文檔中 第三章 伺服器管理 3.1. (頁 21-24)

3.6.1 重建資料庫

指令:c:\mysql\bin> mysql db_name < backup-file.sql

說明:backup-file.sql 是以 mysqldump 命令產生之專案檔。

3.6.2 復原資料表

指令 1:RESTORE TABLE tbl_name [, tbl_name] ... FROM '/path/to/backup/directory';

說明:將以 Backup 指令備份的資料表復原,只能用於資料表不存在的情況,若 資料表已存在時,將產生錯誤。

指令 2:LOAD DATA INFILE FILE_name REPLACE…;

說明:將以 SELECT INTO 指令備份的資料,重新載入對應的資料表。若資料表 有 Primary 或 Unique 型索引表,舊鍵值紀錄將被新紀錄取代。

復原資料時,請先以 Repair Table 資料表或 mysqlaheck –r 資料表指令檢查 資料表,99.9﹪的 MyISAM 資料表問題都可以克服。若無法解決問題時,請改 用下列方式處理:

¾ 首先重新載入前次以 mysqldump 下載之備份資料。

¾ 執行下列指令來更新資料

c:\mysql\bin>mysqlbinlog 對應日誌檔名 | mysql 3.6.3 資料表維護與損壞復原

本節介紹資料表之定期維護觀念,常用維護指令之用法,以及損壞時 之復原方式。雖然 MySQL 提供的修復指令非常安全,但還是建議讀者養 成定期備份資料之習慣,以策安全。以下簡述常用的資料表檢修指令語法 及用途。

3.6.3.1 分析資料表指令(ANALYZE TABLE ) ↑H

語法:ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

說明:可用於分析資料表及重建索引表,事前須先以讀取鎖定方式鎖表。適用於 所有型態資料表。

3.6.3.2 檢查資料表指令(CHECK TABLE)

語法:CHECK TABLE tbl_name [, tbl_name] ... [option] ...

說明:可用於檢查資料表及或提示錯誤資訊,適用於所有 MyISAM 和 InnoDB 型態資料表。其中 option 有下列選項,代表意義請見表 3.6,參數可複選。

{QUICK | FAST | MEDIUM | EXTENDED | CHANGED}

表 3.6 檢查資料表選項參數 型式 代表意義

QUICK 不做資料列掃描以檢查不正確之連結 FAST 只檢查未正常關閉的資料表

CHANGED 只檢查資料有變更或未正常關閉的資料表

MEDIUM 資料列掃描以維持正確之連結,同時檢查紀錄與索引之 checksum

EXTENDED 完整檢查,需耗費很長的時間

3.6.3.3 整理資料表指令(OPTIMIZE TABLE)

語法:OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

說明:紀錄為不定長度的資料表,有大量資料被刪除時,可用此道指令將紀錄重 新連結(刪除空洞)。前述資料表若經常需要更新處理時,可於每週或每 月處理一次 OPTIMIZE。

OPTIMIZE TABLE 指令將依下述過程來處理資料表:

9 檢查是否有刪除位置或紀錄被分段儲存,有則修復它。

9 檢查索引是否未排序,若未排序則重新排序。

9 檢查統計資料是否正確,不正確則更正之。

3.6.3.4 修復資料表指令(REPAIR TABLE)

語法:REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]

說明:此道指令只適用於MyISAM資料表,可用於修復損壞的資料表。其中各選 項參數意義簡述如下: ↑H

QUICK:只修復索引樹。

EXTENDED:以逐列方式重建索引。

USE_FRM:依據`.FRM'檔案重建索引表。

3.6.3.5 mysqlcheck

前述指令也可改用 mysqlchk 主控端命令來處理,此命令只用來處理 MyISAM 資料表。執行命令時,伺服器不需要停止。可使用下列型式來執行命 令:

c:\mysql\bin> mysqlcheck [options] db_name [tables]

c:\mysql\bin> mysqlcheck [options] --databases DB1 [DB2 DB3...]

c:\mysql\bin> mysqlcheck [options] --all-databases

若不指名資料表,或是搭配 --databases 或 --all-databases 選項參數時,所 有的資料庫都會被檢查。假如希望 mysqlcheck 可專用於 Repair, Analyze, 或 Optimize,可以將 mysqlcheck 複製後,並分別改名為 mysqlrepair(可省略 –r 參數), mysqlanalyze(可省略 –a 參數), mysqloptimize(可省略 –o 參數)。

mysqlcheck 可搭配下列選項參數使用:

--help(或 -? ):提示使用資訊

--all-databases(或 -A):檢查全部資料表。

--all-in-1(或 -1) :檢查指名資料庫內的全部資料表。

--analyze(或 -a) :分析資料表。

--auto-repair:資料表若有損壞則自動修復它,修復工作會在檢查全部資料表後 進行。

--check(或 -c):檢查資料表。

--check-only-changed(或 -C):只檢查最近有變更資料或未正常關閉的資料表。

--compress:若主從端均支援壓縮協定,所有在主從端傳送的資料都加以壓縮。

--databases(或 -B):檢查指名資料庫內的所有資料表。

--debug[=debug_options] (或 -# [debug_options]):記錄除錯信息,debug_options 通常會加上 'd:t:o,file_name'。

--default-character-set=charset:預設字元集。

--extended(或 -e ):完整檢查,除了耗時,也會產生一堆垃圾信息,可檢查出 100% 的錯誤。

--fast(或-F):只檢查未正常關閉的資料表。

--force(或 -f):縱使 SQL 指令有誤,強制完成檢查工作。

--Host=Host_name(或-h Host_name ):指名連線主機。

--medium-check(或 -m):速度會比 --extended 模式快,可檢查出 99.99% 的錯 誤。

--optimize(或 -o ):整理資料表。 ↑H

--password[=password] (或-p[password]):設定登入密碼。

--port=port_num(或 -P port_num ):設定通訊埠。

--protocol={TCP | SOCKET | PIPE | MEMORY}:指定通訊協定。

--quick(或 -q ):只檢查索引樹,為最快之檢查模式。

--repair(或 -r):修復資料表,除了無法檢查唯一鍵,所有錯誤都可處理。

--silent(或 -s ):只輸出錯誤信息。

--tables:指名資料表。

--User=User_name(或-u User_name:連線登入帳號。

--verbose(或 -v):輸出各階段之信息。

--version(或 -V) :提示版次信息。

在文檔中 第三章 伺服器管理 3.1. (頁 21-24)

相關文件