MySQL管理介紹
在運(yùn)行數(shù)據(jù)庫系統(tǒng)時(shí), MySQL的使用相當(dāng)簡(jiǎn)單,且進(jìn)行MySQL安裝和使用所需的工作也很少。MySQL的簡(jiǎn)單性可能就是它極為普及的原因,尤其是在非程序員人群中的普及。當(dāng)然,它對(duì)于訓(xùn)練有素的計(jì)算機(jī)專業(yè)人員也是有幫助的,但肯定不是對(duì)運(yùn)行一個(gè)成功的MySQL安裝程序的需求。
然而,不論您是什么級(jí)別的專家, MySQL的安裝程序都不能自動(dòng)運(yùn)行。必須有人來監(jiān)視它以確保它能順利和有效地運(yùn)行,有時(shí)還必須知道當(dāng)問題出現(xiàn)時(shí)應(yīng)該做什么。如果問題偶然地落到了您的頭上,要想確保MySQL的正常,應(yīng)繼續(xù)閱讀本書。
在本書的第三部分中,我們將討論關(guān)于MySQL管理的各個(gè)方面。本章給出了您應(yīng)當(dāng)了解的,并包含在管理MySQL安裝程序中的有關(guān)職責(zé)內(nèi)容的概述,還提供了對(duì)這些職責(zé)的簡(jiǎn)單描述,并在后面的幾章中給出執(zhí)行它們的指導(dǎo)。
如果您是一位新手或毫無經(jīng)驗(yàn)的MySQL管理員,可千萬別讓本章出現(xiàn)的冗長(zhǎng)的職責(zé)清單嚇著。下面小節(jié)中所列出的每個(gè)任務(wù)都是重要的,但是,您不需要馬上學(xué)習(xí)它們。如果您希望這樣做的話,可將本章節(jié)的內(nèi)容作為參考來使用,當(dāng)感覺需要知道其內(nèi)容時(shí)可查找這些
主題。
如果您有管理其他數(shù)據(jù)庫系統(tǒng)的經(jīng)驗(yàn),將會(huì)發(fā)現(xiàn):運(yùn)行MySQL的安裝程序在某些方面是類似的,您的經(jīng)驗(yàn)也是用得著的。但是MySQL的管理有自己獨(dú)特的需求,本書的這個(gè)部分將幫助您熟悉這些內(nèi)容。
管理職責(zé)概述
MySQL數(shù)據(jù)庫系統(tǒng)由幾部分組成。您應(yīng)該熟悉這些組成部分的內(nèi)容和每個(gè)部分的目的。這需要您了解所管理系統(tǒng)的特征以及幫助您進(jìn)行管理的可用工具。如果您花時(shí)間去了解了要監(jiān)督的內(nèi)容,工作將會(huì)變得非常容易。為此,您應(yīng)當(dāng)使自己熟悉MySQL的以下幾個(gè)方面:
MySQL服務(wù)器。服務(wù)器mysql執(zhí)行數(shù)據(jù)庫和表的所有操作。safe_mysqld 是一個(gè)相關(guān)的程序,它用于啟動(dòng)服務(wù)器、監(jiān)控服務(wù)器和重新啟動(dòng)服務(wù)器。
MySQL客戶機(jī)和實(shí)用程序。有幾個(gè)MySQL程序,可用來幫助您與服務(wù)器進(jìn)行通信和執(zhí)行管理的任務(wù)。其中最重要的幾個(gè)是:
mysql,一個(gè)交互式程序,允許將SQL 語句發(fā)布到服務(wù)器上并瀏覽其結(jié)果。
mysqla d m i n,一個(gè)管理程序,允許執(zhí)行諸如關(guān)閉服務(wù)器以及創(chuàng)建或刪除數(shù)據(jù)庫的工作。如果服務(wù)器運(yùn)行不正常,還可以用mysqladmin 來檢查服務(wù)器的狀態(tài)。
isamchk 和my i s a m c h k,這些實(shí)用程序幫助您完成表的分析和優(yōu)化,以及在表損壞時(shí)進(jìn)行崩潰恢復(fù)。
mysqld um p,一個(gè)工具,用于備份數(shù)據(jù)庫或?qū)?shù)據(jù)庫拷貝到另一個(gè)服務(wù)器中。
服務(wù)器的語言,SQL。有些管理職責(zé)只能用mysqladmin 的命令行實(shí)用程序來完成,但是,如果您還能用服務(wù)器自己的語言來同服務(wù)器進(jìn)行對(duì)話,那就更好了。作為簡(jiǎn)單的例子,您可能需要查找用戶特權(quán)不按您所希望的方式進(jìn)行工作的原因。沒有任何替代品能夠參與并與服務(wù)器直接通信。可通過使用mysql客戶機(jī)程序發(fā)布能夠檢驗(yàn)授權(quán)表的SQL 查詢來做到這一點(diǎn)。如果您的MySQL版本還未引入GRANT 語句,則需要使用mysql首先設(shè)置每個(gè)用戶的權(quán)限。
如果您不知道SQL 的任何內(nèi)容,至少必須對(duì)SQL要有基本的了解。缺乏對(duì)SQL 的熟悉只會(huì)給您帶來困惑,而在學(xué)習(xí)SQL 上所花費(fèi)的時(shí)間將會(huì)得到成倍的回報(bào)。真正掌握SQL 要花費(fèi)一些時(shí)間,但掌握基本技能則很快。如果您需要了解對(duì)SQL 和mysql命令行客戶機(jī)的介紹內(nèi)容,請(qǐng)參閱第1章的“MySQL和SQL 介紹”
MySQL數(shù)據(jù)目錄。數(shù)據(jù)目錄是服務(wù)器存儲(chǔ)其數(shù)據(jù)庫和狀態(tài)文件的所在。了解數(shù)據(jù)目錄的結(jié)構(gòu)及內(nèi)容是很重要的,您可以知道服務(wù)器是怎樣使用文件系統(tǒng)來表現(xiàn)數(shù)據(jù)庫和表的,以及像日志這樣的文件的存放位置和其內(nèi)容。還應(yīng)該了解在文件系統(tǒng)中管理磁盤空間分配的選項(xiàng),當(dāng)發(fā)現(xiàn)放置數(shù)據(jù)目錄的文件系統(tǒng)過滿時(shí)可以進(jìn)行調(diào)整。
常規(guī)管理
常規(guī)管理主要指處理mysqld、MySQL服務(wù)器和提供給用戶的訪問服務(wù)器的操作。在履行該職責(zé)時(shí),下列的任務(wù)是最重要的:
服務(wù)器的啟動(dòng)和關(guān)閉。您應(yīng)該能夠從命令行中手工啟動(dòng)和終止服務(wù)器,并且在系統(tǒng)啟動(dòng)和關(guān)閉時(shí)知道怎樣進(jìn)行自動(dòng)啟動(dòng)和關(guān)閉。如果服務(wù)器崩潰了或啟動(dòng)不正常的話,了解怎樣使服務(wù)器再次運(yùn)行也是重要的。
用戶賬號(hào)維護(hù)。應(yīng)該了解MySQL用戶和UNIX 或Windows 用戶之間的區(qū)別。應(yīng)該知道怎樣通過指定哪些用戶可以連接到服務(wù)器和從哪里進(jìn)行連接來建立MySQL用戶賬號(hào)。還應(yīng)該給新的用戶建議合適的連接參數(shù),以使他們成功地連接到服務(wù)器。弄清應(yīng)怎樣建立賬號(hào)不是用戶們的工作。
日志文件維護(hù)。應(yīng)該了解可以維護(hù)的日志文件的類型,以及在何時(shí)和怎樣完成日志文件的維護(hù)。日志的循環(huán)和終止對(duì)于防止日志填滿文件系統(tǒng)是必要的。
數(shù)據(jù)庫備份和拷貝。數(shù)據(jù)庫備份對(duì)服務(wù)器系統(tǒng)的崩潰是至關(guān)重要的。應(yīng)該能夠?qū)?shù)據(jù)庫恢復(fù)到崩潰時(shí)的狀態(tài),以便盡可能地減少數(shù)據(jù)的丟失。請(qǐng)注意,數(shù)據(jù)庫備份與常規(guī)的系統(tǒng)備份不同,例如,可通過使用UNIX 的dump 程序來進(jìn)行。與數(shù)據(jù)庫表相對(duì)應(yīng)的文件在系統(tǒng)備份發(fā)生時(shí)隨服務(wù)器活動(dòng)而變化,因此恢復(fù)那些文件將使您的表內(nèi)部不一致。mysqldump 程序?qū)a(chǎn)生對(duì)恢復(fù)數(shù)據(jù)庫更有用的備份文件,并允許在不關(guān)閉服務(wù)器的狀態(tài)下創(chuàng)建備份。
如果決定在更快的主機(jī)上運(yùn)行數(shù)據(jù)庫,或者想復(fù)制數(shù)據(jù)庫,則需要拷貝其內(nèi)容到另一臺(tái)機(jī)器上。如果需要的話,應(yīng)該了解進(jìn)行這項(xiàng)操作的過程。數(shù)據(jù)庫文件是依賴于系統(tǒng)的,因此您不能只拷貝這些文件。
服務(wù)器優(yōu)化。用戶想要服務(wù)器以最佳狀態(tài)運(yùn)行。提高服務(wù)器運(yùn)行性能的最簡(jiǎn)單方法是購買更多的內(nèi)存或使磁盤速度更快。但是,這種直截了當(dāng)?shù)募夹g(shù)并不能代替對(duì)服務(wù)器工作的了解。應(yīng)該了解優(yōu)化服務(wù)器操作所用的參數(shù)以及如何將這些參數(shù)應(yīng)用在您的環(huán)境中。在某些站點(diǎn)中,大多數(shù)查詢都是檢索。而在另一些站點(diǎn),插入和更新操作占據(jù)著優(yōu)勢(shì)。選擇對(duì)哪些參數(shù)進(jìn)行修改將受到站點(diǎn)查詢的影響。
多服務(wù)器。在某些環(huán)境中運(yùn)行多服務(wù)器是有用的。如果保留當(dāng)前的成品安裝程序在適當(dāng)?shù)奈恢茫蛘邽椴煌挠脩艚M提供較好的保密性(后者與ISP 尤其相關(guān)),則可以測(cè)試新的MySQL版本。對(duì)于這些情形,您應(yīng)該了解怎樣建立多個(gè)同時(shí)發(fā)生的安裝。
MySQL更新。由于新的MySQL版本頻繁出現(xiàn),應(yīng)該知道怎樣始終跟上這些版本以便利用故障修復(fù)和新的特性。需要了解不進(jìn)行版本升級(jí)的理由,并且掌握怎樣在穩(wěn)定版本和開發(fā)者版本之間進(jìn)行選擇。
安全性
當(dāng)運(yùn)行MySQL安裝程序時(shí),確保用戶所存儲(chǔ)的數(shù)據(jù)的安全性是很重要的。MySQL管理員有責(zé)任控制對(duì)數(shù)據(jù)目錄和服務(wù)器的訪問,并應(yīng)了解以下的問題:
文件系統(tǒng)的安全性。UNIX 機(jī)器可能會(huì)使幾個(gè)用戶賬號(hào)成為宿主賬號(hào),而這些賬號(hào)都沒有與MySQL相關(guān)的管理職責(zé)。確保這些賬號(hào)沒有對(duì)數(shù)據(jù)目錄的訪問是重要的。因?yàn)檫@樣可以防止它們通過拷貝數(shù)據(jù)庫表或移動(dòng)數(shù)據(jù)庫表,或者通過能夠讀取包含敏感信息的日志文件來損壞文件系統(tǒng)級(jí)的數(shù)據(jù)。您應(yīng)該知道如何建立MySQL服務(wù)器的UNIX用戶賬號(hào),如何建立該用戶所擁有的數(shù)據(jù)目錄,以及如何啟動(dòng)服務(wù)器以便利用該用戶的權(quán)限運(yùn)行。
服務(wù)器的安全性。必須了解MySQL的安全系統(tǒng)是怎樣進(jìn)行工作的,以便在建立用戶賬號(hào)時(shí)授予適當(dāng)?shù)臋?quán)限。通過網(wǎng)絡(luò)連接到服務(wù)器的用戶只允許做他們應(yīng)該做的事情。您不要由于對(duì)安全系統(tǒng)的錯(cuò)誤理解,將超級(jí)用戶的訪問權(quán)授予匿名用戶。
數(shù)據(jù)庫修復(fù)和維護(hù)
所有的MySQL管理員都希望避免處理破壞的或毀壞的數(shù)據(jù)庫表。但是愿望不能代替現(xiàn)實(shí)。以下幾個(gè)步驟可以使您在問題發(fā)生時(shí)減少風(fēng)險(xiǎn)并學(xué)會(huì)怎樣處理問題:
崩潰恢復(fù)。如果盡管您做了最好的努力但災(zāi)難還是降臨了,則應(yīng)該知道如何修復(fù)或恢復(fù)表。很少會(huì)用到崩潰恢復(fù),但當(dāng)使用它時(shí),它是一個(gè)令人討厭的、高強(qiáng)度的工作(尤其是當(dāng)您正在忙亂地修正某些內(nèi)容時(shí),電話鈴響了或有人敲門)。然而,您必須知道怎樣處理它,否則用戶將會(huì)很不高興。要熟悉isamchk 和myisamchk 的表的檢查以及修復(fù)能力;要知道如何盡可能地從備份文件中恢復(fù),并且知道怎樣使用該更新日志來恢復(fù)備份之后所產(chǎn)生的修改。
預(yù)防性維護(hù)。預(yù)防性維護(hù)的常規(guī)程序應(yīng)適當(dāng)?shù)剡M(jìn)行安置,以使數(shù)據(jù)庫破壞和毀壞的可能性最小化。當(dāng)然,您還要進(jìn)行備份,但是,預(yù)防性維護(hù)將減少使用這些備份的機(jī)會(huì)。
以上綜合地概括了作為MySQL管理員應(yīng)承擔(dān)的職責(zé)。第10章將詳細(xì)討論這些職責(zé)并提供操作過程,以便有效地履行這些職責(zé)。我們將首先討論MySQL數(shù)據(jù)目錄,這是您正在管理的資源,因此應(yīng)該了解其布局和內(nèi)容。然后再討論常規(guī)的管理職責(zé)、MySQL安全系統(tǒng),以及維護(hù)和故障排除。
關(guān)鍵字:MySQL、數(shù)據(jù)庫、服務(wù)器
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解