Linux下—mysql資料庫的多例項實現
阿新 • • 發佈:2018-11-29
準備環境:
centos7 安裝 yum install mariadb-server
規劃實現多例項的目錄結構、
埠:3306,3307, 3308
每個例項存放資料庫的資料夾 /data/mysql{3306,3307,3308}
/data/mysql/3306/{etc,soket,log,data,pid,bin}
在data/資料夾下建立mysql所需的資料資料夾
[[email protected] data]# mkdir /data/mysql/{3306,3307,3308}/{data,etc,bin,pid,log,socket} -pv
參考系統安裝mysql後的家目錄所有者,所屬組的屬性
[[email protected] data]# ll /var/lib/mysql/ -d drwxr-xr-x 5 mysql mysql 177 Sep 30 10:41 /var/lib/mysql/ [[email protected] data]# ll /var/lib/mysql/ drwx------ 2 mysql mysql 4096 Sep 30 10:41 mysql srwxrwxrwx 1 mysql mysql 0 Sep 30 10:41 mysql.sock drwx------ 2 mysql mysql 4096 Sep 30 10:41 performance_schema drwx------ 2 mysql mysql 6 Sep 30 10:41 test
修改例項資料庫的所有者,所屬組許可權
[[email protected] data]# chown mysql:mysql mysql ##修改例項資料庫的所有者,所屬組許可權
預設生成資料庫檔案的指令碼路徑:
[[email protected] data]#rpm -ql mariadb-server
/usr/bin/mysql_install_db
[[email protected] data]# /usr/bin/mysql_install_db --help ##檢視指令碼用法
[[email protected] data]# /usr/bin/mysql_install_db --datadir=/data/mysql/3306/data ###生成資料庫檔案
[[email protected] data]# /usr/bin/mysql_install_db --datadir=/data/mysql/3307/data ###生成資料庫檔案
[[email protected] data]# /usr/bin/mysql_install_db --datadir=/data/mysql/3308/data ###生成資料庫檔案
準備配置檔案,並修改配置檔案
[root[email protected] mysql]# cp my.cnf /data/mysql/3306/etc/ ###拷貝配置檔案並修改
[[email protected] mysql]# cp my.cnf /data/mysql/3307/etc/ ###拷貝配置檔案並修改
[[email protected] mysql]# cp my.cnf /data/mysql/3308/etc/ ###拷貝配置檔案並修改
[mysqld]
port=3306
datadir=/data/mysql/3306/data
socket=/data/mysql/3306/socket/mysql.sock
[mysqld_safe]
log-error=/data/mysql/3306/log/mariadb.log
pid-file=/data/mysql/3306/pid/mariadb.pid ###配置檔案需要修改的內容,其它3307、3308例項同理都修改
準備啟動程式檔案
#!/bin/bash
port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/data/mysql"
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
啟動檔案就是二進位制編譯安裝時在安裝包中的;support-files資料夾中的
[[email protected] 3306]# /bin/mysqld start ##啟動程式
LISTEN 0 50 *:3306
[[email protected] 3306]# ../3307/bin/mysqld start ##啟動程式
LISTEN 0 50 *:3307
[[email protected] 3306]# ../3308/bin/mysqld start ##啟動程式
LISTEN 0 50 *:3308
MariaDB [(none)]> show variables like "port"; ##檢視當前資料庫連線埠
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
設定開機自動啟動指令碼
[[email protected] ~]# cp /data/mysql/3306/bin/mysqld /etc/init.d/mysql3306
[[email protected] ~]#vim /etc/init.d/mysql3306
chkconfig:345 20 800
description: mysql 3306 ##新增這兩行
[[email protected] ~]# chkconfig --add mysql3306 ##加入開機執行列表
或者; 在開機路徑裡新增啟動指令碼路徑 /etc/rc.local
/data/mysql/3306/bin/mysqld
補充:[[email protected] ~]# rpm -ql mariadb-server ###二進位制程式路徑
/usr/libexec/mysqld