KJ101N系統(tǒng)MySQL服務(wù)器維護(hù)_第1頁(yè)
KJ101N系統(tǒng)MySQL服務(wù)器維護(hù)_第2頁(yè)
KJ101N系統(tǒng)MySQL服務(wù)器維護(hù)_第3頁(yè)
KJ101N系統(tǒng)MySQL服務(wù)器維護(hù)_第4頁(yè)
KJ101N系統(tǒng)MySQL服務(wù)器維護(hù)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、鎮(zhèn)江中煤電子有限公司KJ101N系統(tǒng)MySQL數(shù)據(jù)庫(kù)的維護(hù)鎮(zhèn)江中煤電子軟件部2010年3月16日KJ101N系統(tǒng)MySQL數(shù)據(jù)庫(kù)的維護(hù)1登錄Mysql的方法3使用mysql程序登錄數(shù)據(jù)庫(kù)(DOS界面)3使用MySQL Control Center程序登錄數(shù)據(jù)庫(kù)(Windows界面)3幾個(gè)實(shí)用的SQL語(yǔ)句6操作符優(yōu)先級(jí)6創(chuàng)建MySQL用戶賬戶并授予權(quán)限7查詢語(yǔ)句select的語(yǔ)法如下9修復(fù)表REPAIR TABLE語(yǔ)法12檢查表CHECK TABLE語(yǔ)法13用于主服務(wù)器的SQL語(yǔ)句15用于從服務(wù)器的SQL語(yǔ)句16實(shí)用工具19mysqlcheck:表維護(hù)和維修程序19mysqldump:數(shù)據(jù)庫(kù)備份

2、程序23mysqlimport:數(shù)據(jù)導(dǎo)入程序24mysqlshow顯示數(shù)據(jù)庫(kù)、表和列信息27myisamlog:顯示MyISAM日志文件內(nèi)容29perror:解釋錯(cuò)誤代碼30Mysqld的常用參數(shù)31前 言由于公司的新的KJ101N煤礦安全監(jiān)控系統(tǒng)使用的數(shù)據(jù)庫(kù)是MySQL數(shù)據(jù)庫(kù),公司的絕大部分現(xiàn)場(chǎng)服務(wù)的工作人員對(duì)MySQL數(shù)據(jù)庫(kù)還比較陌生,感覺(jué)到MySQL數(shù)據(jù)庫(kù)應(yīng)用起來(lái)比Access數(shù)據(jù)庫(kù)麻煩許多,經(jīng)常遇到數(shù)據(jù)庫(kù)的問(wèn)題而束手無(wú)策。為此,有必要寫一個(gè)簡(jiǎn)單實(shí)用的MySQL數(shù)據(jù)庫(kù)維護(hù)方法,以利于新軟件的推廣和使用。登錄Mysql的方法使用mysql程序登錄數(shù)據(jù)庫(kù)(DOS界面)此程序不需要單獨(dú)安裝,它

3、在你安裝好MySQL數(shù)據(jù)庫(kù)時(shí)就已經(jīng)安裝好了,所以,在沒(méi)有MySQL Control Center程序的時(shí)候可以使用這個(gè)程序。此程序一般放在D:KJ101N煤礦安全監(jiān)控軟件mysqlbin目錄,所以,你在使用時(shí)請(qǐng)先切換到D:KJ101N煤礦安全監(jiān)控軟件mysqlbin目錄,方法是在DOS窗口中進(jìn)行如下操作:C:>D:回車D:>CD D:KJ101N煤礦安全監(jiān)控軟件mysqlbin回車D:> D:KJ101N煤礦安全監(jiān)控軟件mysqlbinmysql -h uroot -p回車在提示界面輸入root的密碼。當(dāng)出現(xiàn)Mysql>時(shí),表示登錄成功,這時(shí)你就可以輸

4、入SQL語(yǔ)句了。Mysql>use kj101;切換到KJ101數(shù)據(jù)庫(kù)。使用MySQL Control Center程序登錄數(shù)據(jù)庫(kù)(Windows界面)MySQL Control Center程序一般在安裝完成后都在桌面上產(chǎn)生一個(gè)圖標(biāo),雙擊此圖標(biāo)就可運(yùn)行MySQL Control Center程序。首先要輸入一個(gè)名字,見(jiàn)紅色的name部分(這個(gè)名字你隨便起),然后是host name中要填寫MYSQL服務(wù)器所在的機(jī)器的IP地址或主機(jī)名稱(本例中的MySQL服務(wù)器是在本機(jī)),接著在password中輸入root的密碼(MySQL服務(wù)器root的缺省密碼是123456),最后按下“Add”按

5、鈕。進(jìn)入如下的界面:現(xiàn)在你可以選擇左邊root->database->kj101-tables下面的表,然后,按下工具條中的SQL按鈕,就可以輸入SQL語(yǔ)句進(jìn)行查詢了。例如:幾個(gè)實(shí)用的SQL語(yǔ)句操作符優(yōu)先級(jí)以下列表顯示了操作符優(yōu)先級(jí)的由低到高的順序。排列在同一行的操作符具有相同的優(yōu)先級(jí)。:=(賦值)|(邏輯或), OR(邏輯或), XOR(邏輯異或)&&(邏輯與), AND(邏輯與)NOT(邏輯非)BETWEEN, CASE, WHEN, THEN, ELSE=, <=>, >=, >, <=, <, <>, !=,

6、IS, LIKE, REGEXP, IN (比較操作)|(按位或)&(按位與)<<, >>(向左、右移位)-, +(加,減法)*, /, DIV, %, MOD(乘、除、取模)(冪)- (一元減號(hào)), (一元比特反轉(zhuǎn))!()BINARY, COLLATE創(chuàng)建MySQL用戶賬戶并授予權(quán)限GRANT priv_type (column_list) , priv_type (column_list) . ON object_type tbl_name | * | *.* | db_name.* TO user IDENTIFIED BY PASSWORD 'p

