- CH11
主從式資料庫系統 1
第 11 章
伺服器與資料庫管理
本章宗旨
介紹 MySQL 之權限功能、工作原理與權限類 型
介紹權限之授權與撤除指令及應用方式
簡介伺服器工作環境參數與管理
簡介日誌檔產生方式與用途
簡介伺服器管理指令
簡介災難預防與復原之意義與處理指令
Administrator 伺服器管理應用軟體使用說明
- CH11
主從式資料庫系統 3
大 綱
11-1 帳號與存取權限管理 11-2 伺服器系統環境管理 11-3 日誌檔管理
11-4 mysqladmin -伺服器管理命令 11-5 災難預防與復原
11-6 設定維護排程計劃
11-7 Administrator 應用簡介
11-1 帳號與存取權限管理
11-1-1 權限的功能 11-1-2 權限工作原理 11-1-3 權限類型
11-1-4 使用者授權與權限撤除 11-1-5 密碼設定與變更
11-1-6 啟用權限 11-1-7 伺服器連線
11-1-8 主機及其他設定值 11-1-9 權限驗證
- CH11
主從式資料庫系統 5
11-1-1 權限的功能
權限的主要功能
認證使用者是否有權登入伺服器
執行諸如 Select 、 Insert 、 Update 、 Delete 等資料處理作業時,認證是否有權開啟資料表 和處理資料
進階的權限管理功能,在於驗證相關人員是否 可以將權限授與他人使用
11-1-2 權限工作原理
MySQL 將存取權限控制分為兩個階段
階段一:伺服器先查核使用者是否被允許連線。
階段二:假如有連線權利,而且也成功的連線,使 用者每發出每一道 SQL 指令時, MySQL 將檢查 是否有足夠權限去處理該項作業
- CH11
主從式資料庫系統 7
11-1-2 權限工作原理
( 續 ) 連線後假如權限有被變更過(不管是自己變更
,或是他人變更),變更的權限並不會立即發 生作用
除非已執行【 Flush Privileges; 】指令, MyS QL 才會重新讀取權限資料並置於記憶體
11-1-2 權限工作原理
( 續 ) MySQL 將所有授權資訊儲存在 ” mysql” 資料 庫內的資料表
其中 tables_priv 和 columns_priv 兩個資料表用來 存放資料處理權限資料,這些資料表用於階段二之 查核
User, Db 及 Host 三個資料表用來存放連線權限資 料,這些資料表用於階段一和二之查核
- CH11
主從式資料庫系統 9
11-1-2 權限工作原理
( 續 ) 權限資料表用法
登錄在” user” 資料表之使用者,在指定的” host
” 登入時,這個使用者將可以處理位於伺服器上的 資料庫(若所有權限都設為’ Y’ ),此權限形同
” Supervisor” 權限
登錄在 ” Db” 資料表之使用者,在指定的” host
” 登入時,這個使用者將可以處理指定的資料庫,
包含此資料庫內的全部資料表
11-1-2 權限工作原理 ( 續 )
若需要從不同的主機連線來處理指定的資料庫時,
可以使用” host” 資料表設定主機與資料庫。假如 以這個方式工作,請將” Db” 資料表之” host” 欄 位保留空白
“tables_priv” 與” columns_pri” 權限設定意義與”
Db” 類似,不過它們可以指定更詳細的權限。假如 使用者有權處理特定資料表,此意味他也有權處理 該資料表之全部欄位
- CH11
主從式資料庫系統 11
11-1-3 權限類型
權限使用時機
Select, Insert, Update 和 Delete 可用於處理指 定資料庫內現存資料表的紀錄操作
Create 使用於建立新的資料庫或資料表, Dro p 則用於刪除現存的資料庫或資料表
Index 使用於建立和刪除索引表,擁有 Create 資料表權限的人,同時擁有 Index 權限
11-1-3 權限類型
( 續 ) 權限使用時機
Alter 使用於改變資料表結構或重新命名
Grant 可用於將自己擁有的權限授與他人
File 用於以” Load Data Infile” 和” Sele ct” 指令在伺服器上讀寫檔案
- CH11
主從式資料庫系統 13
11-1-3 權限類型
( 續 )Reload 權限又分成: flush-hosts, flush-logs, flus h-privileges, flush-status, flush-tables, flush-threa ds, refresh, reload
reload 用於通知伺服器重新載入權限資料表到記憶 體
flush-privileges 與 reload 類似
refresh 用來關閉和重開日誌檔,以及沖回所有資料 表
Fulsh-XXX 功能與 refresh 類似,可以附帶案例
11-1-3 權限類型
( 續 ) shutdown 用於關閉伺服器,無對應的 SQL 指 令可用
processlist 用於顯示目前正在伺服器上工作的 執行緒,使用者隨時都可以顯示自己啟動的執 行緒並刪除它,但是只有擁有 Process 權限的 人才能查看由他人啟動的執行緒,而擁有 Supe r 權限的人才能使用 Kill 來刪除由他人啟動的執 行緒
Create Temporary Table 權限使用於以關鍵字
- CH11
主從式資料庫系統 15
11-1-3 權限類型
( 續 ) Lock Tables 用來鎖住資料表,擁有 Select 權限 的人,才能執行 Locak Tables 。資料表被鎖定 後,其他人無法讀取資料表
Replication Client 用於執行” Show Master Stat us” 和” Show Slave Status” 指令
Replication Slave 用於授權給備用伺服器之使用 者,而這些人必須已連線至主伺服器,若未經授 權,備用伺服器將無法要求更新主伺服器之資料
11-1-3 權限類型
( 續 ) Show Databases 用於檢視指名的資料庫之全 部資訊
若無此權限,執行此指令只能看到那些有被授權 之資料表相關資訊
假如啟動伺服器時,若有搭配 ” --skip-show-dat abase” 參數,縱使有此授權,也無法檢視資料庫 相關資訊
- CH11
主從式資料庫系統 17
1. 完整授權
1.1 授權給使用者” monty” ,以驗證密碼” Happy” 從 loca l host 登入,並享有 Grant 權限(形同 monty 具有 supervi sor 之權限)
指令: GRANT ALL PRIVILEGES ON *.* TO 'monty'@'loc alhost'IDENTIFIED BY ' Happy ' WITH GRANT OPTION;
1.2 避免匿名者權限會蓋掉 monty 在 Local host 之權限,應 增加一組權限,如下:
指令: GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'I DENTIFIED BY ' Happy ' WITH GRANT OPTION;
1. 完整授權
( 續 )1.3 授權給使用者: admin , 無驗證密碼,可從 local h ost 登入,享有 Reload 和 Process 管理者之權限,可 使用 mysqladmin 主控端指令來執行 reload, refresh, 和 flush-XXX 工作,但是他無權處理任何資料
指令:
GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
- CH11
主從式資料庫系統 19
1. 完整授權 ( 續 )
1.4 替使用者 ” dummy” 預設一個從 Local host 登入之帳 戶,但不給他任何權限(使用 Usage 參數之效果),權 限則可留待以後再以部份授權方式加入
指令:
GRANT USAGE ON *.* TO 'dummy'@'localhost';
2. 部份授權
2.1 設立帳戶並授與部分權限範例(例如只允許處理 bankac count 資料庫)
指令: GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON bankaccount.* TO 'custom'@'localhost' IDENTIFIED BY 'obscure';
2.2 使用 Insert 設立帳戶並授與部分權限範例,反之可使用 Delete 撤除授權
範例一: INSERT INTO user (Host,User,Password)VALUES('local host','custom',PASSWORD('obscure'));
- CH11
主從式資料庫系統 21
2. 部份授權
( 續 )範例二: INSERT INTO user (Host,User,Password) VALUES('whitehouse.gov','custom',PASSWORD ('obscure'));
範例三: INSERT INTO db (Host,Db,User,Select_p riv,Insert_priv,Update_priv,Delete_priv,Create_pri v,Drop_priv)VALUES('localhost','bankaccount','cu stom', 'Y','Y','Y','Y','Y','Y');
2. 部份授權 ( 續 )
範例四: INSERT INTO db (Host,Db,User,Select_p riv,Insert_priv,Update_priv,Delete_priv,Create_pri v,Drop_priv)VALUES('whitehouse.gov','expense s','custom', 'Y','Y','Y','Y','Y','Y');
啟用權限指令: FLUSH PRIVILEGES;
- CH11
主從式資料庫系統 23
3. 撤除權限
3.1 撤除帳號
指令一: Drop User ‘ 帳號 1’, ‘ 帳號 2’ …;
指令二: REVOKE priv_type [(column_list)] [, pri v_type [(column_list)]] ... ON {tbl_name | * | *.*
| db_name.*} FROM 帳號 1 [, 帳號 2] ...
指令三: REVOKE ALL PRIVILEGES, GRANT OPTION FROM user [, user] ...
指令四: DELETE FROM mysql.userWHERE U ser=’' 帳號’ and Host='host_name';
11-1-5 密碼設定與變更
1. 事前設立暗碼型密碼
將 Grant….IDENTIFIED BY '’ 密碼’ ; 改為下 列型式即可
Grant….IDENTIFIED BY Password('’ 密碼’ );
使用 Insert 指令設立帳戶時,仍須使用 Passw ord('’ 密碼’ ) 指令型式,將密碼轉成暗碼
- CH11
主從式資料庫系統 25
11-1-5 密碼設定與變更
( 續 )2. 事後設立暗碼型密碼
Set Password For ‘Jeffrey@%’ = Password(‘
密碼’ );
說明:替使用者” Jeffrey” 設立或變更密碼
(只限 root 使用者)
Set Password = Password(‘ 密碼’ );
說明:替使用者” Jeffrey” 設立或變更密碼
(只限 Jeffrey 本人)
11-1-5 密碼設定與變更
( 續 )3. 變更密碼
指令:
UPDATE user SET Password = PASSWORD (' 密碼 ')WHERE Host = '%' AND User = 'Jeffre y';
- CH11
主從式資料庫系統 27
11-1-6 啟用權限
MySQL 啟用全部或部份權限方式
起動 mysqld 時,所有權限資料表將被載入記憶體
,所有權限將自動生效
當伺服器重新載入權限資料表時,下列連線中主控 端之權限將受到影響:
主控端在下一次執行資料表或欄位資料時,資料表或 欄位權限才生效
主控端在下一次執行 Use Database 時,資料庫權限 才生效
主控端在下一次連線時,完整權限和新的密碼才生效
11-1-6 啟用權限
( 續 ) 執行 Grant, Revoke, 或 Set Password 指令後
,伺服器將立即重新載入相關的權限資料表
執行 Insert, Update, 或 Delete 指令,必須搭配
” Flush Privileges;” 指令,通知伺服器重新載 入相關的權限資料表,新的權限才生效
- CH11
主從式資料庫系統 29
11-1-7 伺服器連線
主控端與伺服端之連線指令
mysql –h Host – u User –pPassword
其中 ” -h” 代表指定連線主機參數
Host 代表主機名稱,可用數字碼,或是網域名稱
”-u” 代表使用者帳號參數
User 為使用者帳號
”-p” 表示密碼參數
Password 為使用者自己設定之密碼,” -p” 和密碼間不 能有空格
若主控端與伺服端位於同一台電腦,則 – h Host 部分 可以省略
11-1-8 主機及其他設定值
user 資料表上之 host 欄位,其輸入資料可使 用下列型式
使用主機名稱、 IP 代碼,或是 localhost
使用主機名稱型式時,可搭配” %” 萬用字元,
例如單一字元” %” 表示所有主機,” %.mysq l.com” 表示符合” mysql.com” 網域的所有主 機
使用 IP 型式時,也可以搭配” %” 萬用字元,
- CH11
主從式資料庫系統 31
11-1-8 主機及其他設定值
( 續 ) 使用 IP 型式時,可搭配遮罩格式
例如 ” 192.58.197.0 /255.255.255.0” ,此意味從主 機” 192.58.197.0” 到” 192.58.197.255” ,都被視 為合法主機
db 資料表之 host 欄位若為空白時,將以 host 資料表 中對應之 host 與 db 紀錄作為權限依據。若 db 欄位 保留空白,將被視為” %” 型式
11-1-8 主機及其他設定值
( 續 ) 其他權限資料表之 host 欄若保留空白,將被視 為” %” 型式
user 權限資料表之 user 欄若保留空白,將被視 為匿名帳號
tables_priv 和 columns_priv 之 db, table_nam e, column_name 三個欄位不得使用” %” 字元
,也不能保留空白
- CH11
主從式資料庫系統 33
11-1-9 權限驗證
階段一之權限驗證過程如下
讀取 user 資料表紀錄
依據 host 及 user 將紀錄排序
比對主機,若有相符之主機資料,取出帳號及 密碼與登入資料比對,資料皆符合時,即通過 驗證
11-2 伺服器系統環境管理
11-2-1 系統環境參數設定
系統參數值設定方式分成下列三種型式,型式一 用於命令列,型式二用於參數檔,型式三用於應 用程式。
型式一: -- 參數名稱 = 參數值,或 -- 參數名稱 型式二: 參數名稱 = 參數值,或 參數名稱
型式三: SET GLOBAL 參數名稱 = 參數值;
- CH11
主從式資料庫系統 35
11-2-1 系統環境參數設定
下列參數格式具有相同效果
關閉效果
--disable-column-names
--skip-column-names
--column-names=0
開啟效果
--column-names
--enable-column-names
--column-names=1
11-2-2 系統環境參數型式
各種常用系統環境參數請參見書本說明
- CH11
主從式資料庫系統 37
11-3 日誌檔管理
11-3-1 產生日誌檔 11-3-2 日誌檔內容
11-3-1 產生日誌檔
啟動 mysqld 伺服器時,可搭配系統環境參數 將執行過程之信息記錄在日誌檔
日誌檔可用下列指令強制關閉及重新開起新檔
SQL 指令: Flush Logs;
命令列指令: mysqladmin flush-logs, 或 mysq ladmin refresh
- CH11
主從式資料庫系統 39
日誌檔類型
檔案類型 預設檔名 儲存內容
錯誤日誌 主機名 .err 記錄伺服器啟動、運作及停止時遭遇的問題 isam 日誌 自定檔名 用於 ISAM 和 MyISAM 資料表除錯階段之所有
改變資料
查詢日誌 主機名 .log 記錄主控端連線及執行 SQL 之相關信息,可用 於追蹤問題發生原因
異動資料 主機名 -bin.log 記錄所有會改變資料之 SQL 指令,這些信息也 可用於備用伺服器之資料更新
慢速查詢 主機名 -slow.log 記錄所有查詢耗費時間大於 lon_query_time 之 指令,或是未使用索引表之指令
11-3-2 日誌檔內容
1. 錯誤日誌檔
錯誤日誌檔內容包含伺服器啟動與停止時間,以及運作期間 發生的錯誤資料
2. 查詢日誌檔
查詢日誌檔用於記錄主控端連線及執行 SQL 之相關信息,
可用於追蹤問題發生原因
3. 異動資料日誌檔
異動資料日誌檔記錄所有會改變資料之 SQL 指令,同時記 錄更新資料耗費的時間
4. 慢速查詢日誌檔
- CH11
主從式資料庫系統 41
異動資料日誌檔
異動資料日誌檔之主要用途,在於資料更新後若需復 原資料,可直接從日誌檔取得復原資料之相關訊息,
這些信息也可用於備用伺服器之資料更新
毎次啟動伺服器或執行 Flush Logs 時,系統即自動產 生一個新的日誌檔,檔名均相同,但是延伸名會以流 水號遞增
假如日誌檔太大時(大於預設值 max_binlog_size )
,系統即自動產生新的日誌檔
異動資料日誌檔
( 續 ) 執行大型交易型資料的話,日誌資料則不會被分割在 兩個日誌檔
異動資料日誌檔可搭配” --log-bin-index” 參數,系統 將自動產生一個索引檔,用來記錄相關日誌檔之關係。
當伺服器在運作時,不要去編輯索引檔,以免伺服器 造成混淆
- CH11
主從式資料庫系統 43
異動資料日誌檔
( 續 ) 可使用【 Reset Master 】指令來刪除所有異 動資料日誌檔,或使用【 PURGE MASTER L OGS 】來刪除部份異動資料日誌檔
指令:
PURGE MASTER LOGS TO 'mysql-bin.010';
PURGE MASTER LOGS BEFORE '2003-04-02 22:46:26';
異動資料日誌檔
( 續 ) 刪除部份異動資料日誌檔程序
SHOW SLAVE STATUS 指令查看那個日誌檔正被 讀取中
SHOW MASTER LOGS 指令查看主伺服器有那些 日誌檔
選出最近的日誌檔,該檔將是系統還要使用的目標 檔
備份將要刪除的日誌檔
- CH11
主從式資料庫系統 45
異動資料日誌檔
( 續 ) 刪除日誌檔時,請先確認無備份伺服器還要使 用這些日誌檔
理想的刪除規則為,每天執行一次【 mysqlad min flush-logs 】,然後將三天以上的日誌檔 以【 Purge Master Logs 】指令刪除
Purge 指令可同時整理索引檔。
異動資料日誌檔
( 續 ) 記錄資料更新指令時,可針對特定資料庫做選 別,選別參數有兩種型式
--binlog-do-db = DB_Name :若更新指令之處理 對象資料庫非現用資料庫時,該指令不被記錄 --binlog-ignore-db = DB_Name :若更新指令之 處理對象資料庫非現用資料庫時,該指令將被 記錄
- CH11
主從式資料庫系統 47
異動資料日誌檔
( 續 ) 使用下述指令檢視日誌檔內容:。
近端伺服器: mysqlbinlog 日誌檔名
遠端伺服器: mysqlbinlog 日誌檔名 – R -h 伺服器所在主機名稱
或使用下述指令更新特定的伺服器:
mysqlbinlog 日誌檔名 | mysql -h 伺服器名
11-4 mysqladmin 伺服器管理命令
11-4-1 用途與語法
mysqladmin 是一個主控端應用程式,用來執 行伺服器之管理作業,諸如伺服器之環境設定 和提示現狀信息,增刪資料庫,以及其他作業
- CH11
主從式資料庫系統 49
11-4-1 用途與語法
mysqladmin 語法:
c:\mysql\bin> mysqladmin [options] command [c ommand-option] command ...
其中
[options] 為選項參數
command 為操作資料庫指令
[command-option] 為指令選項參數
指令型式及參數選項請參看書本說明
11-5 災難預防與復原
備份資料庫可預防因突發事故造成資料無法復 原之損失
適時的維護資料表,則有助於提升系統效率
- CH11
主從式資料庫系統 51
11-5 災難預防與復原
( 續 )11-5-1 資料庫備份
備份資料庫之方式,可分成完整、漸增或局部 資料表三種情形
完整備份時,必須確認資料庫已無任何執行緒 使用它
資料表備份時,須確認所有異動資料含索引已 被完整寫回磁碟
1. 前置處理
為了使備份資料能維持一致性,備份前應先執 行下列指令,將相關資料表之索引資料寫回磁 碟
Lock Tables 資料表 1 Read, 資料表 2 Read …;
Flush Tables With Read Lock;
Unlock Tables;
- CH11
主從式資料庫系統 53
1. 前置處理
( 續 ) 下列指令可用來檢視 MyISAM 資料表之狀態 信息
myisamchk –d 資料表名:提示資料表一般資訊 myisamchk –d -v 資料表名:提示資料表一般資
訊及檔案配置資訊
myisamchk –eis 資料表名:提示資料表重要資 訊,須檢視整個資料表,所以較費時。
myisamchk –eiv 資料表名:與 -eis 類似,但索 引結構資訊更詳盡
2. 完整備份
執行完整備份時,請先停止伺服器,然後重新 啟動並搭配 ” log-bin” 參數,重新設定備份 日誌起始點
完整備份指令
以主控端應用程式 mysqldump (在命令列下執 行)執行完整備份工作
備份結果為一專案檔型式
- CH11
主從式資料庫系統 55
3. 完整備份範例
範例 1 : c:\mysql\bin> mysqldump --opt db_na me -r backup-file.sql
說明:將資料庫 db_name 以 mysqldump( 搭配 opt 參數 ) 完整下載,並儲存在專案檔 backup-f ile.sql 。此專案檔可用下列指令,將將資料庫 d b_name 以 mysql 命令列指令,建立在其他主 機上
建檔指令: c:\mysql\bin> mysql db_name < b ackup-file.sql
3. 完整備份範例
( 續 )範例 2 :直接從特定伺服器資料下載至另一伺服 器上
指令: c:\mysql\bin> mysqldump --opt db_na me | mysql --host= 遠端主機 -C db_name
範例 3 :一次將數個資料庫下載至專案檔
指令: c:\mysql\bin> mysqldump --databases 資料庫 1 [ 資料庫 2 ...] -r my_databases.sql
- CH11
主從式資料庫系統 57
3. 完整備份範例
( 續 )範例 4 :一次將所有資料庫下載至專案檔。
指令: c:\mysql\bin> mysqldump --all-databas es -r all_databases.sql
範例 5 :若儲存引擎為 InnoDB 時,改用下列指 令:
指令: c:\mysql\bin> mysqldump --all-databas es --single-transaction -r all_databases.sql
4. 漸增式備份
採用漸增式備份時,伺服器須在— log-bin 模 式下執行,以便取得相關的備份線索資訊(前 次完整備份或漸增備份之完成位置)
執行備份工作前,先執行 Flush Logs 指令,轉 回適當之日誌檔
拷貝所須的日誌檔
前次為完整備份時,拷貝全部
若為漸增式,可能只需一個最近的日誌檔
- CH11
主從式資料庫系統 59
5. 局部備份
局部備份乃針對個別資料表加以備份
使用下列指令來局部備份
指令 1 : BACKUP TABLE tbl_name [, tbl_na me] ... TO ‘/path/to/backup/directory’;
說明:此指令可同時拷貝數個資料表至指定目錄,
指名資料表所屬之 `.frm‘ 及 `.MYD’ 檔案將被複製
, `.MYI‘ 可利用前面兩個檔案來重新索引後取得
指令 2 : SELECT * INTO OUTFILE 'file_na me' FROM tbl_name;
11-5-2 復原資料
1. 重建資料庫
指令: c:\mysql\bin> mysql db_name < backu p-file.sql
說明: backup-file.sql 是以 mysqldump 命令產 生之專案檔
- CH11
主從式資料庫系統 61
11-5-2 復原資料
( 續 )2. 復原資料表
指令 1 : RESTORE TABLE tbl_name [, tbl_n ame] ... FROM ‘/path/to/backup/directory’;
說明:將以 Backup 指令備份的資料表復原,只能 用於資料表不存在的情況,若資料表已存在時,將 產生錯誤
指令 2 : LOAD DATA INFILE FILE_name RE PLACE…;
說明:將以 SELECT INTO 指令備份的資料,重新 載入對應的資料表。若資料表有 Primary 或 Uniqu e 型索引表,舊鍵值紀錄將被新紀錄取代
11-5-2 復原資料
( 續 ) 復原資料時,請先以 Repair Table 資料表或 mysqlaheck –r 資料表指令檢查資料表, 99.9
﹪ 的 MyISAM 資料表問題都可以克服
無法解決問題時,請改用下列方式處理:
重新載入前次以 mysqldump 下載之備份資料。
執行下列指令來更新資料
c:\mysql\bin>mysqlbinlog 對應日誌檔名 | mysql
- CH11
主從式資料庫系統 63
11-5-3 資料表維護與損壞復原
1. 分析資料表指令 (ANALYZE TABLE )
語法: ANALYZE [LOCAL | NO_WRITE_TO_
BINLOG] TABLE tbl_name [, tbl_name] ...
說明:可用於分析資料表及重建索引表,事前 須先以讀取鎖定方式鎖表。適用於所有型態資 料表
2. 檢查資料表
指令 (CHECK TABLE)
語法: CHECK TABLE tbl_name [, tbl_name]
... [option] ...
說明:可用於檢查資料表及或提示錯誤資訊,
適用於所有 MyISAM 和 InnoDB 型態資料表
其中 option 有下列選項
{QUICK | FAST | MEDIUM | EXTENDED | CHAN GED}
- CH11
主從式資料庫系統 65
檢查資料表選項參數
型式 代表意義
QUICK 不做資料列掃描以檢查不正確之連結
FAST 只檢查未正常關閉的資料表
CHANGED 只檢查資料有變更或未正常關閉的資料表
MEDIUM 資料列掃描以維持正確之連結,同時檢查紀錄與索引之 checksum
EXTENDED 完整檢查,需耗費很長的時間
3. 整理資料表
指令 (OPTIMIZE TABLE)
語法: OPTIMIZE [LOCAL | NO_WRITE_TO_
BINLOG] TABLE tbl_name [, tbl_name] ...
說明:紀錄為不定長度的資料表,有大量資料 被刪除時,可用此道指令將紀錄重新連結(刪 除空洞)。前述資料表若經常要做更新處理時
,可於每週或每月處理一次 OPTIMIZE
- CH11
主從式資料庫系統 67
3. 整理資料表
( 續 ) OPTIMIZE TABLE 將依下述過成程來處理資料 表
檢查是否有刪除位置或紀錄被分段儲存,有則 修復它
檢查索引是否未排序,若未排序則重新排序
檢查統計資料是否正確,不正確則更正之
4. 修復資料表
指令 (REPAIR TABLE)
語法: REPAIR [LOCAL | NO_WRITE_TO_BINL OG] TABLE tbl_name [, tbl_name] ... [QUICK] [E XTENDED] [USE_FRM]
說明:此道指令只適用於 MyISAM 資料表,可用 於修復損壞的資料表。其中各選項參數意義簡述如 下
QUICK :只修復索引樹
EXTENDED :以逐列方式重建索引
- CH11
主從式資料庫系統 69
5. mysqlcheck
前述 1~4 指令也可改用 mysqlchk 主控端命令 來處理,此命令只用來處理 MyISAM 資料表,
執行命令時,伺服器不需要停止
指令型式
c:\mysql\bin> mysqlcheck [options] db_name [tables]
c:\mysql\bin> mysqlcheck [options] --database s DB1 [DB2 DB3...]
c:\mysql\bin> mysqlcheck [options] --all-datab ases
11-6 設定維護排程計劃
維護排程建議
對於重要資料表,應定期以 Check, Repair, Optimi ze 指令檢查
搭配 – myisam-recover 參數來起動伺服器,在 資料處理人員正式處理資料表前,即完成資料表檢 查和修復工作
定期執行維修計畫,例如每天一次(每天均需更新 處理的資料表),或每週一次(較不重要的資料 表)
- CH11
主從式資料庫系統 71
11-7 Administrator 應用簡介
Administrator 是一個 MySQL 伺服器之管理程 式
可在檔案總管視窗內點取 MySQLAdministrato r 後,開啟畫面如圖 11-1 所示
輸入帳號密碼後,即可聯上 MySQL 伺服器,
接著出現圖 11-2 畫面
11-7 Administrator 應用簡介
( 續 )
- CH11
主從式資料庫系統 73
11-7 Administrator 應用簡介
( 續 )
Administrator 之主要功能分成 File 、 Edit 、 V iew 、 Tools 及 Help ,各主功能項下尚有子選 項
圖 11-3 為各子項功能之綜合圖示,系統預設 主畫面為 View 之選項作業畫面
子項功能之綜合圖示
- CH11
主從式資料庫系統 75
Administrator 功能介紹
File
New Instance Connection :建立新的連線範例
Reconnect :重新連線
Copy Active Page as Text :複製現用的案例
Close :關檔及結束
Administrator 功能介紹
Edit :標準的剪貼簿功能
View
Server Information :列示伺服器連線資訊
Service Control :啟動服務控制
Startup Variables :設定啟動作業系統變數,包括:
General Parameters :一般用途,包括允許以 TCP/IP 連線、 TCP Port 、預設資料庫路徑、預設索引鍵及排 序緩衝區,以及預設儲存引擎
MyISAM : MyISAM 資料表,包括新增、鎖表及全文
- CH11
主從式資料庫系統 77
Administrator 功能介紹
– Startup Variables :
InnoDB : InnoDB 資料表,包括緩衝資料區容量、記 憶體緩衝區容量、資料表路徑及檔名、日誌檔路徑及 檔名、日誌檔容量、執行緒同步連線數
Performace :快取空間調整
Log Files :日誌檔工作條件及屬性設定
Replication :備用伺服器工作條件及屬性設定
Networking :網路連線參數設定
Security :安全條件設定
Advanced :進階變數如字元集、快取管理等
Administrator 功能介紹
View
User Administration :用戶管理
Server Connections :執行緒及用戶連線管理
Health :提示系統運作狀態健檢資訊、系統狀態變數及 系統變數
Server Logs :伺服器日誌檔管理
Replication Status :備用伺服器狀態資訊
Backup :備援專案管理及備援工作排程
Restore :復原工作管理(須搭配備援專案檔)
- CH11
主從式資料庫系統 79
Administrator 功能介紹
Tools :參數設定工具
MySQL Command Line Client : MySQL 主控端應用視窗
MySQL System Tray Monitor :系統監控視窗
Windows Command Line :主控端應用視窗 (Windows 介面 )
Options :選項參數設定,包括:
Administrator :管理者權限
General Options :諸如字體大小、視窗狀態等
Connections :連線資訊
Editors :資料表與索引表預設值
Manage Connections :與 Options 同
Save Current Connection :將設定參數設為現用狀態資訊或 予以拋棄