MariaDB多實例
阿新 • • 發佈:2018-08-17
then login service val soc one datadir 目錄 code MariaDB多實例:
環境和思路:
centos7.4
yum安裝實現。
一個版本mysql通過多個端口實現
規劃3個實例的端口:3306/3307/3308。
將各自的配置文件、日誌文件、pid、socket單獨存放。
安裝MariaDB:
[root@tang ~]#yum install mariadb-server
三個數據庫的數據都放在獨自的實例中:
[root@tang ~]#mkdir /mysqldb/{3306,3307,3308}/{etc,socket,pid,log,data} -pv
查看目錄結構:
[root@tang ~]#tree /mysqldb/ /mysqldb/ ├── 3306 │ ├── data │ ├── etc │ ├── log │ ├── pid │ └── socket ├── 3307 │ ├── data │ ├── etc │ ├── log │ ├── pid │ └── socket └── 3308 ├── data ├── etc ├── log ├── pid └── socket
由於是yum安裝mysql賬號已經被創建好了
[root@tang ~]#getent passwd mysql
mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin
修改數據庫目錄的所有者和所有組:
[root@tang ~]#chown -R mysql.mysql /mysqldb
生成三個數據庫各自的數據庫文件:
[root@tang ~]#mysql_install_db --datadir=/mysqldb/3306/data --user=mysql --basedir=/usr [root@tang ~]#mysql_install_db --datadir=/mysqldb/3307/data --user=mysql --basedir=/usr [root@tang ~]#mysql_install_db --datadir=/mysqldb/3308/data --user=mysql --basedir=/usr
準備配置文件:
根據3個不同的實例準備3個配置文件:
思路:用/etc/my.cnf 當模板:
將配置文件考到各自的文件下:
[root@tang ~]#cp /etc/my.cnf /mysqldb/3306/etc/
[root@tang ~]#cp /etc/my.cnf /mysqldb/3307/etc/
[root@tang ~]#cp /etc/my.cnf /mysqldb/3308/etc/
修改各自的配置文件3306/3307/3308:
[root@tang ~]#vim /mysqldb/3306/etc/my.cnf [mysqld] port=3306 (手動必須添加) datadir=/mysqldb/3306/data socket=/mysqldb/3306/socket/mysql.sock [mysqld_safe] log-error=/mysqldb/3306/log/mariadb.log pid-file=/mysqldb/3306/pid/mariadb.pid #!includedir /etc/my.cnf.d(註釋掉)
==> 端口為3307/3308的配置文件也要手動修改==
準備啟動服務腳本:
參考格式:
[root@tang ~]#cat /usr/lib/systemd/system/mariadb.service
啟動的關鍵命令:
ExecStart=/usr/bin/mysqld_safe --basedir=/usr
停止yum安裝的mysql服務防止沖突:
[root@tang ~]#systemctl stop mariadb
運行創建啟動腳本:
將腳本考入對應的目錄裏:
==> 將腳本分別存個在各自的路徑下3306/3307/3308,將prot改為各自的端口號運行。==
[root@tang ~]#rz /mysqldb/3306/mysqld
[root@tang ~]#rz /mysqldb/3307/mysqld
[root@tang ~]#rz /mysqldb/3308/mysqld
==> 將腳本裏對應的端口和數據庫路徑編輯正確==
#!/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
腳本考到各自的運行路徑下:
[root@tang ~]#cp /mysqldb/3306/mysqld /mysqldb/3307/(配置文件端口改為port=3307)
[root@tang ~]#cp /mysqldb/3306/mysqld /mysqldb/3308/(配置文件端口改為port=3308)
設置權限:
密碼會放在mysqld目錄裏所有權限設置的安全一些
[root@tang ~]#chmod 700 /mysqldb/3306/mysqld
[root@tang ~]#chmod 700 /mysqldb/3307/mysqld
[root@tang ~]#chmod 700 /mysqldb/3308/mysqld
啟動服務:
[root@tang ~]#/mysqldb/3306/mysqld start
[root@tang ~]#/mysqldb/3307/mysqld start
[root@tang ~]#/mysqldb/3308/mysqld start
查看服務啟動:
[root@tang ~]#ss -ntl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3307 *:*
LISTEN 0 50 *:3308 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 :::111 :::*
測試連接:
需要用sock文件連接mysql(指定數據庫路徑連接)
[root@tang ~]#mysql -S /mysqldb/3306/socket/mysql.sock
[root@tang ~]#mysql -S /mysqldb/3307/socket/mysql.sock
[root@tang ~]#mysql -S /mysqldb/3308/socket/mysql.sock
通過查看端口判斷進入是哪個實例:
MariaDB [(none)]> show variables like ‘port‘;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
設置口令:
[root@tang ~]#mysqladmin -uroot -S /mysqldb/3306/socket/mysql.sock password ‘centos‘
關閉mysql時需要輸入口令:
[root@tang ~]#/mysqldb/3306/mysqld stop
Stoping MySQL...
Enter password:
把口令添加到腳本裏:
[root@tang ~]#vim /mysqldb/3306/mysqld
mysql_pwd="centos"
這時關閉mysql不需要輸入口令
進入mysql需要口令了:
[root@tang ~]#mysql -pcentos -S /mysqldb/3306/socket/mysql.sock
MariaDB多實例