MariaDB數據庫管理系統是MySQL的一個分支,主要由開源社區在維護,採用GPL受權許可 MariaDB的目的是徹底兼容MySQL,包括API和命令行,使之能輕鬆成爲MySQL的代替品。在存儲引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。 MariaDB由MySQL的創始人Michael Widenius(英語:Michael Widenius)主導開發,他早前曾以10億美圓的價格,將本身建立的公司MySQL AB賣給了SUN,此後,隨着SUN被甲骨文收購,MySQL的全部權也落入Oracle的手中。MariaDB名稱來自Michael Widenius的女兒Maria的名字。
MariaDB基於事務的Maria存儲引擎,替換了MySQL的MyISAM存儲引擎,它使用了Percona的 XtraDB,InnoDB的變體,分支的開發者但願提供訪問即將到來的MySQL 5.4 InnoDB性能。這個版本還包括了 PrimeBase XT (PBXT) 和 FederatedX存儲引擎。
mysql
centos(或者其餘發行版)都在本身的官方源內包含了相應的版本能夠直接經過本身的包管理器安裝linux
#centos 7 yum install mariadb-server -y #centos 6 yum install mysql-server -y
一般狀況下發行版內置庫的maraidb的版本都比較老。爲了照顧用戶渴望使用新版本而又想方便管理,mariadb官方提供了一個新版本的更新源。用戶能夠根據提示去配置本身的更新源去使用新版的mariadb,官方連接以下
https://downloads.mariadb.org/mariadb/repositories/#mirror=tuna&distro=CentOS&distro_release=centos7-amd64--centos7&version=10.2c++
示例:這裏以centos7爲例。
在 /etc/yum.repos.d/下建立maraidb.reposql
vim /etc/yum.repos.d/mariadb.repo
在文件內寫入以下字段數據庫
# MariaDB 10.2 CentOS repository list - created 2018-06-05 07:06 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.2/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1
保存後清除yum緩存,並從新構建緩存vim
yum clean all yum makecache
等待緩存構建完成後就能夠經過yum直接安裝管理新版的mariadb了。centos
#查看mariadb的版本信息 yum info mariadb-server #安裝新版mariadb,默認優先安裝新版 yum install mariadb-server -y
關閉selinux ,清除iptables規則緩存
setenforce 0 iptables -F iptables -X
在官方下載頁https://downloads.mariadb.org/mariadb/10.2.15/#
下找到以下包(這裏是64位包)下載到本地
安全
建立用戶和組bash
useradd -r -d /data/mysqldb -s /sbin/nologin mysql
建立目錄
mkdir -pv /data/mysqldb chown mysql:mysql /data/mysqldb chmod 770 /data/mysqldb
解壓壓縮包並指定目錄
tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/
建立軟鏈接方便往後升級,修改文件權限
cd /usr/local ln -s mariadb-10.2.15-linux-x86_64/ mysql chown -R root:root mysql/
配置環境變量
echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh #重讀環境信息,使變量生效 . /etc/profile.d/mysql.sh
準備配置文件而且修改成合適的參數
cd /usr/local/mysql cp support-files/my-huge.cnf /etc/my.cnf #修改配置文件 vim /etc/my.cnf [mysqld] datadir=/data/mysqldb 加此行
初始化數據庫
cd /usr/local/mysql scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
準備啓動腳本並啓動服務
cd /usr/local/mysql cp support-files/mysql.server /etc/init.d/mysqld chkconfig --add mysqld service mysqld start
作安全初始化
mysql_secure_installation
配置完成後登錄數據庫驗證
mysql -u用戶 -p密碼
安裝開發環境工具包
yum groupinstall "Development Tools" -y
安裝須要的其餘包
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boostdevel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel
建立目錄和用戶
mkdir /data useradd -r –s /bin/false -m –d /data/mysqldb/ mysql #ps: # /bin/false是最嚴格的禁止login選項,一切服務都不能用,而/sbin/nologin只是不容許系統login,可使用其餘ftp等服務
獲源碼包,官方連接https://downloads.mariadb.org/mariadb/10.2.15/#
#參考文檔mysql,真心吐槽mariadb何時也來個正式的文檔
https://dev.mysql.com/doc/
解壓源碼包
tar xvf mariadb-10.2.12.tar.gz
進入目錄並指定編譯參數
cd mariadb-10.2.15 #mariadb使用的cmake進行編輯安裝 cmake . \ -DCMAKE_INSTALL_PREFIX=/app/mysql \ -DMYSQL_DATADIR=/data/mysqldb/ \ -DSYSCONFDIR=/etc \ -DMYSQL_USER=mysql \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \ -DWITH_DEBUG=0 \ -DWITH_READLINE=1 \ -DWITH_SSL=system \ -DWITH_ZLIB=system \ -DWITH_LIBWRAP=0 \ -DENABLED_LOCAL_INFILE=1 \ -DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci #安裝 make &&make install
參數詳解
cmake . \ #安裝目錄,各人按喜愛設置 -DCMAKE_INSTALL_PREFIX=/app/mysql \ #數據庫目錄,各人按喜愛設置 -DMYSQL_DATADIR=/data/mysqldb/ \ #數據庫配置文件目錄 -DSYSCONFDIR=/etc \ #指定運行用戶 -DMYSQL_USER=mysql \ #WITH_xxx_STORAGE_ENGINE將xxx存儲引擎靜態編譯到服務器中 -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITHOUT_MROONGA_STORAGE_ENGINE=1 \ #是否包含調試支持 -DWITH_DEBUG=0 \ #是否使用readline捆綁在發行版中的庫。MySQL 5.6.5中刪除了這個選項,由於readline它再也不被捆綁。 #這裏能夠再也不指定 -DWITH_READLINE=1 \ #SSL的支持類型 #ssl_type 能夠是如下值之一: #yes:使用系統SSL庫(若是存在),不然使用與發行版捆綁的庫。 #bundled:使用捆綁在發行版中的SSL庫。這是默認設置。 #system:使用系統SSL庫。 -DWITH_SSL=system \ #某些功能要求服務器與壓縮庫支持來構建,如 COMPRESS()與 UNCOMPRESS()功能,並在客戶端/服務器協議的壓縮。該 WITH_ZLIB指示的源zlib支持: #bundled:使用zlib與發行版捆綁在一塊兒的庫。這是默認設置。 #system:使用系統 zlib庫。 -DWITH_ZLIB=system \ #是否包含libwrap(TCP封裝)支持 -DWITH_LIBWRAP=0 \ #該選項控制LOCALMySQL客戶端庫的編譯默認 功能。所以,沒有明確安排的客戶端會LOCAL根據ENABLED_LOCAL_INFILEMySQL構建時指定的設置禁用或啓用功能 。 -DENABLED_LOCAL_INFILE=1 \ #服務器偵聽套接字鏈接的Unix套接字文件路徑。這必須是絕對路徑名稱。默認是/tmp/mysql.sock。 #該值能夠在服務器啓動時使用該--socket選項進行設置 。 -DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock \ #服務器字符集。默認狀況下,MySQL使用 latin1(cp1252西歐)字符集。 #charset_name能夠是一種 binary,armscii8, ascii,big5, cp1250,cp1251, cp1256,cp1257, cp850,cp852, cp866,cp932, dec8,eucjpms, euckr,gb2312, gbk,geostd8, greek,hebrew, hp8,keybcs2, koi8r,koi8u, latin1,latin2, latin5,latin7, macce,macroman, sjis,swe7, tis620,ucs2, ujis,utf8, utf8mb4,utf16, utf16le,utf32。容許的字符集在cmake/character_sets.cmake文件中被列爲 值CHARSETS_AVAILABLE。 #該值能夠在服務器啓動時使用該--character_set_server選項進行設置 。 -DDEFAULT_CHARSET=utf8 \ #服務器默認排序字符集。默認狀況下,MySQL使用 latin1_swedish_ci。使用該 SHOW COLLATION語句來肯定每一個字符集可用的排序規則。 #該值能夠在服務器啓動時使用該--collation_server選項進行設置 。 -DDEFAULT_COLLATION=utf8_general_ci
準備環境變量
echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh . /etc/profile.d/mysql.sh
生成數據庫信息
cd /app/mysql/ scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql
生成並修改配置文件
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf vim /etc/my.cnf #指定數據目錄 [mysqld] datadir=/data/mysqldb
修改啓動腳本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld #修改 vim /etc/init.d/mysqld basedir=/app/mysql datadir=/data/mysqldb
啓動服務
修改/app/mysql權限
chown mysql:root /app/mysql
添加服務並啓動
chkconfig --add mysqld service mysqld start
爲了省事就直接yum安裝了,其實不論如何安裝基本步驟都類似
yum install mariadb-server -y
關閉selinux 清空防火牆數據
getenforce 0 iptables -F iptables -X
創建目錄並修改權限
mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv chown -R mysql.mysql /mysqldb/
建立各自的數據庫信息
mysql_install_db --datadir=/mysqldb/3306/data --user=mysql mysql_install_db --datadir=/mysqldb/3307/data --user=mysql mysql_install_db --datadir=/mysqldb/3308/data --user=mysq
因爲是yum安裝的數據庫,因此配置文件已經生成,這裏僅須要略做修改便可
修改3306的配置文件
cp /etc/my.cnf /mysqldb/3306/etc/ #修改如下信息 vim /mysqldb/3306/etc/my.cnf [mysqld] port=3306 datadir=/mysqldb/3306/data socket=/mysqldb/3306/socket/mysql.sock [mysqld_safe] log-error=/mysqldb/3306/log/mariadb.log pid-file=/mysqldb/3306/pid/mariadb.pid #!includedir /etc/my.cnf.d
將3306實例的配置文件分別複製給3307和3308並修改
cp /mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/my.cnf cp /mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/my.cnf vim /mysqldb/3308/etc/my.cnf vim /mysqldb/3307/etc/my.cnf
編寫啓動腳本並拷貝到對應路徑
示例腳本
#!/bin/bash port=3306 mysql_user="root" mysql_pwd="" cmd_path="/usr/bin" mysql_basedir="/mysqldb" mysql_sock="${mysql_basedir}/${port}/socket/mysql.sock" function_start_mysql() { if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...\n" ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf &> /dev/null & else printf "MySQL is running...\n" exit fi } function_stop_mysql() { if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped...\n" exit else printf "Stoping MySQL...\n" ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown fi } function_restart_mysql() { printf "Restarting MySQL...\n" function_stop_mysql sleep 2 function_start_mysql } case $1 in start) function_start_mysql ;; stop) function_stop_mysql ;; restart) function_restart_mysql ;; *) printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}\n" esac
拷貝到對應目錄
cp mysqld /mysqldb/3306/ cp mysqld /mysqldb/3307/ cp mysqld /mysqldb/3308/
修改權限
chmod 700 /mysqldb/3308/mysqld chmod 700 /mysqldb/3307/mysqld chmod 700 /mysqldb/3306/mysqld
修改對應的信息
vim /mysqldb/3306/mysqld vim /mysqldb/3307/mysqld vim /mysqldb/3308/mysqld
啓動服務
/mysqldb/3308/mysqld start /mysqldb/3307/mysqld start /mysqldb/3306/mysqld start
鏈接數據庫
mysql -S /mysqldb/3308/socket/mysql.sock mysql -S /mysqldb/3307/socket/mysql.sock mysql -S /mysqldb/3306/socket/mysql.sock
驗證是否以不一樣端口登錄
#在mariadb內輸入 show variables like '%port%';