7、assword' , user IDENTIFIED BY PASSWORD 'password' . REQUIRE NONE | SSL| X509 CIPHER 'cipher' AND ISSUER 'issuer' AND SUBJECT 'subject' WITH with_option with_option .object_type = TABLE | FUNCTION | PROCEDUREwith_option = GRANT OPTION | MAX_QUERIES_PER_HOUR count |

8、 MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS countpriv_type可以被指定為以下任何一種:權(quán)限意義ALL PRIVILEGES設(shè)置除GRANT OPTION之外的所有簡(jiǎn)單權(quán)限ALTER允許使用ALTER TABLEALTER ROUTINE更改或取消已存儲(chǔ)的子程序CREATE允許使用CREATE TABLECREATE ROUTINE創(chuàng)建已存儲(chǔ)的子程序CREATE TEMPORARY TABLES允許使用CREATE TEMPORARY TABLECREATE U

9、SER允許使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。CREATE VIEW允許使用CREATE VIEWDELETE允許使用DELETEDROP允許使用DROP TABLEEXECUTE允許用戶運(yùn)行已存儲(chǔ)的子程序FILE允許使用SELECT.INTO OUTFILE和LOAD DATA INFILEINDEX允許使用CREATE INDEX和DROP INDEXINSERT允許使用INSERTLOCK TABLES允許對(duì)您擁有SELECT權(quán)限的表使用LOCK TABLESPROCESS允許使用SHOW FULL PR

10、OCESSLISTREFERENCES未被實(shí)施RELOAD允許使用FLUSHREPLICATION CLIENT允許用戶詢問(wèn)從屬服務(wù)器或主服務(wù)器的地址REPLICATION SLAVE用于復(fù)制型從屬服務(wù)器(從主服務(wù)器中讀取二進(jìn)制日志事件)SELECT允許使用SELECTSHOW DATABASESSHOW DATABASES顯示所有數(shù)據(jù)庫(kù)SHOW VIEW允許使用SHOW CREATE VIEWSHUTDOWN允許使用mysqladmin shutdownSUPER允許使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL語(yǔ)句,mysqladmi

11、n debug命令;允許您連接(一次),即使已達(dá)到max_connections。UPDATE允許使用UPDATEUSAGE“無(wú)權(quán)限”的同義詞GRANT OPTION允許授予權(quán)限建立雙機(jī)熱備帳戶,方法如下:GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO USEROTHER_HOST IDENTIFIED BY USER_PASSWORD;注意:其中的斜體是你要替換的,一下皆是。USER為用戶名(即另一臺(tái)機(jī)器以此名字登錄這臺(tái)MySQL數(shù)據(jù)庫(kù)服務(wù)器)OTHER_HOST為另一臺(tái)機(jī)器的機(jī)器名或IP地址USER_PASSWORD為此用戶的登錄密

12、碼查詢語(yǔ)句select的語(yǔ)法如下SELECT    ALL | DISTINCT | DISTINCTROW       HIGH_PRIORITY      STRAIGHT_JOIN      SQL_SMALL_RESULT SQL_BIG_RESULT SQL_BUFFER_RESULT      SQL_CACHE | SQL_NO_CACHE SQL_CA

13、LC_FOUND_ROWS    select_expr, .    INTO OUTFILE 'file_name' export_options      | INTO DUMPFILE 'file_name'    FROM table_references    WHERE where_definition    GROUP BY col_name | ex

14、pr | position      ASC | DESC, . WITH ROLLUP    HAVING where_definition    ORDER BY col_name | expr | position      ASC | DESC , .    LIMIT offset, row_count | row_count OFFSET offset    PRO

15、CEDURE procedure_name(argument_list)FOR UPDATE | LOCK IN SHARE MODESELECT用于恢復(fù)從一個(gè)或多個(gè)表中選擇的行,并可以加入U(xiǎn)NION語(yǔ)句和子查詢。·         每個(gè)select_expr都指示一個(gè)您想要恢復(fù)的列。·         table_references指示行從哪個(gè)表或哪些表中被恢復(fù)。·   &

16、#160;     where_definition包括關(guān)鍵詞WHERE,后面接一個(gè)表達(dá)式。該表達(dá)式指示被選擇的行必須滿足的條件。·         使用AS alias_name可以為select_expr給定一個(gè)別名。此別名用作表達(dá)式的列名,可以用于GROUP BY、ORDER BY或HAVING子句。使用AS明確地指定列的別名,把它作為習(xí)慣,是一個(gè)良好的操作規(guī)范。·       &

17、#160; 在一個(gè)WHERE子句中使用列別名是不允許的,因?yàn)楫?dāng)執(zhí)行WHERE子句時(shí),列值可能還沒(méi)有被確定。·         FROM table_references子句指示行從哪些表中被恢復(fù)。如果您命名的表多于一個(gè),則您在進(jìn)行一個(gè)聯(lián)合操作。·         使用tbl_name AS alias_name或tbl_name alias_name可以為一個(gè)表引用起別名。·  

18、0;      在WHERE子句中,您可以使用MySQL支持的所有函數(shù),不過(guò)總計(jì)(總結(jié))函數(shù)除外。·         被選擇的用于輸出的列可以使用列名稱、列別名或列位置被引用到ORDER BY和GROUP BY子句中。要以相反的順序進(jìn)行分類,應(yīng)把DESC(降序)關(guān)鍵字添加到ORDER BY子句中的列名稱中。默認(rèn)值為升序;該值可以使用ASC關(guān)鍵詞明確地指定。·       

19、60; 如果您使用GROUP BY,則輸出行根據(jù)GROUP BY列進(jìn)行分類,如同您對(duì)相同的列進(jìn)行了ORDER BY。MySQL對(duì)GROUP BY進(jìn)行了擴(kuò)展,因此您可以在各列(在子句中進(jìn)行命名)的后面指定ASC和DESC。         MySQL對(duì)GROUP BY的使用進(jìn)行了擴(kuò)展,允許選擇在GROUP BY子句中沒(méi)有被提到的字段。如果您沒(méi)有得到預(yù)期的結(jié)果,請(qǐng)閱讀GROUP BY的說(shuō)明。·         GROUP BY允許

