1. 程式人生 > >MySQL資料庫多種安裝方法及企業級安裝實踐(上篇)

MySQL資料庫多種安裝方法及企業級安裝實踐(上篇)

本文來自《老男孩MySQL私房菜》第三章!

3.1MySQL資料庫的安裝方法及選擇

在當今的網際網路企業裡,MySQL資料庫大多執行在Linux系列作業系統上,當然,你也可以執行在Windows/Unix等商業作業系統上,本書主要以國內網際網路公司應用最多的資料庫服務作業系統——CentOS6最新版(6.8)x86_64Linux系統為例進行講解,使用其他系統的讀者同樣可以從本書受益!

即使是在CentOS6x86_64Linux系統環境下,若應用場景不同或版本不同,MySQL資料庫的安裝方法也會有所區別,下面我們就把最常見的幾種方法一一介紹給大家!

3.1.1yum/rpm方式安裝MySQL

MySQL官方網站及相關映象網站提供了不同版本的RPM安裝包,並且針對不同的硬體或作業系統平臺,安裝包的型別也會有區別。在使用時,可以到官方網站下載頁面進行選擇,國內也有一些網際網路公司提供了映象,比如搜狐、阿里雲公司提供的映象資源就非常不錯。  下面是搜狐網提供的資料庫軟體映象地址:http://mirrors.sohu.com/mysql  注意:yum/rpm安裝方式適合所有MySQL軟體產品。

1.rpm包方式安裝MySQL

rpm包的安裝方式非常簡單,這裡以el6平臺下的mysql-5.6.34版本為例,首先,要通過上述搜狐映象地址下載到如下四個MySQL相關軟體安裝包。

MySQL-client-5.6.34-1.el6.x86_64.rpm
MySQL-devel-5.6.34-1.el6.x86_64.rpm
MySQL-server-5.6.34-1.el6.x86_64.rpm
MySQL-shared-5.6.34-1.el6.x86_64.rpm

提示:我們可以從Linux的對應系統盤或系統映象裡找到類似的rpm包,但是版本一般會較低一些。

一般來說,其中的MySQL-server-5.6.34-1.el6.x86_64.rpm和MySQL-client-5.6.34-1.el6.x86_64.rpm這兩個軟體包是必須要安裝的,至於另外兩個軟體包,則可視實際需要進行安裝,不過一般建議一起安裝。

可以把這四個RPM包上傳到伺服器的目錄中,然後執行如下rpm命令進行安裝:

[[email protected] tools]# rpm -qa|grep mysql

#<==查詢已經安裝的mysql包

mysql-libs-5.1.73-7.el6.x86_64

rpm -e mysql-libs-5.1.73-7.el6.x86_64 –nodeps

#<==解除安裝系統已經安裝的mysql依賴包。

rpm -ivh MySQL-client-5.6.34-1.el6.x86_64.rpm

rpm -ivh MySQL-devel-5.6.34-1.el6.x86_64.rpm

rpm -ivh MySQL-shared-5.6.34-1.el6.x86_64.rpm

rpm -ivh MySQL-server-5.6.34-1.el6.x86_64.rpm

這裡的el6表示適合作業系統的版本,還有el5、el7等。i686表示適合32位的系統,x86_64表示適合64位的系統。

執行上述命令即可完成MySQL軟體的安裝。

在採用rpm包安裝方式時,必須要官方或第三方提供了現成的rpm軟體包,否則是無法使用該方式安裝的。另外,和直接採用yum的安裝方式相比,rpm包的安裝方式往往可以選擇更新的版本,但是rpm包安裝也有自身的問題,例如,無法滿足定製化安裝,比如,不能進行編譯引數、路徑等的更改。

2. yum方式安裝MySQL

yum方式安裝MySQL資料庫時,只需執行一個命令yum install mysql-server -y即可,yum方式的安裝原理是在執行yum安裝命令後,會自動從yum源地址下載相應名稱的MySQL資料庫rpm包,然後到系統上安裝,並自動解決各種軟體包之間的依賴問題。這是一個非常不錯的安裝軟體的方式,不僅僅是針對MySQL,安裝其他軟體也是如此。

