MySQL管理員指南

Mysql數據庫介紹
    MySQL是一個真正的多用戶、多線程SQL數據庫服務器。SQL(結構化查詢語言)是世界上最流行的和標準
化的數據庫語言。MySQL是以一個客戶機/服務器結構的實現,它由一個服務器守護程序mysqld和很多不同的
客戶程序和庫組成。


    SQL是一種標準化的語言,它使得存儲、更新和存取信息更容易。例如,你能用SQL語言為一個網站檢索
產品信息及存儲顧客信息,同時MySQL也足夠快和靈活以允許你存儲記錄文件和圖像。


    MySQL 主要目標是快速、健壯和易用。最初是因為我們需要這樣一個SQL服務器,它能處理與任何可不昂
貴硬件平臺上提供數據庫的廠傢在一個數量級上的大型數據庫,但速度更快,MySQL就開發出來。自1996年以
來,我們一直都在使用MySQL,其環境有超過 40 個數據庫,包含 10,000個表,其中500多個表超過7百萬行
,這大約有100 個吉字節(GB)的關鍵應用數據。


Mysql數據庫特點
1.  使用核心線程的完全多線程。這意味著它能很容易地利用多CPU(如果有)。
2.  可運行在不同的平臺上。
3.  多種列類型:1、 2、 3、4、和 8 字節長度的有符號/無符號整數(INT)、FLOAT、DOUBLE、CHAR、
    VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、SET和ENUM類型。
4.  利用一個優化的一遍掃描多重聯結(one-sweep multi-join)非常快速地進行聯結(join)。
5.  在查詢的SELECT和WHERE部分支持全部運算符和函數。
6.  通過一個高度優化的類庫實現SQL函數庫並且像他們能達到的一樣快速,通常在查詢初始化後不應該有任
    何內存分配。
7.  全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函數( COUNT()、COUNT(DISTINCT)、AVG()、STD()、
    SUM()、 MAX()和MIN() )。
8.  支持ANSI SQL的LEFT OUTER JOIN和ODBC語法。
9.  你可以在同一查詢中混用來自不同數據庫的表。
10. 一個非常靈活且安全的權限和口令系統,並且它允許基於主機的認證。口令是安全的,因為當與一個服
    務器連接時,所有的口令傳送被加密。
11. ODBC for Windiws 95。
12. 具備索引壓縮的快速B樹磁盤表。
13. 每個表允許有16個索引。每個索引可以由1~16個列或列的一部分組成。最大索引長度是 256 個字節(在
    編譯MySQL時,它可以改變)。一個索引可以使用一個CHAR或VARCHAR字段的前綴。
14. 定長和變長記錄。
15. 用作臨時表的內存散列表。
16. 大數據庫處理。我們正在對某些包含 50,000,000 個記錄的數據庫使用MySQL。
17. 所有列都有缺省值,你可以用INSERT插入一個表列的子集,那些沒用明確給定值的列設置為他們的缺省
    值。