20、一個(gè)WITH ROLLUP修飾符。·         HAVING子句基本上是最后使用,只位于被發(fā)送給客戶端的條目之前,沒(méi)有進(jìn)行優(yōu)化。(LIMIT用于HAVING之后。)·         LIMIT子句可以被用于限制被SELECT語(yǔ)句返回的行數(shù)。LIMIT取一個(gè)或兩個(gè)數(shù)字自變量,自變量必須是非負(fù)的整數(shù)常數(shù)(當(dāng)使用已預(yù)備的語(yǔ)句時(shí)除外)。使用兩個(gè)自變量時(shí),第一個(gè)自變量指定返回的第一行的偏移量,第二個(gè)自變量指定返回的行數(shù)

21、的最大值。初始行的偏移量為0(不是1)·         SELECT.INTO OUTFILE 'file_name'形式的SELECT可以把被選擇的行寫入一個(gè)文件中。該文件被創(chuàng)建到服務(wù)器主機(jī)上,因此您必須擁有FILE權(quán)限,才能使用此語(yǔ)法。file_name不能是一個(gè)原有的文件。原有文件會(huì)阻止例如“/etc/passwd”的文件和數(shù)據(jù)庫(kù)表被銷毀。SELECT.INTO OUTFILE語(yǔ)句的主要作用是讓您可以非??焖俚匕岩粋€(gè)表轉(zhuǎn)儲(chǔ)到服務(wù)器機(jī)器上。如果您想要在服務(wù)器主機(jī)之外的部分客戶主機(jī)上創(chuàng)

22、建結(jié)果文件,您不能使用SELECT.INTO OUTFILE。在這種情況下,您應(yīng)該在客戶主機(jī)上使用比如“mysql e "SELECT ." > file_name”的命令,來(lái)生成文件。SELECT.INTO OUTFILE是LOAD DATA INFILE的補(bǔ)語(yǔ);用于語(yǔ)句的exort_options部分的語(yǔ)法包括部分FIELDS和LINES子句,這些子句與LOAD DATA INFILE語(yǔ)句同時(shí)使用。·         有的過(guò)程應(yīng)在結(jié)果集合內(nèi)處理數(shù)據(jù)。PROCEDURE子句用于

23、對(duì)這些過(guò)程進(jìn)行命名。·         存儲(chǔ)引擎使用頁(yè)面或行鎖。如果您對(duì)存儲(chǔ)引擎使用FOR UPDATE,則受到查詢檢驗(yàn)的行會(huì)被進(jìn)行寫鎖定,直到當(dāng)前事務(wù)結(jié)束為止。使用LOCK IN SHARE MODE可以設(shè)置一個(gè)共享鎖。共享鎖可以防止其它事務(wù)更新或刪除被檢驗(yàn)的行。在SELECT關(guān)鍵詞的后面,您可以使用許多選項(xiàng)。這些選項(xiàng)可以影響語(yǔ)句的運(yùn)行。ALL, DISTINCT和DISTINCTROW選項(xiàng)指定是否重復(fù)行應(yīng)被返回。如果這些選項(xiàng)沒(méi)有被給定,則默認(rèn)值為ALL(所有的匹配行被返回)。DISTINCT和DIST

24、INCTROW是同義詞,用于指定結(jié)果集合中的重復(fù)行應(yīng)被刪除。HIGH_PRIORITY, STRAIGHT_JOIN和以SQL_為開(kāi)頭的選項(xiàng)是MySQL相對(duì)于標(biāo)準(zhǔn)SQL的擴(kuò)展。·         HIGH_PRIORITY給予SELECT更高的優(yōu)先權(quán),高于用于更新表的語(yǔ)句。您應(yīng)該只對(duì)查詢使用HIGH_PRIORITY。查詢速度非???,而且立刻被執(zhí)行。SELECT HIGH_PRIORITY查詢?cè)诒肀绘i定用于讀取時(shí)被發(fā)出。即使有一個(gè)新的語(yǔ)句正在等待表變?yōu)榭臻e,查詢也會(huì)運(yùn)行。HIGH_PRIORITY不能和S

25、ELECT語(yǔ)句同時(shí)使用。SELECT語(yǔ)句是UNION的一部分。·         STRAIGHT_JOIN用于促使優(yōu)化符把表聯(lián)合在一起,順序按照這些表在FROM子句中排列的順序。如果優(yōu)化符聯(lián)合表時(shí)順序不佳,您可以使用STRAIGHT_JOIN來(lái)加快查詢的速度。·         SQL_BIG_RESULT可以與GROUP BY或DISTINCT同時(shí)使用,來(lái)告知優(yōu)化符結(jié)果集合有很多行。在這種情況下,MySQL直接使

26、用以磁盤為基礎(chǔ)的臨時(shí)表(如果需要的話)。在這種情況下,MySQL還會(huì)優(yōu)先進(jìn)行分類,不優(yōu)先使用臨時(shí)表。臨時(shí)表對(duì)于GROUP BY組分帶有關(guān)鍵字。·         SQL_BUFFER_RESULT促使結(jié)果被放入一個(gè)臨時(shí)表中。這可以幫助MySQL提前解開(kāi)表鎖定,在需要花費(fèi)較長(zhǎng)時(shí)間的情況下,也可以幫助把結(jié)果集合發(fā)送到客戶端中。·         SQL_SMALL_RESULT可以與GROUP BY或DISTINCT同時(shí)

27、使用,來(lái)告知優(yōu)化符結(jié)果集合是較小的。在此情況下,MySAL使用快速臨時(shí)表來(lái)儲(chǔ)存生成的表,而不是使用分類。在MySQL 5.1中,通常不需要這樣。·         SQL_CALC_FOUND_ROWS告知MySQL計(jì)算有多少行應(yīng)位于結(jié)果集合中,不考慮任何LIMIT子句。行的數(shù)目可以使用SELECT FOUND_ROWS()恢復(fù)。·         如果您正在使用一個(gè)query_cache_type值,值為2或DEM

28、AND,則SQL_CACHE告知MySQL把查詢結(jié)果存儲(chǔ)在查詢緩存中。對(duì)于使用UNION的查詢或子查詢,本選項(xiàng)會(huì)影響查詢中的所有SELECT。·         SQL_NO_CACHE告知MySQL不要把查詢結(jié)果存儲(chǔ)在查詢緩存中對(duì)于一個(gè)使用UNION或子查詢的查詢,本選項(xiàng)會(huì)影響查詢中的SELECT。例如我們想查詢二號(hào)分站中第一個(gè)傳感器2010-3-16日下午1點(diǎn)到1點(diǎn)半這段時(shí)間的實(shí)時(shí)數(shù)據(jù),請(qǐng)使用下面的查詢語(yǔ)句:Select * from analog_monitor_data where kjf19_i

29、d=2 and sensor_id=1 and monitor_value>-1 and timestamp>=2010-3-16 13:00:00 and timestamp<=2010-3-16 13:30:00 order by timestamp;如果你想查詢2010-2-15日所有模擬量的報(bào)警資料,可使用如下語(yǔ)句:Select * from analog_alarm_data where alarm_time>=2010-02-15 00:00:00 and alarm_time<2010-02-16 00:00:00 order by kjf19_id

30、,sensor_id,alarm_time;如果你想查詢2010-2-15日所有模擬量的斷電資料,可使用如下語(yǔ)句:Select * from analog_poweroff_data where poweroff_cmd_time >=2010-02-15 00:00:00and poweroff_cmd_time<2010-02-16 00:00:00 order by kjf19_id,sensor_id, poweroff_cmd_time;如果你想知道2號(hào)分站第一個(gè)傳感器的安裝地點(diǎn)名稱,使用如下語(yǔ)句:Select b.location_name from analog_pa

31、rameter as a, instrument_location as b where a.location_id=b.location_id and a.kjf19_id=2 and a.sensor_id=1;修復(fù)表REPAIR TABLE語(yǔ)法REPAIR LOCAL | NO_WRITE_TO_BINLOG TABLE    tbl_name , tbl_name . QUICK EXTENDED USE_FRMREPAIR TABLE用于修復(fù)被破壞的表。默認(rèn)情況下,REPAIR TABLE與myisamchk -recover tbl_name具有相同的

32、效果。REPAIR TABLE對(duì)MyISAM和ARCHIVE表起作用。通常,您基本上不必運(yùn)行此語(yǔ)句。但是,如果災(zāi)難發(fā)生,REPAIR TABLE很有可能從MyISAM表中找回所有數(shù)據(jù)。如果您的表經(jīng)常被破壞,您應(yīng)該盡力找到原因,以避免使用REPAIR TALBE。本語(yǔ)句會(huì)返回一個(gè)含有以下列的表:列值Table表名稱Op進(jìn)行修復(fù)Msg_type狀態(tài)、錯(cuò)誤、信息或警告之一Msg_text消息對(duì)于每個(gè)被修復(fù)的表,REPAIR TABLE語(yǔ)句會(huì)產(chǎn)生多行的信息。上一行含有一個(gè)Msg_type狀態(tài)值。Msg_test通常應(yīng)為OK。如果您沒(méi)有得到OK,您應(yīng)該嘗試使用myisamchk -safe-recove

33、r修復(fù)表,因?yàn)镽EPAIR TABLE尚不會(huì)執(zhí)行所有的myisamchk選項(xiàng)。如果給定了QUICK,則REPAIR TABLE會(huì)嘗試只修復(fù)索引樹(shù)。這種類型的修復(fù)與使用myisamchk -recover -quick相似。如果您使用EXTENDED,則MySQL會(huì)一行一行地創(chuàng)建索引行,代替使用分類一次創(chuàng)建一個(gè)索引。這種類型的修復(fù)與使用myisamchk -safe-recover相似。對(duì)于REPAIR TABLE,還有一種USE_FRM模式可以利用。如果.MYI索引文件缺失或標(biāo)題被破壞,則使用此模式。在這種模式下,MySQL可以使用來(lái)自.frm文件重新創(chuàng)建.MYI文件。這種修復(fù)不能使用myis

34、amchk來(lái)完成。 注釋:只能在您不能使用常規(guī)REPAIR模式是,才能使用此模式。.MYI標(biāo)題包含重要的表元數(shù)據(jù)(特別是,當(dāng)前的AUTO_INCREMENT值和Delete鏈接)。這些元數(shù)據(jù)在REPAIR.USE_FRM中丟失。如果表被壓縮,則不能使用USE_FRM。因?yàn)楸拘畔⒁泊鎯?chǔ)在.MYI文件中。REPAIR TABLE語(yǔ)句被寫入二進(jìn)制日志中,除非使用了自選的NO_WRITE_TO_BINLOG關(guān)鍵詞(或其別名LOCAL)。警告:如果在REPAIR TABLE運(yùn)行過(guò)程中,服務(wù)器停機(jī),則在重新啟動(dòng)之后,在執(zhí)行其它操作之前,您必須立刻對(duì)表再執(zhí)行一個(gè)REPAIR TABLE語(yǔ)句。(通過(guò)制作一個(gè)備

35、份來(lái)啟動(dòng)是一個(gè)好辦法。)再最不利情況下,您可以有一個(gè)新的干凈的索引文件,不含有關(guān)數(shù)據(jù)文件的信息。然后,您執(zhí)行的下一個(gè)操作會(huì)覆蓋數(shù)據(jù)文件。這很少發(fā)生,但是是有可能的。檢查表CHECK TABLE語(yǔ)法CHECK TABLE tbl_name , tbl_name . option . option = QUICK | FAST | MEDIUM | EXTENDED | CHANGED檢查一個(gè)或多個(gè)表是否有錯(cuò)誤。CHECK TABLE對(duì)MyISAM和InnoDB表有作用。對(duì)于MyISAM表,關(guān)鍵字統(tǒng)計(jì)數(shù)據(jù)被更新。CHECK TABLE也可以檢查視圖是否有錯(cuò)誤,比如在視圖定義中被引用的表已

