一、前言
MySQL是一個關系型數據庫管理系統,是最流行的關系型數據庫管理系統,由于其體積小、速度快、總體擁有成本低,并且之前是完全開源,所以大受歡迎。但由于后面MySQL賣給了SUN,隨后SUN被Oracle收購,雖然也有開源免費版本,但是很多功能都需要另外購買商業版本,導致現在MySQL使用份額逐漸減少。所以MariaDB就是因為這種原因誕生出來,成為數據庫管理系統是MySQL的一個分支。
二、MariaDB介紹
MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,采用GPL授權許可 MariaDB的目的是完全兼容MySQL。基于事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎。雖然MariaDB被視為MySQL數據庫的替代品,但它在擴展功能、存儲引擎以及一些新的功能改進方面都強過MySQL。而且從MySQL遷移到MariaDB也是非常簡單的。
小貼士:www.mariadb.org 是官方站點
三、MariaDB安裝介紹
3.1、安裝前需要注意地方
對于通用的二進制格式的包,我們只需要解壓縮后即能使用,但是由于二進制格式的程序包是已經編譯好的二進制程序,所以里面有些腳本都是根據固定的路徑執行某些腳本,所以他們要求mysql這個路徑必須安裝在/usr/local目錄下(類似第三方程序路徑下),并且其目錄的目錄名必須是叫mysql。因為如果不這樣做的話,很多默認的腳本會無法運行。
3.2、Mariadb通用二進制包解壓后文件說明
bin: 各種二進制都在此目錄下 data: 如果我們不創建新目錄的話,此目錄就是默認的數據目錄。所以權限必須是屬主和屬組都是mysql docs: 相關 文檔 include: 頭文件 lib: 庫文件 man: 幫助手冊 mysql-test: mysql測試組件 scripts: mysql初始化時要用到的腳本 share: mysql的共享內容 sql-bench: 對mysql做壓力測試工具 support-files: mysql正常運行的樣例性的配置文件或文檔
3.2、Mariadb官方安裝說明介紹
小貼士:在通用二進制包中有一個叫“INSTALL-BINARY”的安裝幫助信息,所以在安裝前可以先查閱此文件信息。下面介紹里面提到的幫助信息解釋。但是實際上安裝步驟可能和安裝幫助信息不完全相同,所以官方安裝幫助僅作參考。
[root@www mysql]# less INSTALL-BINARY #解壓后,可使用此命令查看,找到下面字段。 shell> groupadd mysql #添加一個組名 shell> useradd -g mysql mysql #添加一個用戶 shell> cd /usr/local #進去/usr/local目錄下 shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf - #把通用二進制MariaDB進行解壓到此目錄 shell> ln -s full-path-to-mysql-VERSION-OS mysql #鏈接目錄到到目錄名為mysql的目錄名(就是上面提到的目錄名必須叫mysql) shell> cd mysql shell> chown -R mysql . #把mysql路徑下所有文件的屬主改為mysql shell> chgrp -R mysql . #屬組改為mysql shell> scripts/mysql_install_db --user=mysql #執行此腳本完成以mysql的身份完成mysql數據初始化 shell> chown -R root . #然后在把它的的權限改為root shell> chown -R mysql data #但是把這個目錄下的data屬主改回mysql shell> bin/mysqld_safe --user=mysql & #而后使用此命令即可啟動mysql
3.3、其他需要注意的地方
考慮到使用此方法安裝的時候,數據庫文件默認將會存放到目錄下的data文件,但是如果在企業里,企業數據將會增長很快,導致數據庫文件很大,對于安全性和可擴展性都不好,所以企業里一般會存放到另一個磁盤上會更安全。為了以后使用規范,建議數據目錄要事先規劃好,指定在獨特的位置,比如專門找個磁盤存放mysql數據。
四、安裝mariadb-5.5.36
4.1、下載mariadb包
Mariadb官方站點下載mariadb-5.5.36-linux-x86_64.tar.gz包,并將其復制到Linux服務器。
4.2、解壓文件到/usr/local路徑
必須解壓到此路徑,原因前面已介紹過
[root@www local]# tar xf mariadb-5.5.36-linux-x86_64.tar.gz -C /usr/local/
4.3、修改目錄的目錄名(此處為鏈接到目錄名為mysql的目錄下)
[root@www local]# ln -s mariadb-5.5.36-linux-x86_64 mysql
這里使用創建鏈接的方式將名字命名為mysql,原因是如果以后將來需要升級maridb的話,又要重新將原來的版本移走,再把新的重命名為mysql,會比較麻煩
4.4、創建mysql用戶及組
[root@www local]# groupadd -r mysql [root@www local]# useradd -g mysql -r mysql
4.5、修改mysql各文件夾的權限
查看mysql文件下的權限如下
修改權限
[root@www mysql]# chown -R root.mysql ./*
修改data目錄的權限
[root@www mysql]# chown -R mysql.mysql ./data
4.6、初始化mysql前準備
因為mysql初始化時需要一些配置文件,在support-file提供了很多樣例的配置文件,其中有:my-huge.cnf,my-innodb-heavy-4G.cnf,my-large.cnf,my-medium.cnf,my-small.cnf。這些是分別用在你的主機,有不同的可用內存不同時使用的不同配置文件 ??蛇M去查看詳細情況
[root@www support-files]# cp my-large.cnf /etc/my.cnf cp: overwrite `/etc/my.cnf'? n
選擇好之后,拷貝到/etc/my.cnf文件,但是會發現,此文件已經存在,也許你會懷疑我們并未安裝mysql,為什么會有此文件。其實此文件是系統安裝了mysql-libs自動提供的配置文件。請先打開/etc/my.cnf文件查看,因為下面將會說明下的
[root@www support-files]# mkdir /etc/mysql [root@www support-files]# cp /usr/local/mysql/support-files/my-large.cnf /etc/mysql/my.cnf
如果我們是覆蓋了,有些配置信息會不太一樣,比如說socket,datadir。所以我們選擇安裝到其他位置。點擊打開新的my.cnf,會發現很多配置信息會和之前的那個不相同,那么mysql到底會去讀哪個配置信息呢?下面有介紹
4.7、修改mysql數據文件的路徑(此項設置根據要求)
在[mysqld]段里添加下面此項,表示mysql的數據保存到此路徑,無論你是否修改了路徑,最好都將路徑填寫上面,測試過有時會生成不到對應的mysql初始文件的。
datadir = /usr/local/mysql/data
4.8、初始化mysql
在scripts下有個mysql_install_db文件,此文件就是專門用于初始化mysql的
可使用./mysql_install_db –help 查看幫助信息
–datadir=path :指定數據文件存放路徑
–user=user_name:用哪個用戶來執行初始化過程,此項不能省略
[root@www scripts]# ./mysql_install_db --user=mysql –datadir=/usr/local/mysql/data
但是此時會報一個錯誤:“FATAL ERROR: Could not find ./bin/my_print_defaults”,原因是需要去讀bin目錄下的文件,所以執行方式必須切換到父目錄執行才行,實際如下執行
[root@www mysql]# ./scripts/mysql_install_db --user=mysql
4.9、Mysql服務腳本
在support-files下有一個叫mysql.server就是準備好的服務腳本。只要安裝目錄沒修改過,就能正常使用
[root@www data]# cp ../support-files/mysql.server /etc/rc.d/init.d/mysqld [root@www data]# chkconfig mysqld on
4.10、啟動mysqld服務
[root@www data]# service mysqld start
4.11、安裝完后有些需要注意的地方
在前面我們會發現mysql-libs生成了一個/etc/my.cnf配置文件,而我們自己創建了一個新的/etc/mysql/my.cnf配置文件,那么我們看看以上兩個配置文件的
[root@www ~]# vim /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql [root@www ~]# vim /etc/mysql/my.cnf [mysqld] port = 3306 socket = /tmp/mysql.sock thread_concurrency = 8 datadir=/usr/local/mysql/data
我們可以看到socket文件指向不同的文件路徑,所以通過查看/tmp下的文件會生成一個mysql.sock文件,而/var/lib/mysql上并沒有此文件,說明此時讀取的配置文件/etc/mysql/my.cnf生效了。
這個是mysql有點特殊的地方,mysql讀配置文件它不是只讀一個的,他會依次去找很多個位置,而且找到之后把最后一個找到的作為其最終使用的配置,或者是他把所有的找到了,然后將里面的參數合并起來,而且如果所有配置文件中有相同的參數,那么最后一次找到的是最終生效的。
4.12、程序文件無法找到解決辦法
因為不是使用rpm包安裝的,所以有可能程序文件無法找到,那么就需要編輯配置文件環境變量PATH,讓其程序在環境變量PATH可以找到
[root@www tmp]# vim /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH
重讀配置文件
[root@www tmp]# source /etc/profile.d/mysql.sh
此時你就能執行mysql程序了,否則之前執行mysql是會提示程序無法找到等錯誤信息。
4.13、導出頭文件
如果我們需要他開發的話,或依賴其他程序編譯的話,就需要導出
[root@www tmp]# ln -sv /usr/local/mysql/include/ /usr/include/mysql `/usr/include/mysql' -> `/usr/local/mysql/include/'
4.14、導出頭文件
[root@www tmp]# ldconfig -v | grep mysql /usr/lib64/mysql: libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
但是此庫文件是mysql-libs的rpm包提供的。
所以做以下操作
[root@www tmp]# vim /etc/ld.so.conf.d/mysql.conf /usr/local/mysql/lib
重新加載即可查看
[root@www tmp]# ldconfig -v | grep mysql /usr/local/mysql/lib: libmysqlclient.so.18 -> libmysqlclient_r.so.18.0.0 libmysqld.so.18 -> libmysqld.so.18 /usr/lib64/mysql: libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0 libmysqlclient.so.16 -> libmysqlclient.so.16.0.0
4.15、使用mysql連接MySQL服務器
[root@www mysql]# mysql Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 5.5.36-MariaDB-log MariaDB Server Copyright (c) 2000, 2014, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
這里會介紹到MySQL服務器的版本信息,而且是使用了MariaDB 5.5.36的版本 。
五、總結
5.1、解壓后的文件必須放在/usr/local目錄下
5.2、文件目錄的目錄名必須是mysql,否則會影響通用二進制程序包里的腳本執行錯誤。
原創文章,作者:螃蟹,如若轉載,請注明出處:http://www.www58058.com/8787
思路清晰~
我在使用二進制安裝mariadb初始化的時候報這個錯,請指教!
[root@localhost mysql]# scripts/mysql_install_db –user=mysql
Installing MariaDB/MySQL system tables in ‘/data/mysql/’ …
./bin/mysqld: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory
Installation of system tables failed! Examine the logs in
/data/mysql/ for more information.
The problem could be conflicting information in an external
my.cnf files. You can ignore these by doing:
shell> ./bin/scripts/mysql_install_db –defaults-file=~/.my.cnf
數據庫版本:mariadb-10.1.8-linux-x86_64,操作系統:CentOS 6.7 64位。求指教?
二進制安裝mariadb初始化的時候報這個錯:system tables in ‘/data/mysql’ … ./bin/mysqld: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory Installation of system tables failed!
MariaDB啟動時候:
[root@localhost mysql]# service mysqld start
Starting MySQL. ERROR!
[root@localhost mysql]# cat /data/mysql/localhost.localdomain.err
151109 19:03:03 mysqld_safe Starting mysqld daemon with databases from /data/mysql
/usr/local/mysql/bin/mysqld: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory
151109 19:03:03 mysqld_safe mysqld from pid file /data/mysql/localhost.localdomain.pid ended