18. 一個非常快速的基於線程的內存分配系統。
19. 沒有內存漏洞。用一個商用內存漏洞監測程序測試過(purify)。
20. 包括myisamchk,一個檢查、優化和修復數據庫表的快速實用程序。
21. 全面支持ISO-8859-1  Latin1 字符集。
22. 所有數據以 ISO-8859-1  Latin1 格式保存。所有正常的字符串比較是忽略大小寫的。
23. DELETE、INSERT、REPLACE和UPDATE 返回有多少行被改變(受影響)。
24. 函數名不會與表或列名沖突。例如ABS是一個有效的列名字。對函數調用的唯一限制是函數名與隨後的
    “(“不能有空格。
25. 所有MySQL程序可以用選項–help或-?獲得聯機幫助。
26. 服務器能為客戶提供多種語言的出錯消息。
27. 客戶端使用TCP/IP 連接或Unix套接字(socket)或NT下的命名管道連接MySQL。
28. MySQL特有的SHOW命令可用來檢索數據庫、表和索引的信息,EXPLAIN命令可用來確定優化器如何解決一
    個查詢。
   
MySQL服務器的啟動與停止


一、啟動服務器的方法
啟動服務器由三種主要方法:


1、 直接調用mysqld。
#./mysqld&
這可能是最不常用的方法,建議不要多使用。


2、調用safe_mysqld腳本,最好的方法。
#./safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &


3、調用mysql.server腳本。
safe_mysqld腳本安裝在MySQL安裝目錄的bin目錄下,或可在MySQL源代碼分發的scripts目錄下找到。
mysql.server腳本安裝在MySQL安裝目錄下的share/mysqld目錄下或可以在MySQL源代碼分發的support_files
目錄下找到。如果你想使用它們,你需要將它們拷貝到適當的目錄下mysql/bin下。
#./mysql.server start


Sun Solariys開機自動啟mysql的方法
寫一個啟動和關閉的批處理文件Web (在路徑/etc/init.d 下), 內容如下:


#!/bin/sh
OPT_=$1


case “$OPT_” in
    start)
 /bin/echo “$0 : (start)”
 #
 # Your service startup command goes here.
 #
       /usr/local/apache/bin/apachectl start
       /home3/mysql/bin/safe_mysqld -O join_buffer=128M -O key_buffer=128M -O record_buffer=256M -O sort_buffer=128M -O table_cache=2048 -O tmp_table_size=16M -O max_connections=2048 &


 # NOTE: Must exit with zero unless error is severe.
 exit 0
 ;;
    stop)
 /bin/echo “$0 : (stop)”
 #
 # Your service shutdown command goes here.
 #
       /usr/local/apache/bin/apachectl stop


 # NOTE: Must exit with zero unless error is severe.
 exit 0
 ;;
    *) /bin/echo
 /bin/echo “Usage: $0 [start|stop]”
 /bin/echo ”       Invalid argument ==> “${OPT_}””
 /bin/echo
 exit 0
 ;;
esac
確認此文件有可執行的權利
#chmod 500 web
#cd /etc/rc2.d
#ln -s ../init.d/web S99mysql
在系統啟動時,S99mysql腳本將自動用一個start參數調用。註意頭字母必須大寫。


二、停止服務器的方法
1、要手工停止服務器,使用mysqladmin:
#mysqladmin -u 用戶名 -p密碼 shutdown
2、 調用mysql.server腳本,最好的方法。
#./mysql.server stop
3、 直接殺掉OS的進程號
#kill -9 進程號
這可能是最不常用的方法,建議不要多使用。


要自動停止服務器,你不需做特別的事情。隻需要加另外一個關閉程序。
#cd /etc/rc0.d
#ln -s ../init.d/web K01mysql
在系統啟動時,K01mysql腳本將自動用一個stop參數調用。


MySQL目錄結構和常用命令
一、 數據目錄的位置
這是默認的mysql目錄結構
bin        info       libexec    share      var
include    lib        man        sql-bench  


一個缺省數據目錄被編譯進瞭服務器,如果你從一個源代碼分發安裝MySQL,典型的缺省目錄為
/usr/local/var,如果從RPM文件安裝則為/var/lib/mysql,如果從一個二進制分發安裝則是
/usr/local/mysql/data。
作為一名MySQL管理員,你應該知道你的數據目錄在哪裡。如果你運行多個服務器,你應該是到所有數據目錄
在哪裡,但是如果你不知道確切的位置,由多種方法找到它:


1、使用mysqladmin variables從你的服務器直接獲得數據目錄路徑名。查找datadir變量的值,在Unix上,其輸出類似於:
%mysqladmin -u username -p***** variables


+———————-+———————-+
| variable_name        | Value                |
+———————-+———————-+
| back_log             | 5                    |
| connect_timeout      | 5                    |
| basedir              | /var/local/          |
| datadir              | /usr/local/var/      |
….
2、查找mysql運行的路徑
%ps -ef | grep mysqld           


二、數據目錄結構
每個數據庫對應於數據目錄下的一個目錄。
在一個數據庫中的表對應於數據目錄下的文件。
數據目錄也包含由服務器產生的幾個狀態文件,如日志文件。這些文件提供瞭關於服

發佈留言