yum安裝方式的最大優點就是超級簡單,但是它也有自身的問題,例如它繼承了rpm包的無法定製化安裝的問題,另外一個缺點是採用預設的yum安裝時,一般yum源帶的軟體版本都比較低,例如:截止作者寫作本文時,使用CentOS6.8 Linux 預設yum安裝的MySQL版本僅為5.1.73。

3.1.2 常規方式編譯安裝MySQL

常規方式編譯安裝MySQL時,適合用第一條最正宗的MySQL產品線5.2及以前版本:

所謂常規方式編譯安裝MySQL就是延續早期MySQL的3部曲安裝方式,即./configure;make;make install,下面是老男孩在早期的企業生產場景下操作過的具體命令及引數:

tar zxf mysql-5.1.73.tar.gz

tar zxf mysql-5.1.73.tar.gz

cd mysql-5.1.73

./configure \

–prefix=/application/mysql5.1.73 \

–with-unix-socket-path=/application/mysql5.1.73/tmp/mysql.sock \

–localstatedir=/application/mysql5.1.73/data \

–enable-assembler \

–enable-thread-safe-client \

–with-mysqld-user=mysql \

–with-big-tables \

–without-debug \

–with-pthread \

–enable-assembler \

–with-extra-charsets=complex \

–with-readline \

–with-ssl \

–with-embedded-server \

–enable-local-infile \

–with-plugins=partition,innobase \

–with-mysqld-ldflags=-all-static \

–with-client-ldflags=-all-static

make

make installl

ln -s /application/mysql-5.1.73/ /application/mysql

安裝到這裡,MySQL資料庫還不能正常啟動使用,還需要進行初始化資料庫等工作,具體可以參考後文安裝部分。

此種方式適合所有MySQL5.2.xx及以前的產品系列,是最常規的編譯方式,在當下的網際網路企業中,此種編譯安裝的方法已經很少使用了,原因是第一條產品線的產品(MySQL5.2.xx及以前的產品系列)用得越來越少了,被第二條產品線(MySQL5.4.xx及以後的產品系列)的產品逐漸替代了,因此,老男孩也不建議讀者再使用第一條產品線的產品作為對外的業務庫。

3.1.3 採用cmake方式編譯安裝MySQL

考慮到MySQL5.4.xx及以後系列產品的特殊性,其編譯方式和早期的第一條產品線的有所不同,這裡採用cmake或gmake方式的編譯安裝。即./cmake;make;make install,生產場景的具體命令及引數為:

tar zxf mysql-5.6.34.tar.gz

cd mysql-5.6.34

cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.34 \

-DMYSQL_DATADIR=/application/mysql-5.6.34/data \

-DMYSQL_UNIX_ADDR=/application/mysql-5.6.34/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \

-DWITH_ZLIB=bundled \

-DWITH_SSL=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_EMBEDDED_SERVER=1 \

-DENABLE_DOWNLOADS=1 \

-DWITH_DEBUG=0

#提示,編譯時可配置的選項很多,具體可參考本章最後一部分內容或官方文件。

make

make install

ln -s /application/mysql-5.6.34/ /application/mysql

安裝到這裡,MySQL資料庫仍無法正常啟動使用,還需要進行初始化資料庫等工作,具體可以參考後文安裝部分,另外,cmake等用於編譯的工具也需要提前進行安裝。相關引數的說明,見後文。

如果上述操作未出現錯誤,則MySQL5.6.34軟體cmake方式的安裝就算成功了。

3.1.4 採用二進位制方式免編譯安裝MySQL

採用二進位制免編譯方式安裝MySQL的方法和yum/rpm包安裝方式類似,適合各類MySQL產品系列,不需要複雜的編譯設定及編譯時間等待,直接解壓下載的軟體包,就相當於編譯方式的make install步驟完成了,然後只要進行初始化資料庫的操作,即可完成並啟動,此方式的MySQL軟體包一般都比較大,最大可達180MB,採用二進位制方式免編譯安裝MySQL的方法在後文會詳細講解。