36、不存在。CHECK TABLE語(yǔ)句會(huì)返回一個(gè)含有以下列的表:列值Table表名稱Op進(jìn)行檢查Msg_type狀態(tài)、錯(cuò)誤、信息或錯(cuò)誤之一Msg_text消息注意,該語(yǔ)句可能會(huì)為每個(gè)被檢查的表產(chǎn)生多行信息。最后一行有一個(gè)Msg_type狀態(tài)值。Msg_text通常應(yīng)為OK。如果您沒(méi)有得到OK,或表已經(jīng)更新了,則您通常應(yīng)該運(yùn)行修復(fù)后的表。請(qǐng)參見(jiàn)5.9.4節(jié),“表維護(hù)和崩潰恢復(fù)”。表已經(jīng)更新了,這意味著表的存儲(chǔ)引擎指示沒(méi)有必要檢查表。可以給予的不同的檢查選項(xiàng)列于下表中。這些選項(xiàng)只適用于檢查MyISAM表。對(duì)于InnoDB表和視圖,這些選項(xiàng)被忽略。類型意義QUICK不掃描行,不檢查錯(cuò)誤的鏈接。FAST只

37、檢查沒(méi)有被正確關(guān)閉的表。CHANGED只檢查上次檢查后被更改的表,和沒(méi)有被正確關(guān)閉的表。MEDIUM掃描行,以驗(yàn)證被刪除的鏈接是有效的。也可以計(jì)算各行的關(guān)鍵字校驗(yàn)和,并使用計(jì)算出的校驗(yàn)和驗(yàn)證這一點(diǎn)。EXTENDED對(duì)每行的所有關(guān)鍵字進(jìn)行一個(gè)全面的關(guān)鍵字查找。這可以確保表是100一致的,但是花的時(shí)間較長(zhǎng)。如果沒(méi)有指定QUICK, MEDIUM或EXTENDED選項(xiàng),則對(duì)于動(dòng)態(tài)格式MyISAM表,默認(rèn)檢查類型是MEDIUM。這與對(duì)表運(yùn)行myisamchk -medium-check tbl_name的結(jié)果相同。對(duì)于靜態(tài)格式MyISAM表,默認(rèn)檢查類型也是MEDIUM,除非CHANGED或FAST已

38、被指定。在此情況下,默認(rèn)值為QUICK。對(duì)于CHANGED和FAST,行掃描被跳過(guò),因?yàn)樾袠O少被破壞。您可以組合檢查選項(xiàng),如下面的例子所示。該例子對(duì)表進(jìn)行了一個(gè)快速檢查,來(lái)查看該表是否被正確關(guān)閉:CHECK TABLE test_table FAST QUICK;注釋:在有些情況下,CHECK TABLE會(huì)更改表。如果表被標(biāo)記為“corrupted”或“not closed properly”,則出現(xiàn)這種情況。但是CHECK TABLE不會(huì)找出表中的問(wèn)題。在這種情況下,CHECK TABLE會(huì)把表標(biāo)記為良好。如果一個(gè)表被破壞,很有可能問(wèn)題在索引中,而不在數(shù)據(jù)部分中。所有前述的檢查類型都可以徹底

39、地檢查索引,因此,可以找出多數(shù)的錯(cuò)誤。如果您只想要檢查您假定的表是良好的,您應(yīng)該不使用檢查選項(xiàng)或QUICK選項(xiàng)。當(dāng)您時(shí)間匆忙時(shí),應(yīng)使用QUICK。QUICK無(wú)法找出數(shù)據(jù)文件中的錯(cuò)誤的風(fēng)險(xiǎn)非常小。(在多數(shù)情況下,在正常使用中,MySQL應(yīng)能在數(shù)據(jù)文件中找出錯(cuò)誤。如果找出了錯(cuò)誤,表被標(biāo)記為“corrupted”,并不能被使用,直到修復(fù)為止。)如果您想要時(shí)常檢查表,F(xiàn)AST和CHANGED多數(shù)情況下從原本中被使用(例如,從cron中被執(zhí)行)。在多數(shù)情況下,F(xiàn)AST優(yōu)先于CHANGED。(只有一種情況FAST不優(yōu)先于CHANGED,那就是當(dāng)您懷疑您在MyISAM代碼中發(fā)現(xiàn)了錯(cuò)誤。)當(dāng)MySQL試圖通過(guò)

40、關(guān)鍵字更新一行或查找一行時(shí),如果您已經(jīng)運(yùn)行了一個(gè)常規(guī)檢查后但仍得到來(lái)自表的奇怪的錯(cuò)誤,此時(shí)使用EXTENDED。(如果常規(guī)的檢查運(yùn)行成功,則基本用不著EXTENDED。)被CHECK TABLE報(bào)告的部分問(wèn)題不會(huì)被自動(dòng)修正:·         發(fā)現(xiàn)行。此行中,auto_increment列有0值。這意味著,您在表中有一行,該行的AUTO_INCREMENT索引列包含0值。(可以通過(guò)使用UPDATE語(yǔ)句,明確地把列設(shè)置為0,以創(chuàng)建一個(gè)AUTO_INCREMENT列為0的行。)這本身不是一個(gè)錯(cuò)誤,但是如果您決

