《MySQL數據庫多種安裝方法及企業級安裝實踐(上篇)》要點:
本文介紹了MySQL數據庫多種安裝方法及企業級安裝實踐(上篇),希望對您有用。如果有疑問,可以聯系我們。
本文來自《老男孩MySQL私房菜》第三章!
在當今的互聯網企業里,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命令進行安裝:
[root@oldboy 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.
常規方式編譯安裝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及以后的產品系列)的產品逐漸替代了,因此,老男孩也不建議讀者再使用第一條產品線的產品作為對外的業務庫.
考慮到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方式的安裝就算成功了.
采用二進制免編譯方式安裝MySQL的方法和yum/rpm包安裝方式類似,適合各類MySQL產品系列,不需要復雜的編譯設置及編譯時間等待,直接解壓下載的軟件包,就相當于編譯方式的make install步驟完成了,然后只要進行初始化數據庫的操作,即可完成并啟動,此方式的MySQL軟件包一般都比較大,最大可達180MB,采用二進制方式免編譯安裝MySQL的方法在后文會詳細講解.
若是對數據庫要求不太高的場景,可以采用yum/rpm方式安裝MySQL,例如并發不大,只是在公司內部(wiki系統)、企業內部的應用(Zabbix監控系統,OpenStack后臺管理)等需要數據庫的一些應用場景,當然,生產場景下也是可以選擇yum或rpm方式進行安裝的.
但是,有很多大型網站或門戶網站,往往在安裝MySQL時,會有各種定制化、初始化的需求,這時,要根據企業的需求先把源碼包制作成rpm包,然后搭建自己的yum倉庫,最終采用yum install mysql-server -y的方式安裝,這樣做的優點是即兼顧了yum/rpm安裝方式簡單的優點,又用到了源碼包安裝方式的可定制性,但是,使用這個方法需要一定的技術能力,此部分的內容讀者可以參考老男孩教育為讀者提供的如下博文.
自動化運維必備技能—定制屬于自己的RPM包http://blog.oldboyedu.com/autodeploy-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倉庫搭建的地址,不再贅述.
1.MySQL數據庫的安裝環境準備
如果讀者沒有物理服務器環境,則可以搭建vmware等虛擬機環境學習,相應地則需準備如下內容:
1)請提前加大VM虛擬機硬件的內存,這樣編譯時候會更快,最好設置2GB以上的內存.
2)最好提前下載好要安裝的MySQL相關軟件包(http://mirrors.sohu.com/mysql/).
3)重視每個操作過程的輸出,有錯誤要解決掉再繼續,不能忽略掉操作中的錯誤(error).
4)建議進入虛擬機界面去執行make以及make install,通過SSH操作有時會導致網絡中斷.
有關vmware虛擬化學習軟件和CentOS6操作系統的安裝詳細步驟見《跟老男孩學Linux運維:Web集群實戰》,或看免費部署文章:http://book.51cto.com/art/201605/510756.htm.
2.安裝MySQL需要的依賴包和編譯軟件
當前的Linux系統環境情況如下:
[root@oldboy ~]# cat /etc/redhat-release
#<==操作系統版本
CentOS release 6.8 (Final)
[root@oldboy ~]# uname -r
#<==內核版本
2.6.32-642.el6.x86_64
[root@oldboy ~]# uname -m
x86_64??? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
#<==64位系統
(1)安裝MySQL需要的依賴包
安裝MySQL之前,最好先安裝MySQL需要的依賴包,不然后面會出現很多報錯信息,到那時還得再回來安裝MySQL的依賴包.安裝命令如下:
[root@oldboy ~]# yum install ncurses-devel libaio-devel -y
[root@oldboy ~]# 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軟件包,命令為:
[root@oldboy ~]# yum install cmake -y
[root@oldboy ~]# 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用戶賬號:
root@oldboy ~]# useradd -s /sbin/nologin -M mysql?#<==默認會創建和mysql用戶同名的組.
[root@oldboy ~]# 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軟件包.
[root@oldboy ~]# mkdir -p /home/oldboy/tools
[root@oldboy ~]# cd /home/oldboy/tools/
[root@oldboy tools]# wget -q?http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.34.tar.gz
[root@oldboy tools]# ls -lh
total 31M
-rw-r–r–. 1 root root 31M Nov 28 07:46 mysql-5.6.34.tar.gz
第二步,解壓配置mysql,命令如下:
[root@oldboy tools]# tar xf mysql-5.6.34.tar.gz
[root@oldboy tools]# cd mysql-5.6.34
[root@oldboy 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,命令如下:
root@oldboy mysql-5.6.34]# make? ??????#<==如果是多核cpu,可指定make -j cpu核數,加快編譯速度.
[root@oldboy mysql-5.6.34]# make install
第四步,為MySQL安裝路徑設置不帶版本號的軟鏈接/application/mysql,操作命令如下:
[root@oldboy mysql-5.6.34]# ln -s /application/mysql-5.6.34/ /application/mysql
[root@oldboy mysql-5.6.34]# ln -s /application/mysql-5.6.34/ /application/mysql
#補充:如果系統里有曾經安裝的數據庫文件和啟動程序最好停掉或刪除,以免沖突.
[root@oldboy 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
[root@oldboy 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目錄下已經沒有配置文件模板了.
[root@oldboy mysql-5.6.34]# ll support-files/*.cnf
-rw-r–r–. 1 root root 1126 Feb 26 17:54 support-files/my-default.cnf
[root@oldboy 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的配置文件的默認位置!
[root@oldboy 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除了注釋以外是一致的.
[root@oldboy mysql-5.6.34]# chown -R mysql.mysql /application/mysql/
#<==授權mysql用戶管理mysql的安裝目錄.
關于更多mysql my.cnf參數的說明及調優,請參看本書后面章節.
未完,請見《MySQL數據庫多種安裝方法及企業級安裝實踐(下篇)》
文章來自微信公眾號:老男孩教育
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/4238.html