3.1.5 如何正確選擇MySQL的安裝方式

若是對資料庫要求不太高的場景,可以採用yum/rpm方式安裝MySQL,例如併發不大,只是在公司內部(wiki系統)、企業內部的應用(Zabbix監控系統,OpenStack後臺管理)等需要資料庫的一些應用場景,當然,生產場景下也是可以選擇yum或rpm方式進行安裝的。

但是,有很多大型網站或入口網站,往往在安裝MySQL時,會有各種定製化、初始化的需求,這時,要根據企業的需求先把原始碼包製作成rpm包,然後搭建自己的yum倉庫,最終採用yum install mysql-server -y的方式安裝,這樣做的優點是即兼顧了yum/rpm安裝方式簡單的優點,又用到了原始碼包安裝方式的可定製性,但是,使用這個方法需要一定的技術能力,此部分的內容讀者可以參考老男孩教育為讀者提供的如下博文。

自動化運維必備技能—搭建屬於自己的YUM倉庫http://blog.oldboyedu.com/autodeploy-yum/。

二進位制免編譯安裝方式很簡單方便,且適合5.0-5.1和5.5-5.7系列,是不少專業DBA的選擇,普通Linux運維人員一般多采用編譯的方式安裝,對應到MySQL5.0-5.1系列就是常規編譯方式,對應到MySQL5.5-5.7系列就是cmake編譯方式。

所以綜合來講,這些安裝方式都是可以使用的,只是不同層次的人習慣不同,實際應用的效能差距不是很大。

老男孩的建議:首先是選擇MySQL5.5或以上的資料庫版本,當資料庫伺服器機器數量少的話,可採用cmake編譯方式安裝,這是很多運維人員的習慣選擇。當資料庫伺服器機器數量多的情況,可用二進位制免編譯方式安裝,這是某些DBA的偏愛,若是資料庫伺服器機器數量特別大,且對定製化要求很高,可以選擇通過原始碼定製rpm包,搭建yum倉庫的安裝方式。當然了,採用此種方法的讀者也要具備這方面的能力才行,前文已經給出了做rpm定製以及yum倉庫搭建的地址,不再贅述。

3.2 安裝並配置MySQL資料庫

3.2.1 安裝MySQL資料庫

1.MySQL資料庫的安裝環境準備

如果讀者沒有物理伺服器環境,則可以搭建vmware等虛擬機器環境學習,相應地則需準備如下內容:

1)請提前加大VM虛擬機器硬體的記憶體,這樣編譯時候會更快,最好設定2GB以上的記憶體。

3)重視每個操作過程的輸出,有錯誤要解決掉再繼續,不能忽略掉操作中的錯誤(error)。

4)建議進入虛擬機器介面去執行make以及make install,通過SSH操作有時會導致網路中斷。

有關vmware虛擬化學習軟體和CentOS6作業系統的安裝詳細步驟見《跟老男孩學Linux運維:Web叢集實戰》,或看免費部署文章:http://book.51cto.com/art/201605/510756.htm。

2.安裝MySQL需要的依賴包和編譯軟體
當前的Linux系統環境情況如下:

[[email protected] ~]# cat /etc/redhat-release

#<==作業系統版本

CentOS release 6.8 (Final)

[[email protected] ~]# uname -r

#<==核心版本

2.6.32-642.el6.x86_64

[[email protected] ~]# uname -m

x86_64 

#<==64位系統

(1)安裝MySQL需要的依賴包

安裝MySQL之前,最好先安裝MySQL需要的依賴包,不然後面會出現很多報錯資訊,到那時還得再回來安裝MySQL的依賴包。安裝命令如下:

[[email protected] ~]# yum install ncurses-devel libaio-devel -y

[[email protected] ~]# rpm -qa ncurses-devel libaio-devel

