溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

初識MariaDB之2——MariaDB多實例安裝

發(fā)布時間:2020-07-10 16:12:27 來源:網(wǎng)絡 閱讀:1266 作者:qiao645 欄目:MySQL數(shù)據(jù)庫

一、背景介紹

MariaDB多實例就是在一臺機器上開啟多個不同的服務端口,運行多個MySQL服務進程,通過不同的socket監(jiān)聽不同的服務端口來提供各自的、互不干涉的服務,各個實例可以根據(jù)不同的配置文件設置相互隔離

二、操作步驟

1.安裝MariaDB(略)

2.初始化數(shù)據(jù)庫(以3306為例)

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/multidata/3306 --user=mysql

3.修改配置文件(以3306為例)

當有多臺MariaDB服務器時server-id不能一樣

初識MariaDB之2——MariaDB多實例安裝初識MariaDB之2——MariaDB多實例安裝

4.啟動服務(以3306為例)

/usr/local/mysql/bin/mysqld_safe  --defaults-file=/multidata/3306/my.cnf 2>&1 > /dev/null &

如果忘記密碼,啟動方式為:

/usr/local/mysql/bin/mysqld_safe --defaults-file=/multidata/3307/my.cnf --skip-grant-tables 2>&1 > /dev/null &

此時要注意--defaults-file選項要放在--skip-grant-tables之前

5.登陸數(shù)據(jù)庫(以3306為例)

/usr/local/mysql/bin/mysql -S /multidata/3306/mysql.sock

如果忘記密碼,skip啟動后以空密碼登陸:

mysql -uroot -p -S /multidata/3307/mysql.sock

6.設置數(shù)據(jù)庫root賬戶密碼(以3306為例)

/usr/local/mysql/bin/mysqladmin -uroot password '123456' -S /multidata/3306/mysql.sock

如果是修改密碼,命令為:

/usr/local/mysql/bin/mysqladmin -uroot -p123456 password 'new' -S /multidata/3306/mysql.sock

7.關(guān)閉服務(以3306為例)

mysqladmin -uroot -p123456 -S /multidata/3306/mysql.sock shutdown

三、編寫啟動腳本

為方便使用時啟動和關(guān)閉,可以自己編寫一個腳本并給與執(zhí)行權(quán)限取代原有的mysqld執(zhí)行文件,腳本內(nèi)容如下:

#!/bin/bash

. /etc/init.d/functions

PORT=$2

USER=root

PASSWD=123456

MYSQLBIN='/usr/local/mysql/bin'

SOCKETFILE="/multidata/${PORT}/mysql.sock"

PIDFILE="/multidata/${PORT}/mysql.pid"

MYCNF="/multidata/${PORT}/my.cnf"

[[ $# -eq 2 ]] || {

   echo "Usage: $0 {start|stop|restart|reload} {PORT}"

   exit 1

}

mysql_start() {

   [[ -e "$SOCKETFILE" ]] && {

       action "MySQL port: $PORT IS already running" /bin/false

       exit 0

   } || {

       action "Starting MySQL...  please wait" /bin/true

       $MYSQLBIN/mysqld_safe --defaults-file=$MYCNF &> /dev/null &

   }

   [[ "$?" == "0" ]] && {

       action "MySQL has been Started" /bin/true

   } || {

       action "MySQL Started" /bin/false

   }

}

mysql_stop() {

   [[ ! -e "$SOCKETFILE" ]] && {

       action "MySQL port:$PORT was already down" /bin/false

   } || {

       $MYSQLBIN/mysqladmin -u $USER -p$PASSWD -S $SOCKETFILE shutdown &>/dev/null

   }

   [[ "$?" == 0 ]] && {

       action  "MySQL port:$PORT has been Stopped" /bin/true

   }

}

case "$1" in

'start')

   mysql_start

   ;;

'stop')

   mysql_stop

   ;;

'restart'|'reload')

   mysql_stop

   sleep 3

   mysql_start

   ;;

*)

   echo "Usage: $0 {start|stop|restart|reload} {PORT}"

esac

注意:該腳本中帶數(shù)據(jù)庫root賬戶的密碼(2臺服務器密碼一樣),所以在生產(chǎn)環(huán)境中建議將權(quán)限改為700以減小安全隱患

補充說明1:多個實例共用同一個my.cnf配置文件

在生產(chǎn)環(huán)境中建議將多個實例的配置文件分開,這樣忘記密碼時候便于指定配置文件通過skip-grant-tables選項找回。作為多實例的另一種方法,也可以使用同一個配置文件集中管理,以下在之前基礎(chǔ)上創(chuàng)建3308,3309實例進行說明,步驟如下:

1.創(chuàng)建3308,3309的數(shù)據(jù)目錄

mkdir -pv /unidata/{3308,3309}

chown -R mysql.mysql /unidata

cp mysqld_multi.server /etc/init.d/mysqld

cp my-huge.cnf /etc/my.cnf

2.初始化數(shù)據(jù)(以3308為例)

/usr/local/mysql/scripts/mysql_install_db --basedir=/usr/local/mysql --datadir=/unidata/3308 --user=mysql

3.修改/etc/my.cnf配置文件

[mysqld_multi]

mysqld=/usr/local/mysql/bin/mysqld_safe

mysqladmin=/usr/local/mysql/bin/mysqladmin

log = /unidata/mysql_multi.log

user = root

#password =

如果該地方不是root用戶,下面則需要在數(shù)據(jù)庫為該用戶添加shutdown權(quán)限,否則mysqld_multi將無法關(guān)閉實例

[mysqld3308]

socket=/unidata/3308/mysql.sock

port=3308

server-id=1

pid-file=/unidata/3308/mysql.pid

datadir=/unidata/3308

user=mysql #必須要指定1個用戶,否則實例無法啟動

[mysqld3309]

socket=/unidata/3309/mysql.sock

port=3309

server-id=2

pid-file=/unidata/3309/mysql.pid

datadir=/unidata/3309

user=mysql

注意:多個實例除了mysqld號不同外,每個實例內(nèi)的pid、port、socket和server-id也不能相同

4.檢測服務能否正常啟動和關(guān)閉

cp /usr/local/mysql/bin/mysqld_multi /etc/init.d/mysqld_multi

/etc/init.d/mysqld_multi start 3308,3309

/etc/init.d/mysqld_multi report

初識MariaDB之2——MariaDB多實例安裝初識MariaDB之2——MariaDB多實例安裝

/etc/init.d/mysqld_multi stop 3308,3309

初識MariaDB之2——MariaDB多實例安裝初識MariaDB之2——MariaDB多實例安裝

補充說明2:查看數(shù)據(jù)庫字符集

MariaDB在編譯安裝時可以指定默認字符集,查看數(shù)據(jù)庫字符集命令:

show create database mysql \G

初識MariaDB之2——MariaDB多實例安裝初識MariaDB之2——MariaDB多實例安裝


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI