MariaDB多實例

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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章