ncurses-devel-5.7-4.20090207.el6.x86_64

libaio-devel-0.3.107-10.el6.x86_64

提示:安裝後使用rpm -qa ncurses-devel libaio-devel命令檢查,如果出現兩行如上資訊表示安裝成功。

(2)安裝編譯MySQL需要的軟體
由於MySQL5.5及以上的系列產品要採用特殊的編譯方式安裝,因此,需要先安裝常用的編譯MySQL的工具cmake軟體包,命令為:

[[email protected] ~]# yum install cmake -y

[[email protected] ~]# rpm -qa cmake

cmake-2.8.12.2-4.el6.x86_64

提示:安裝後使用rpm -qa cmake檢查,如果出現一行如上資訊表示安裝成功。

此外,也有網友採用原始碼包的方式安裝cmake的,但比較複雜,因此一般建議讀者選擇這個簡單的yum安裝方法。

3.開始安裝MySQL

為了讓大家學習更多的MySQL技術,本文選擇了相對複雜的原始碼安裝方式為例來講解MySQL多例項安裝,大型公司一般都會將MySQL軟體定製成rpm包,然後放到yum倉庫裡,使用yum安裝,中小企業裡的二進位制和編譯安裝的區別不大。

使用二進位制方式安裝MySQL方法見http://oldboy.blog.51cto.com/2561410/1893734。

(1)建立MySQL使用者賬號

首先以root身份登入到Linux系統中,然後執行如下命令建立mysql使用者賬號:

[email protected] ~]# useradd -s /sbin/nologin -M mysql #<==預設會建立和mysql使用者同名的組。

[[email protected] ~]# id mysql

uid=500(mysql) gid=500(mysql) groups=500(mysql)

根據上述結果輸出,可以看到mysql使用者和組已經成功創建。

(2)獲取MySQL軟體包

MySQL軟體包的下載地址為:http://dev.mysql.com/downloads/mysql/(如果地址變更無法下載,可以去http://mirrors.sohu.com/mysql下載)。可以把軟體下載到客戶端電腦本地後,使用rz等工具傳到Linux裡,或者找到網路下載地址後,直接在Linux裡使用wget下載。

提示:本例以MySQL編譯的方式來講解,使用二進位制方式安裝的完整過程在本文結尾會提供給大家。在生產場景中,二進位制和原始碼包兩種安裝方法都是可以用的,其應用場景一般沒什麼太大差別。不同之處在於,二進位制的安裝包較大,名字和原始碼包也有些區別,二進位制的安裝過程比原始碼更快。

MySQL原始碼包和二進位制安裝包的名稱見表3-1。

表3-1 MySQL二進位制和原始碼包

MySQL軟體 軟體名
MySQL原始碼安裝包 mysql-5.6.34.tar.gz(本章選擇的安裝包)
MySQL二進位制安裝包 mysql-5.6.34-linux-glibc2.5-x86_64.tar.gz

(3)採用編譯方式安裝MySQL

配置及編譯安裝的步驟如下:

第一步,下載mysql軟體包。

[[email protected] ~]# mkdir -p /home/oldboy/tools

[[email protected] ~]# cd /home/oldboy/tools/

[[email protected] tools]# ls -lh

total 31M

-rw-r–r–. 1 root root 31M Nov 28 07:46 mysql-5.6.34.tar.gz

第二步,解壓配置mysql,命令如下:

[[email protected] tools]# tar xf mysql-5.6.34.tar.gz

[[email protected] tools]# cd mysql-5.6.34

[[email protected] tools]# cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.34 \

-DMYSQL_DATADIR=/application/mysql-5.6.34/data \

-DMYSQL_UNIX_ADDR=/application/mysql-5.6.34/tmp/mysql.sock \

-DDEFAULT_CHARSET=utf8 \

-DDEFAULT_COLLATION=utf8_general_ci \

-DWITH_EXTRA_CHARSETS=all \

-DWITH_INNOBASE_STORAGE_ENGINE=1 \

-DWITH_FEDERATED_STORAGE_ENGINE=1 \

