mariadb——多種方式部署及多實例部署

背景

  

mariadb介紹

  
  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

3種方式部署

  

經過yum方式安裝

  
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

mariadb——多種方式部署及多實例部署

  
  

centos7 安裝二進制mariadb-10.2.15

  

檢查本機的配置環境

  
關閉selinux ,清除iptables規則緩存

setenforce 0
    iptables -F
    iptables -X

  

獲取二進制包

  
在官方下載頁https://downloads.mariadb.org/mariadb/10.2.15/#
下找到以下包(這裏是64位包)下載到本地
mariadb——多種方式部署及多實例部署
  安全

建立用戶組和對應目錄

  
建立用戶和組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 加此行

mariadb——多種方式部署及多實例部署
初始化數據庫

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密碼

mariadb——多種方式部署及多實例部署
  
  

centos7.4 源碼編譯安裝 mariadb-10.2.15

  

配置開發環境,預先安裝須要的包

  
安裝開發環境工具包

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/#
mariadb——多種方式部署及多實例部署
  

編譯安裝

  
#參考文檔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

mariadb——多種方式部署及多實例部署
參數詳解

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

mariadb——多種方式部署及多實例部署
修改啓動腳本

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

  
  

mariadb實現多實例

  

安裝mariadb

  
爲了省事就直接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

mariadb——多種方式部署及多實例部署
將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

mariadb——多種方式部署及多實例部署

編寫啓動腳本並拷貝到對應路徑
示例腳本

#!/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

mariadb——多種方式部署及多實例部署
mariadb——多種方式部署及多實例部署

  

啓動服務並鏈接數據庫

  
啓動服務

/mysqldb/3308/mysqld start 

 /mysqldb/3307/mysqld start 

 /mysqldb/3306/mysqld start

mariadb——多種方式部署及多實例部署

鏈接數據庫

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%';

mariadb——多種方式部署及多實例部署

相關文章
相關標籤/搜索