41、定轉(zhuǎn)儲(chǔ)表并恢復(fù)表,或?qū)Ρ磉M(jìn)行ALTER TABLE,那么會(huì)導(dǎo)致出現(xiàn)麻煩。在此情況下,AUTO_INCREMENT列會(huì)根據(jù)AUTO_INCREMENT列的結(jié)果更改值,這會(huì)導(dǎo)致出現(xiàn)問(wèn)題,如重復(fù)關(guān)鍵字錯(cuò)誤等。要消除警告,只需執(zhí)行一個(gè)UPDATE語(yǔ)句,把列設(shè)置為除0以外的值。用于主服務(wù)器的SQL語(yǔ)句l SHOW MASTER STATUS用于提供主服務(wù)器二進(jìn)制日志文件的狀態(tài)信息。l SHOW SLAVE HOSTS 用于顯示當(dāng)前使用主服務(wù)器注冊(cè)的復(fù)制從屬服務(wù)器的清單。不以-report-host=slave_name選項(xiàng)為開(kāi)頭的從屬服務(wù)器不會(huì)顯示在本清單中。l SHOW MASTER LOGS用于列出

42、服務(wù)器中的二進(jìn)制日志文件。l SHOW BINLOG EVENTSSHOW BINLOG EVENTS   IN 'log_name' FROM pos LIMIT offset, row_count用于在二進(jìn)制日志中顯示事件。如果您不指定'log_name',則顯示第一個(gè)二進(jìn)制日志。LIMIT子句和SELECT語(yǔ)句具有相同的語(yǔ)法。注釋:當(dāng)服務(wù)器把二進(jìn)制日志的完整內(nèi)容(該日志包括多數(shù)的由MySQL執(zhí)行的查詢)轉(zhuǎn)儲(chǔ)到stdout時(shí),發(fā)布一個(gè)不含LIMIT子句的SHOW BINLOG EVENTS可以啟動(dòng)一個(gè)過(guò)程,該過(guò)程非常消耗時(shí)間并消耗資源。要

43、把二進(jìn)制日志保存到一個(gè)文本文件中,用于以后的檢查和分析,需使用mysqlbinlog應(yīng)用程序。用于從服務(wù)器的SQL語(yǔ)句l CHANGE MASTER TO語(yǔ)法CHANGE MASTER TO master_def , master_def . master_def:      MASTER_HOST = 'host_name'    | MASTER_USER = 'user_name'    | MASTER_PASSWORD = '

44、password'    | MASTER_PORT = port_num    | MASTER_CONNECT_RETRY = count    | MASTER_LOG_FILE = 'master_log_name'    | MASTER_LOG_POS = master_log_pos    | RELAY_LOG_FILE = 'relay_log_name'   

45、; | RELAY_LOG_POS = relay_log_pos    | MASTER_SSL = 0|1    | MASTER_SSL_CA = 'ca_file_name'    | MASTER_SSL_CAPATH = 'ca_directory_name'    | MASTER_SSL_CERT = 'cert_file_name'    | MASTER_SSL_KEY = &#

46、39;key_file_name'    | MASTER_SSL_CIPHER = 'cipher_list'可以更改從屬服務(wù)器用于與主服務(wù)器進(jìn)行連接和通訊的參數(shù)。MASTER_USER, MASTER_PASSWORD, MASTER_SSL, MASTER_SSL_CA, MASTER_SSL_CAPATH, MASTER_SSL_CERT, MASTER_SSL_KEY和MASTER_SSL_CIPHER用于向從屬服務(wù)器提供有關(guān)如何與主服務(wù)器連接的信息。即使對(duì)于在編譯時(shí)沒(méi)有SSL支持的從屬服務(wù)器,SSL選項(xiàng)(MASTER_SSL,

47、MASTER_SSL_CA, MASTER_SSL_CAPATH, MASTER_SSL_CERT, MASTER_SSL_KEY和MASTER_SSL_CIPHER)也可以被更改。它們被保存到文件中,但是會(huì)被忽略,直到您使用一個(gè)SSL支持已啟用的服務(wù)器。如果您不指定一個(gè)給定的參數(shù),則它會(huì)保持其原有的值。例外情況在后面的討論中進(jìn)行了說(shuō)明。舉例說(shuō)明,如果用于連接到您的MySQL主服務(wù)器的 密碼被更改了,您只需發(fā)布這些語(yǔ)句,就可以告知從屬服務(wù)器新的密碼:mysql> STOP SLAVE; - if replication was runningmysql> CH

48、ANGE MASTER TO MASTER_PASSWORD='new3cret'mysql> START SLAVE; - if you want to restart replication沒(méi)有必要指定沒(méi)有改變的參數(shù)(主機(jī)、接口、用戶等)。MASTER_HOST和MASTER_PORT是主服務(wù)器主機(jī)和其TCP/IP接口的主機(jī)名(或IP地址)。注意,如果MASTER_HOST與localhost相等,那么,和MySQL的其它部分一樣,接口可以被忽略(例如,如果可以使用Unix插槽文件)。如果您指定了MASTER_HOST或MASTER_PORT,則從屬服務(wù)器會(huì)假定主服務(wù)

49、器與以前不一樣(即使您指定的主機(jī)或接口值與當(dāng)前值是一樣的。)在此情況下,主服務(wù)器二進(jìn)制日志的名稱和位置的原有值不再適用,因此,如果您不指定語(yǔ)句中的MASTER_LOG_FILE和MASTER_LOG_POS,MASTER_LOG_FILE=''和MASTER_LOG_POS=4會(huì)被靜默地添加。在MASTER_LOG_FILE和MASTER_LOG_POS坐標(biāo)點(diǎn),從屬服務(wù)器I/O線程在啟動(dòng)之后從主服務(wù)器讀取。如果您只指定了其中一個(gè),則從屬服務(wù)器不能指定RELAY_LOG_FILE或RELAY_LOG_POS。如果MSATER_LOG_FILE和MASTER_LOG_POS都沒(méi)有被

