YUM安裝的MySQL(MariaDB)實現多實例運行

生產環境中,可能需要多個數據庫同時在線。但一臺服務器只運行一個數據庫實例勢必會引起資源的浪費,因此,本文介紹如何將yum安裝的MySQL多開,實現多實例運行。(二進制與編譯安裝步驟與此類似)

0、首先要安裝好MySQL

yum install mariadb-server

1、創建好多實例需要使用的文件夾,此處以將要開通的端口號命名

mkdir -pv /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data}

2、為數據庫文件夾設置好權限

chown -R mysql.mysql /mysqldb/

3、在下列文件夾中生成數據庫文件

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=mysql

4、將配置文件范本復制到對應文件夾下

cp /etc/my.cnf /mysqldb/3306/etc/
cp /etc/my.cnf /mysqldb/3307/etc/
cp /etc/my.cnf /mysqldb/3308/etc/

5、并分別對其進行修改

vim /mysqldb/3306/etc/my.cnf
vim /mysqldb/3307/etc/my.cnf
vim /mysqldb/3308/etc/my.cnf

修改如下部分:

如果使用vim編輯器,可在命令模式下輸入:s%/3306/目標端口號,即可實現批量替換
port=3306 #←端口號需要根據各文件夾進行調整
datadir=/mysqldb/3306/data
socket=/mysqldb/3306/socket/mysql.sock
log-error=/mysqldb/3306/log/mariadb.log
pid-file=/mysqldb/3306/pid/mariadb.pid
#!includedir /etc/my.cnf.d? #這一行要注釋掉,不然會造成干擾

6、將預先寫好的服務腳本上傳到系統(本文是家目錄),然后分別拷貝到指定數據庫的文件夾下

rz #啟動腳本見附錄
cp mysqld /mysqldb/3306/
cp mysqld /mysqldb/3307/
cp mysqld /mysqldb/3308/

7、并分別賦予(root)以執行權限

chmod 700 /mysqldb/3308/mysqld
chmod 700 /mysqldb/3307/mysqld
chmod 700 /mysqldb/3306/mysqld

8、修改啟動腳本中對應的路徑及端口號,修改方法同理,vim下查找替換可大幅提高效率

vim /mysqldb/3306/mysqld
vim /mysqldb/3307/mysqld
vim /mysqldb/3308/mysqld

修改:
port=3306
cmd_path=“/usr/bin”

9、需要停止現有正在運行的實例,避免干擾

systemctl stop mariadb #停止現有正在運行的實例

10、嘗試啟動三個實例

/mysqldb/3308/mysqld start
/mysqldb/3307/mysqld start
/mysqldb/3306/mysqld start

11、查看對應端口是否打開,確認服務是否正常運行

ss -utln
ss -utln | grep 3306
ss -utln | grep 3307
ss -utln | grep 3308

12、連接想要連接的數據庫,開始使用吧

mysql -S /mysqldb/3308/socket/mysql.sock

 

————————————————————分割線————————————————————

13、附錄:啟動服務腳本(僅供參考):

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

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/100916

(2)
無名無名
上一篇 2018-06-12
下一篇 2018-06-12

相關推薦

  • Linux-文件管理

    文件系統分層結構標準 http://www.pathname.com/fhs http://www.pathname.com/fhs/pub/fhs-2.3.pdf 包括 boot bin sbin etc lib64 tmp usr mnt media dev var home net misc srv proc sys root opt selinux …

    2018-03-30
  • sed命令

    sed命令 sed是一種流編輯器,用于對文本逐行讀取逐行處理,處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(patternspace),接著用sed命令處理緩沖區中的內容,處理完成后,把處理后結果輸出到標準輸出。接著處理下一行,這樣不斷重復,直到文件末尾。 命令語法 sed [OPTION]… {script-only-if-no-othe…

    Linux筆記 2018-06-12
  • 小白加薪升職記第二篇–Linux長征開始

    記錄文件管理命令及Linux命令行擴展功能

    Linux筆記 2018-05-19
  • mysql sql語言 增刪改查

    數據庫 數據 增create insert 刪drop delete 改alter update 查 select 創建數據庫db1 查看數據庫目錄db1 刪除數據庫 查看字符集列表 查看表 創建表 查看表的定義 查看表的屬性信息 創建表 查看表的定義 查看表的具體信息 查看完整表的定義 查看user表的定義 利用別的表的信息創建表 創建一張表像另一張 表 …

    Linux筆記 2018-06-11
  • RHEL7.2搭建yum源

    我在RHEL7.2搭建本地yum時發現突然報錯了。 查看了一下報錯信息顯示 加載插件:langpacks,產品ID,搜索禁用回購,訂閱管理器該系統未注冊到紅帽訂閱管。你可以使用subscription-m急于注冊.repolist:0由于Redhat的yum在線更新是收費的,如果沒有注冊的話是不能使用的,即不能在線安裝軟件。 我只好用CentOS的yum來替…

    2018-04-19
欧美性久久久久