數據庫 mysqld_multi 多實例安裝
之前的文章裏面講述了, 數據庫 5.7數據庫安裝, 現在講解下基於5.7數據庫安裝多實例問題.
步驟如下:
- 創建數據文件路徑 並 授權
- 配置 my.cnf mysqld_multi模塊, 配置多實例
- 初始化數據庫 5.7
- 拷貝 mysqld_multi.server 到 /etc/init.d/mysqld_multi 並修改配置
- 啓動服務
- 關閉服務
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'