-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \

-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \

-DWITH_ZLIB=bundled \

-DWITH_SSL=bundled \

-DENABLED_LOCAL_INFILE=1 \

-DWITH_EMBEDDED_SERVER=1 \

-DENABLE_DOWNLOADS=1 \

-DWITH_DEBUG=0

提示:

1)編譯時可配置的選項很多,常見的引數選項見本章最後一部分內容,更詳細的可參考本章結尾附錄講解。

2)編譯MySQL需要安裝gcc等工具,此部分在安裝作業系統時已經安裝上了,具體參考CentOS6作業系統的安裝詳細步驟,見《跟老男孩學Linux運維:Web叢集實戰》書或免費部署文章http://book.51cto.com/art/201605/510756.htm。

第三步,編譯安裝MySQL,命令如下:

[email protected] mysql-5.6.34]# make        #<==如果是多核cpu,可指定make -j cpu核數,加快編譯速度。

[[email protected] mysql-5.6.34]# make install

第四步,為MySQL安裝路徑設定不帶版本號的軟連結/application/mysql,操作命令如下:

[[email protected] mysql-5.6.34]# ln -s /application/mysql-5.6.34/ /application/mysql

[[email protected] mysql-5.6.34]# ln -s /application/mysql-5.6.34/ /application/mysql

#補充:如果系統裡有曾經安裝的資料庫檔案和啟動程式最好停掉或刪除,以免衝突。

[[email protected] mysql-5.6.34]# ls -l /application/

total 4

lrwxrwxrwx.  1 root root   26 Feb 26 17:49 mysql -> /application/mysql-5.6.34/

drwxr-xr-x. 13 root root 4096 Feb 26 17:49 mysql-5.6.34

[[email protected] mysql-5.6.34]# ls /application/mysql/

bin  COPYING  data  docs  include  lib  man  mysql-test  README  scripts  share  sql-bench  support-files

如果上述操作未出現錯誤(每個步驟結束後,都可以使用echo $?看返回值是否為0,為0則表示正確),檢視/application/mysql/目錄,若其下有內容,則表示MySQL5.6.34原始碼包採用cmake方式安裝成功了。

3.2.2建立MySQL資料庫配置檔案並對資料庫目錄授權

MySQL5.5資料庫預設為使用者提供了多個配置檔案模板,但是MySQL5.6的support-files目錄下已經沒有配置檔案模板了。

[[email protected] mysql-5.6.34]# ll support-files/*.cnf

-rw-r–r–. 1 root root 1126 Feb 26 17:54 support-files/my-default.cnf

[[email protected] mysql-5.6.34]# mv /etc/my.cnf /etc/my.cnf.bak

#提示:在CentOS 6.8版作業系統最小化安裝完成後,在/etc目錄下會存在一個my.cnf,需要將此檔案更名為其他的名字,如:/etc/my.cnf.bak,否則,該檔案會干擾原始碼安裝的MySQL的正確配置,造成無法啟動。

#在啟動MySQL服務時,會按照一定的順序搜尋my.cnf,先在/etc目錄下找,找不到則會搜尋”$basedir/my.cnf”,在本例中就是/application/mysql-5.6.34/my.cnf,這是新版MySQL的配置檔案的預設位置!

[[email protected] mysql-5.6.34]# cp support-files/my-default.cnf /application/mysql-5.6.34/my.cnf

提示:此行操作可以省略,在下文初始化mysql時會自動生成my.cnf模板檔案,如果已經執行上述命令,則初始化後會生成my-new.cnf檔案,my.cnf和my-new.cnf除了註釋以外是一致的。

[[email protected] mysql-5.6.34]# chown -R mysql.mysql /application/mysql/

#<==授權mysql使用者管理mysql的安裝目錄。

關於更多mysql my.cnf引數的說明及調優,請參看本書後面章節。

未完,請見《MySQL資料庫多種安裝方法及企業級安裝實踐(下篇)》

文章來自微信公眾號:老男孩教育