數據庫篇~基於mysql_multi的數據庫多實例安裝

數據庫 mysqld_multi 多實例安裝

之前的文章裏面講述了, 數據庫 5.7數據庫安裝, 現在講解下基於5.7數據庫安裝多實例問題.

步驟如下:

  1. 創建數據文件路徑 並 授權
  2. 配置 my.cnf mysqld_multi模塊, 配置多實例
  3. 初始化數據庫 5.7
  4. 拷貝 mysqld_multi.server 到 /etc/init.d/mysqld_multi 並修改配置
  5. 啓動服務
  6. 關閉服務
1. 創建數據文件路徑 並 授權

默認安裝根目錄 /service/application/

mkdir -P {3307,3308,3309}

cd 3307 && mkdir -P {data,logs,tmp,etc}
cd 3308 && mkdir -P {data,logs,tmp,etc}
cd 3309 && mkdir -P {data,logs,tmp,etc}

chown -R mysql:mysql 3307
chown -R mysql:mysql 3308
chown -R mysql:mysql 3309

2.配置 my.cnf mysqld_multi模塊, 配置多實例

默認安裝目錄 /service/application/mysql/etc

vim /service/application/mysql/etc/my.cnf 

#在配置文件裏面進行添加 mysqld_multi 模塊

[mysqld_multi]
mysqld=/service/application/mysql/bin/mysqld_safe
mysqladmin=/service/application/mysql/bin/mysqladmin
log=/service/application/mysql/logs/mysql_multi.log
user=hailong
password=123456

[mysqld1]
datadir=/service/application/3307/data
port=3307
server_id=3307
socket=/service/application/3307/tmp/mysql.sock
symbolic-links=0
character_set_server=utf8
pid-file=/service/application/3307/tmp/mysql7.pid

[mysqld2]
datadir=/service/application/3308/data
port=3308
server_id=3308
socket=/service/application/3308/tmp/mysql.sock
symbolic-links=0
character_set_server=utf8
pid-file=/service/application/3308/tmp/mysql8.pid

[mysqld3]
datadir=/service/application/3309/data
port=3309
server_id=3309
socket=/service/application/3309/tmp/mysql.sock
symbolic-links=0
character_set_server=utf8
pid-file=/service/application/3309/tmp/mysql9.pid

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

[mysql]
#character_set_server=utf8

3. 初始化數據庫 5.7
#進行數據庫初始化
#3309
/service/application/mysql/bin/mysqld --no-defaults --initialize --user=mysql --basedir=/service/application/mysql --datadir=/service/application/3309/data --explicit_defaults_for_timestamp
#3308
/service/application/mysql/bin/mysqld --no-defaults --initialize --user=mysql --basedir=/service/application/mysql --datadir=/service/application/3308/data --explicit_defaults_for_timestamp
#3307
/service/application/mysql/bin/mysqld --no-defaults --initialize --user=mysql --basedir=/service/application/mysql --datadir=/service/application/3307/data --explicit_defaults_for_timestamp
4. 拷貝 mysqld_multi.server/etc/init.d/mysqld_multi
cp /service/application/mysql/support-files/mysqld_multi.server /etc/init.d/mysqld_multi

#具體的代碼如下
#!/bin/sh
#
# A simple startup script for mysqld_multi by Tim Smith and Jani Tolonen.
# This script assumes that my.cnf file exists either in /etc/my.cnf or
# /root/.my.cnf and has groups [mysqld_multi] and [mysqldN]. See the
# mysqld_multi documentation for detailed instructions.
#
# This script can be used as /etc/init.d/mysql.server
#
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 64 36
# description: A very fast and reliable SQL database engine.
#
# Version 1.0
#

basedir=/service/application/mysql
bindir=/service/application/mysql/bin
conf=/service/application/mysql/etc/my.cnf

if test -x $bindir/mysqld_multi
then
  mysqld_multi="$bindir/mysqld_multi";
else
  echo "Can't execute $bindir/mysqld_multi from dir $basedir";
  exit;
fi

case "$1" in
    'start' )
        "$mysqld_multi" --defaults-extra-file=$conf start $2
        ;;
    'stop' )
        "$mysqld_multi" --defaults-extra-file=$conf stop $2
        ;;
    'report' )
        "$mysqld_multi" --defaults-extra-file=$conf report $2
        ;;
    'restart' )
        "$mysqld_multi" --defaults-extra-file=$conf stop $2
        "$mysqld_multi" --defaults-extra-file=$conf start $2
        ;;
    *)
        echo "Usage: $0 {start|stop|report|restart}" >&2
        ;;
esac
5. 啓動服務
/etc/init.d/mysqld_multi start
/etc/init.d/mysqld_multi report

#如果成功則顯示如下結果
[root@oldboy ~]# /etc/init.d/mysqld_multi report
Reporting MySQL servers
MySQL server from group: mysqld1 is running
MySQL server from group: mysqld2 is running
MySQL server from group: mysqld3 is running
6. 關閉服務
#單獨關閉服務
mysqladmin -uhailong -P 3308 -p shutdown -S '/service/application/3308/tmp/mysql.sock'
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章