50、指定,則從屬服務(wù)器會(huì)使用在CHANGE MASTER被發(fā)布前的最后一個(gè)slave SQL thread坐標(biāo)。當(dāng)您只想改變要使用的 密碼時(shí),這可以確保復(fù)制的連續(xù)性。即使從屬服務(wù)器SQL線程落后于從屬服務(wù)器I/O線程,也可以確保復(fù)制的連續(xù)性。CHANGE MASTER會(huì)刪除所有的中繼日志文件并啟動(dòng)一個(gè)新的日志,除非您指定了RELAY_LOG_FILE或RELAY_LOG_POS。在此情況下,中繼日志被保持;relay_log_purge全局變量被靜默地設(shè)置為0。CHANGE MASTER TO可以更新和文件的內(nèi)容。當(dāng)您擁有主服務(wù)器快照并擁有日志和對(duì)

51、應(yīng)的偏移量時(shí),CHANGE MASTER對(duì)于設(shè)置從屬服務(wù)器是有用的。在把快照載入從屬服務(wù)器之后,您可以在從屬服務(wù)器上運(yùn)行CHANGE MASTER TO MASTER_LOG_FILE='log_name_on_master', MASTER_LOG_POS=log_offset_on_master。l SHOW SLAVE STATUS用于提供有關(guān)從屬服務(wù)器線程的關(guān)鍵參數(shù)的信息。l START SLAVE語(yǔ)法START SLAVE thread_type , thread_type . START SLAVE SQL_THREAD UNTIL   

52、; MASTER_LOG_FILE = 'log_name', MASTER_LOG_POS = log_posSTART SLAVE SQL_THREAD UNTIL    RELAY_LOG_FILE = 'log_name', RELAY_LOG_POS = log_pos thread_type: IO_THREAD | SQL_THREAD不含選項(xiàng)的START SLAVE會(huì)同時(shí)啟動(dòng)兩個(gè)從屬服務(wù)器線程。I/O線程從主服務(wù)器中讀取查詢,并把它們存儲(chǔ)在中繼日志中。SQL線程讀取中繼日志并執(zhí)行查詢。START SLAVE

53、要求SUPER權(quán)限。如果START SLAVE成功地啟動(dòng)了從屬服務(wù)器線程,則會(huì)返回,不會(huì)出現(xiàn)錯(cuò)誤。但是,即使在此情況下,也有可能出現(xiàn)這樣的現(xiàn)象服務(wù)器線程啟動(dòng)了,然后又停止了(例如,因?yàn)樗鼈儧](méi)有成功地連接到主服務(wù)器上,或者沒(méi)有能讀取二進(jìn)制日志,或者出現(xiàn)了其它問(wèn)題)。START SLAVE對(duì)此不會(huì)發(fā)出警告。您必須檢查從屬服務(wù)器的錯(cuò)誤日志,查看是否有由從屬服務(wù)器線程產(chǎn)生的錯(cuò)誤消息,或者使用SHOW SLAVE STATUS檢查它們是否運(yùn)行正常。您可以把IO_THREAD和SQL_THREAD選項(xiàng)添加到語(yǔ)句中,指明哪些線程將要啟動(dòng)??梢蕴砑右粋€(gè)UNTIL子句,指定從屬服務(wù)器應(yīng)啟動(dòng)并運(yùn)行,直到SQL線程

54、達(dá)到主服務(wù)器二進(jìn)制日志中的一個(gè)給定點(diǎn)為止。當(dāng)SQL線程達(dá)到此點(diǎn)時(shí),它會(huì)停止。如果在該語(yǔ)句中指定了SQL_THREAD選項(xiàng),則它只會(huì)啟動(dòng)SQL線程。否則,它會(huì)同時(shí)啟動(dòng)兩個(gè)從屬服務(wù)器線程。如果SQL線程正在運(yùn)行,則UNTIL子句被忽略,并發(fā)布一個(gè)警告。對(duì)于一個(gè)UNTIL子句,您必須同時(shí)指定一個(gè)日志文件名和位置。不要把主服務(wù)器和中繼日志選項(xiàng)混合在一起。UNTIL條件由一個(gè)后續(xù)的STOP SLAVE語(yǔ)句,或一個(gè)不包括UNTIL子句的START SLAVE語(yǔ)句,或一個(gè)服務(wù)器重啟命令重新設(shè)置。UNTIL子句對(duì)于調(diào)試復(fù)制操作是有用的,或者可用于促使復(fù)制操作繼續(xù),直到接近一個(gè)特定的點(diǎn)時(shí)為止,在此點(diǎn),您想要避免

55、讓從屬服務(wù)器復(fù)制一個(gè)語(yǔ)句。舉例說(shuō)明,如果在主服務(wù)上執(zhí)行了一個(gè)不明智的DROP TABLE語(yǔ)句,您可以使用UNTIL來(lái)告知從屬服務(wù)器,執(zhí)行到此點(diǎn)就停止,不要再繼續(xù)了。要查找該事件是什么,需對(duì)主服務(wù)器日志或從屬中繼日志使用mysqlbinlog,或通過(guò)使用SHOW BINLOG EVENTS語(yǔ)句。如果您正在使用UNTIL,讓從屬服務(wù)器成段地處理已復(fù)制的查詢,則建議您使用-skip-slave-start選項(xiàng)來(lái)啟動(dòng)從屬服務(wù)器,以防止當(dāng)從屬服務(wù)器啟動(dòng)時(shí),SQL線程運(yùn)行。最好在一個(gè)選項(xiàng)文件中使用此選項(xiàng),而不是在命令行中使用,這樣,如果發(fā)生了意料外的服務(wù)器重新啟動(dòng),它也不會(huì)被忘記。SHOW SLAVE S

56、TATUS語(yǔ)句包括了輸出字段。這些字段顯示了UNTIL條件的當(dāng)前值。在以前版本的MySQL中,本語(yǔ)句被稱為SLAVE START。在MySQL 5.1中仍然接受這種用法,以便與以前版本兼容。但現(xiàn)在不贊成使用。l STOP SLAVE語(yǔ)法STOP SLAVE thread_type , thread_type .  thread_type: IO_THREAD | SQL_THREAD用于中止從屬服務(wù)器線程。STOP SLAVE要求SUPER權(quán)限。和START SLAVE相似,本語(yǔ)句在使用時(shí)可以加IO_THREAD和SQL_THREAD選項(xiàng),指明將被中止的線程。在以前版本的MySQL中

57、,本語(yǔ)句被稱為SLAVE STOP。在MySQL 5.1中仍然接受這種用法,以便與以前版本兼容。但是現(xiàn)在不贊成使用。實(shí)用工具mysqlcheck:表維護(hù)和維修程序mysqlcheck客戶端可以檢查和修復(fù)MyISAM表。它還可以優(yōu)化和分析表。mysqlcheck的功能類似myisamchk,但其工作不同。主要差別是當(dāng)mysqld服務(wù)器在運(yùn)行時(shí)必須使用mysqlcheck,而myisamchk應(yīng)用于服務(wù)器沒(méi)有運(yùn)行時(shí)。使用mysqlcheck的好處是不需要停止服務(wù)器來(lái)檢查或修復(fù)表。Mysqlcheck為用戶提供了一種方便的使用SQL語(yǔ)句CHECK TABLE、REPAIR TABLE、ANALYZE

58、 TABLE和OPTIMIZE TABLE的方式。它確定在要執(zhí)行的操作中使用使用哪個(gè)語(yǔ)句,然后將語(yǔ)句發(fā)送到要執(zhí)行的服務(wù)器上。有3種方式來(lái)調(diào)用mysqlcheck:shell> mysqlcheckoptions db_name tablesshell> mysqlcheckoptions -database DB1 DB2 DB3.shell> mysqlcheckoptions -all-database如果沒(méi)有指定任何表或使用-database或-all-database選項(xiàng),則檢查整個(gè)數(shù)據(jù)庫(kù)。同其它客戶端比較,mysqlcheck有一個(gè)特殊特性。重新命名二進(jìn)制可以更改檢

59、查表的默認(rèn)行為(-check)。如果你想要一個(gè)工具默認(rèn)可以修復(fù)表的工具,只需要將mysqlcheck重新復(fù)制為mysqlrepair,或者使用一個(gè)符號(hào)鏈接mysqlrepair鏈接mysqlcheck。如果調(diào)用mysqlrepair,可按照命令修復(fù)表。下面的名可用來(lái)更改mysqlcheck的默認(rèn)行為:mysqlrepair默認(rèn)選項(xiàng)為-repairmysqlanalyze默認(rèn)選項(xiàng)為-analyzemysqloptimize默認(rèn)選項(xiàng)為-optimizemysqlcheck支持下面的選項(xiàng):·         -

60、help,-?顯示幫助消息并退出。·         -all-database,-A檢查所有數(shù)據(jù)庫(kù)中的所有表。與使用-database選項(xiàng)相同,在命令行中命名所有數(shù)據(jù)庫(kù)。·         -all-in-1,-1不是為每個(gè)表發(fā)出一個(gè)語(yǔ)句,而是為命名數(shù)據(jù)庫(kù)中待處理的所有表的每個(gè)數(shù)據(jù)庫(kù)執(zhí)行一個(gè)語(yǔ)句。·         -anal

61、yze,-a分析表。·         -auto-repair如果某個(gè)被檢查的表破壞了,自動(dòng)修復(fù)它。檢查完所有表后自動(dòng)進(jìn)行所有需要的修復(fù)。·         -character-sets-dir=path字符集的安裝目錄。·         -check,-c檢查表的錯(cuò)誤。·   &#

62、160;     -check-only-changed,-C只檢查上次檢查以來(lái)已經(jīng)更改的或沒(méi)有正確關(guān)閉的表。·         -compress壓縮在客戶端和服務(wù)器之間發(fā)送的所有信息(如果二者均支持壓縮)。·         -database,-B處理數(shù)據(jù)庫(kù)中命名的所有表。使用該選項(xiàng),所有字名參量被看作數(shù)據(jù)庫(kù)名,而不是表名。·   

63、      -debug=debug_options,-# debug_options寫調(diào)試日志。debug_options字符串通常為'd:t:o,file_name'。·         -default-character-set=charset使用charsetas默認(rèn)字符集。·         -extended,-e如果你正使用該選項(xiàng)來(lái)檢查

64、表,可以確保它們100%地一致,但需要很長(zhǎng)的時(shí)間。如果你正使用該選項(xiàng)來(lái)修復(fù)表,則運(yùn)行擴(kuò)展修復(fù),不但執(zhí)行的時(shí)間很長(zhǎng),而且還會(huì)產(chǎn)生大量的垃圾行! ·         -fast,-F只檢查沒(méi)有正確關(guān)閉的表。·         -force,-f即使出現(xiàn)SQL錯(cuò)誤也繼續(xù)。·         -host=host_name,-h hos

65、t_name連接給定主機(jī)上的MySQL服務(wù)器。·         -medium-check,-m執(zhí)行比-extended操作更快的檢查。只能發(fā)現(xiàn)99.99%的錯(cuò)誤,在大多數(shù)情況下這已經(jīng)足夠了。·         -optimize,-o優(yōu)化表。·         -password=password,-ppassword當(dāng)連接

66、服務(wù)器時(shí)使用的密碼。如果使用短選項(xiàng)形式(-p),選項(xiàng)和 密碼之間不能有空格。如果在命令行中-password或-p選項(xiàng)后面沒(méi)有 密碼值,則提示輸入一個(gè)密碼。·         -port=port_num,-P port_num用于連接的TCP/IP端口號(hào)。·         -protocol=TCP | SOCKET | PIPE | MEMORY 使用的連接協(xié)議。·     &

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論