1. 程式人生 > >Linux下—mysql資料庫的多例項實現

Linux下—mysql資料庫的多例項實現

準備環境:

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