程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL在ArchLinux上的安裝與啟動

MySQL在ArchLinux上的安裝與啟動

編輯:關於MYSQL數據庫
【導讀】本文詳細介紹了MySQL在ArchLinux上的安裝與啟動問題。

  在ArchLinux上我們可以很容易的來安裝MySQL。我們可以通過下面的命令來安裝:

  pacman -Sv MySQL

  只是這樣的一個簡單命令,我們就可以在我們的系統安裝上最新的MySQL數據庫了。當然我們還要做一些下面的工作,才可以使得我們的MySQL服務器可以啟動起來。

  首先我們要添加MySQL用戶與組,我們可以通過下面的命令來做到:

  groupadd mysql (添加MySQL組)

  useradd -g mysql mysql(添加MySQL用戶)

  然後我們可以用下面的命令來安裝MySQL數據庫預定義的一些數據表:

  mysql_install_db --user=MySQL

  這時如果我們來啟動MySQL服務器會有一些提示信息,我們還要做下面的一些事情:

  mkdir /var/lib/MySQL

  touch /var/lib/MySQL/myhost.err

  經過這樣的操作以後,我們就可以啟動MySQL服務器了:

  MySQLd_safe &

  MySQL服務器啟動腳本

  mysqld_safe--MySQL服務器啟動腳本

  mysqld_safe是在Unix或是NetWare系統推薦使用來啟動MySQL服務器的方法。MySQLd_safe添加了許多安全的特征,例如,當發生錯誤時重新啟動服務器,並且可以將運行時的信息寫入錯誤日志文件。

  在這裡我們要注意的是,為了與舊版本的MySQL保持向後兼容,MySQL的二進制發行版本同時也包含safe_mysqld作為指向MySQLd_safe的鏈接。然而我們並不應依賴於這個啟動程序,因為這在將來的版本中會被移除。

  在默認的情況下,如果在存在一個可執行的mysqld-max,MySQLd_safe

  1 在Linux系統上,MySQL-Max RPM依賴於mysqld_safe的行為。RPM安裝一個名為mysqld-max的可執行程序,這會使得MySQLd_safe從此以後自動調用這個可執行程序。

  2 如果你安裝了一個包含名為mysqld-max服務器的二進制發行版本,然後在以後的某一個時期我們更新到了一個沒有Max版本的MySQL, mysqld_safe仍然會試著運行舊的mysqld-max的服務器。如果我們執行了這樣的更新,我們應手式移除舊的mysqld-max服務器,並 且保證mysqld_safe運行新的的MySQLd服務器。

  要覆蓋默認的行為並且顯示的指明我們要運行的服務器,我們可以為我們的mysqld_safe指定一個-mysqld或是-MySQLd-version選項。

  mysqld_safe的大多數選項與MySQLd的相同。

  MySQLd命令行選項

  在命令行為mysqld_safe指定的所有選項都傳遞給mysqld。如果我們要使用任何一個為mysqld_safe指定的並且mysqld不支持的,不要在命令行指定他們。相反的,我們可以在一個可選的文件[MySQLd_safe]組中列出。

  mysqld_safe從選項文件中的[mysqld],[server],[mysqld_safe]部分讀出各個選項。為了向後兼容,他還會讀出[safe_mysqld]部分,雖然我們要在MySQL5.0的安裝中將這一部分重命名為[MySQLd_safe].

  MySQLd_safe支持下列的選項:

  --help

  顯示幫助信息並退出。

  --autoclose

  在NetWare系統上,mysqld_safe提供一個屏幕顯示.當我們御載(關閉)MySQLd_safe NLM,在默認的情況下這個屏幕並不會消失.相反,他們提示用戶進行輸入:

  **

  如果我們希望NetWare自動關閉這個屏幕,我們可以為MySQLd_safe提供--autoclose選項

  --basedir=path

  指定MySQL的安裝目錄 --core-file-size=size

  MySQLd可以創建的core文件的大小。這個選項的值將會傳遞給ulimit -c.

  --datadir=path

  數據目錄的路徑。

  --defaults-extra-file=path

  在常規選項文件之外要讀取的額外的選項文件名。如果要指定,這個選項必須是第一個。

  --defaults-file=path

  替換常規選項文件要讀取的選項文件。如果要指定,這個選項必須是第一個。

  --ledir=path

  包含MySQLd程序的目錄路徑。使用這個選項來顯示指明服務器的位置。

  --log-error=path

  將錯誤日志寫入指定的文件。

  --MySQLd=prog_name

  我們要啟動的服務器程序的名字。如果我們使用MySQL的二進制發行版本,但是使用卻是二進制版本以外的數據目錄,那麼這個選項是必須的。

  --MySQLd-version=suffix

  這 個選項與--mysqld程序相似,但是我們只是為服務器程序指定了前綴。基礎名會被假定為mysqld。例如,如果我們使用-mysqld- version=max,mysqld_safe將會啟動ledir目錄中的mysqld-max程序。如果--mysqld-version的參數為 空,mysqld_safe會使用ledir目錄中的MySQLd程序。

  --nice=priority

  使用nice程序來為服務器的運行級別指定一個數值。

  --no-defaults

  並不讀入任何選項文件。如果要指定,這個選項必須是第一個。

  --open-files-limit=count

  mysqld可以打開的文件數量。這個選項值將會傳遞給ulimit -n。在這裡我們要注意的是如果要使用這個選項正常工作,我們需要以root身份來啟動MySQLd_safe。

  --pid-file=path

  進程序ID文件的路徑。

  --port=port_num

  當監聽TCP/IP連接時要使用的端口號.這個端口號必須是1024或是更高,除非MySQL是以root系統用戶運行的.

  --skip-character-set-clIEnt-handshake

  忽略客戶端發送的字符設置信息,而使用默認的服務器字符設置.

  --socket=path

  為本地連接所用的Unix套接字文件.

  --timezone=zone

  將TZ時區環境變量設置為指定的值.查看我們的操作系統文件可以得到合法時區的詳細格式.

  --user={user_name | user_id}

  以用戶名user_name或是數字用戶ID user_id的用戶來運行MySQLd服務器.

  當運行MySQLd_safe時,必須首先指定--defaults-file或是--defaults-extra-option選項,否則選項將不會被使用.例如,下面的命令就不會使用指定的選項文件:

  MySQLd_safe --port=port_num --defaults-file=file_name

  相反,我們應使用下面的命令:

  MySQLd_safe --defaults-file=file_name --port=port_num

  mysqld_safe這樣進行編寫就可以保證正常的啟動由源碼包或是二進制發行版本�滄暗腗ySQL中的服務器,甚至是這些二進制發行版本將其安裝在不同的位置也可以正常的啟動。MySQLd_safe要求下列條件中的一個為真:

  1 在相對於MySQLd_safe的目錄的相對目錄中可以找到服務器和數據庫。對於二進制發行版本,mysqld_safe在他的工作目錄下查找bin和 data目錄。對於源碼包安裝的MySQL,他會查找libexec和var目錄。如果我們從我們的MySQL安裝目錄執行MySQLd_safe,這些 條件必須滿足。

  2 如果服務器和數據並沒有在MySQL的工作目錄的相對目錄中找到,mysqld_safe就會試著以絕對路徑來進行查找。典型的路徑是 /usr/local/libexec和/usr/local/var。實際的路徑將會決定於二進制發行版本在構建時所配置的值。如果MySQL安裝在配 置時指定的路徑內,這些必須正確。

  因為MySQLd_safe會試著在相對於他的工作目錄的目錄中查找服務器與數據庫,所以我們可以將MySQL安裝在任何地方,只要我們在MySQL的安裝目錄中執行MySQLd_safe即可:

  shell> cd MySQL_installation_directory

  shell> bin/MySQLd_safe &

  如果mysqld_safe失敗,即使是在MySQL的安裝目錄中進行調用,我們也可以指定--ledir和--datadir選項來表明服務器與數據庫在我們的系統中所在的目錄。

  在 通常情況下我們不應修改mysqld_safe腳本,我們可以使用命令或是在my.cnf選項文件中的[mysqld_safe]部分進行修改。只有在極 少的情況下也許必須修改MySQLd_safe腳本來使得他正常啟動。然而,如果我們這樣做,如果我們在將來進行升級,我們所修改的版本就會被覆蓋掉,所 以我們要備份一個我們的修改版本,從而我們可以進行重裝。

  MySQL服務器的關閉過程

  MySQL服務器的關閉過程可以總結為以下幾點:

  1 初始化關閉過程

  2 如果必須服務器創建一個關閉進程

  3 服務器停止接受新的連接

  4 服務器結束當前的活動

  5 存儲引擎結束或是關閉

  6 服務器結束

  更為詳細的描述如下:

  1 初始化關閉過程

  可 以用幾種方法來初始服務器關閉。例如,一個有著SHUTDOWN權限的用戶可以執行mysqladmin shutdown命令。mysqladmin可以在MySQL支持的任何平台上運行。其他與操作系統相關的實始化方法也是可以的:在Unix系統上,當服 務器接收到一個SIGTERM信號時服務器就會結束。在Windows系統上以服務運行的服務器可以在任務管理器中結束。

  2 如果必須服務器會創建一個結束進程

  依 據如何初始化結束,服務器也許會創建一個進程來處理結束過程。如果結束是由客戶端請求,就會創建一個結束進程。如果結束是由接收到SIGTERM信號引起 的,信號進程將會處理結束過程,或者他會創建一個單獨的進程來處理。如果服務器試著創建一個結束進程但是卻創建失敗時,他會顯示如下的錯誤信息:

  Error: Can't create thread to kill server

  3 服務器停止接受新的連接

  為了避免在結束過程中新的活動,服務器停止新收新的連接。這樣做的方法是結束平時監聽的網絡連接:TCP/IP端口,Unix套接字文件,Windows命令管道,Windows上的共享主存.

  4 服務器結束當前的活動

  為每一個與客戶端相關的進程,到客戶端的每一個連接斷開並且每一個進程被標識為死亡.當進程發現他們被進行了這樣的標識時就會死掉.空連接的進程會很快死掉.當前正在進行查詢的進程會檢查他們的狀態並且過後死掉.

  對於有一個開放事務的進程,事務會滾回.在這裡我們要注意的是如果一個進程在更新一個非事務表,例如多行更新或是插入的操作,將會使得表部分更新,因為這樣的操作會在完成之前結束.

  如果這個服務器是一個主復制服務器,與當前連接的從服務器的進程也會被當作其他的客戶端進程對待.也就是說,每一個進程都會被標識為死亡,當下一次檢查狀態時退出.

  如果這個服務器是一個從復制服務器,I/O與SQL進程,如果是活動,將會在客戶端進程被標識為死亡之前被停止.SQL進程會允許結束當前的語句然後退出.如果SQL進程此時正在進行事務處理,事務將會滾回.

  5 存儲引擎結束或是關閉

  在這一步,數據表緩存將會被刷新,而所有打開的表都會被關閉.

  每一個存儲引擎都會為他所管理的數據表進行必要的操作.例如,MyISAM會刷新一個表的索引.

  6 服務器結束.事務會滾回.在這裡我們要注意的是如果一個進程在更新一個非事務表,例如多行更新或是插入的操作,將會使得表部分更新,因為這樣的操作會在完成之前結束.

  如果這個服務器是一個主復制服務器,與當前連接的從服務器的進程也會被當作其他的客戶端進程對待.也就是說,每一個進程都會被標識為死亡,當下一次檢查狀態時退出.

  如果這個服務器是一個從復制服務器,I/O與SQL進程,如果是活動,將會在客戶端進程被標識為死亡之前被停止.SQL進程會允許結束當前的語句然後退出.如果SQL進程此時正在進行事務處理,事務將會滾回.

  5 存儲引擎結束或是關閉

  在這一步,數據表緩存將會被刷新,而所有打開的表都會被關閉.

  每一個存儲引擎都會為他所管理的數據表進行必要的操作.例如,MyISAM會刷新一個表的索引.

  6 服務器結束.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved