MySQL單機多實例配置實戰

本文主要介紹在CentOS6.9下快速安裝和部署MySQL多實例mysql


基本流程:
linux

1.Mysql多實例介紹sql

2.安裝MySQL多實例數據庫

3.建立MySQL多實例的數據文件目錄以及配置文件安全

4.建立MySQL多實例的啓動文件服務器

5.配置文件權限和軟連接app

6.初始化MySQL多實例的數據庫文件socket

7.啓動MySQL多實例數據庫tcp

8.配置和管理MySQL多實例數據庫ide




流程一:Mysql多實例介紹


  簡單的說,Mysql多實例就是在一臺服務器上同時開啓多個不一樣的服務端口(如 : 3306/3307/3308)同時運行多個Mysql服務器,這些服務進程經過不一樣的socket來監聽不一樣的服務端口來提供服務

  這些Mysql多實例共用一套Mysql安裝程序,使用不一樣的my.cnf配置文件,啓動程序,和數據文件,在提供服務時,多實例Mysql在邏輯上來看是各自獨立的,他們根據配置文件對應設定值,得到服務器相應的資源




流程二:安裝MySQL多實例


1)安裝MySQL所需的依賴包

yum install ncurses-devel libaio-devel -y

yum install cmake -y


2)獲取MySQL二進制包以及安裝

useradd -s /sbin/nologin  -M mysql

id mysql

wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.32-linux2.6-x86_64.tar.gz 解壓並建立軟鏈接(這是二進制安裝包,僅須要解壓就能夠,不須要cmake/configure,make&&make install等過程)

tar xf mysql-5.5.32-linux2.6-x86_64.tar.gz

mkdir -p /application/

mv mysql-5.5.32-linux2.6-x86_64  /application/mysql-5.5.32

ln -s /application/mysql-5.5.32/ /application/mysql

cd /application/mysql

ls -l support-files/*.cnf




流程三:建立MySQL多實例的數據文件目錄以及配置文件



mkdir -p /data/{3306,3307}/data


cd /data/3306

[root@localhost 3306]# cat my.cnf 

[mysqld]

basedir=/application/mysql

datadir=/data/3306

socket=/data/3306/mysql.sock

log-error=/data/3306/mysqlerr.log

log_bin=/data/3306/mysql-bin

binlog_format=row

skip_name_resolve=1

server_id=3306

port=3306


cd /data/3307

[root@localhost 3307]# cat my.cnf 

[mysqld]

basedir=/application/mysql

datadir=/data/3307

socket=/data/3307/mysql.sock

log-error=/data/3307/mysqlerr.log

log_bin=/data/3307/mysql-bin

binlog_format=row

skip_name_resolve=1

server_id=3307

port=3307

#實際工做中咱們都是拿早已配置好的模板來進行修改的,這裏用醉簡單的模板來作演示




流程四:建立MySQL多實例的啓動文件

cd /data/3306

[root@localhost 3306]# cat mysqld

. /etc/init.d/functions

. /etc/profile


Start='/application/mysql/bin/mysqld_safe --defaults-file=/data/3306/my.cnf --pid-file=/data/3306/3306.pid'

Stop='mysqladmin -uroot -S /data/3306/mysql.sock shutdown'

Port=`ss -tunlp|grep 3306|wc -l`

  

function START(){

 if [ $Port -ne 1 ];then

  $Start >/dev/null 2>&1 &

  sleep 3

  if [ $? -eq 0 ];then

   action 'MySQL 3306 Starting' /bin/true

  fi

 else

  action 'MySQL 3306 Already Exists' /bin/true

 fi

}

function STOP(){

 if [ $Port -ne 0 ];then

  $Stop

  if [ $? -eq 0 ];then

   action 'MySQL Stoping Successfuly' /bin/true

  fi

 else

  action 'MySQL already Stoped' /bin/true

 fi

}

function RESTART(){

 STOP

 sleep 1

 START

}

case $1 in

start)

 START

 ;;

stop)

 STOP

 ;;

restart)

 RESTART

 ;;

*)

 echo "Usage: $0 {start|stop|restart}"

 ;;

esac


cd /data/3307

[root@localhost 3307]# cat mysqld


. /etc/init.d/functions

. /etc/profile


Start='/application/mysql/bin/mysqld_safe --defaults-file=/data/3307/my.cnf --pid-file=/data/3307/3307.pid'

Stop='mysqladmin -uroot -S /data/3307/mysql.sock shutdown'

Port=`ss -tunlp|grep 3307|wc -l`

  

function START(){

 if [ $Port -ne 1 ];then

  $Start >/dev/null 2>&1 &

  sleep 3

  if [ $? -eq 0 ];then

   action 'MySQL 3307 Starting' /bin/true

  fi

 else

  action 'MySQL 3307 Already Exists' /bin/true

 fi

}

function STOP(){

 if [ $Port -ne 0 ];then

  $Stop

  if [ $? -eq 0 ];then

   action 'MySQL Stoping Successfuly' /bin/true

  fi

 else

  action 'MySQL already Stoped' /bin/true

 fi

}

function RESTART(){

 STOP

 sleep 1

 START

}

case $1 in

start)

 START

 ;;

stop)

 STOP

 ;;

restart)

 RESTART

 ;;

*)

 echo "Usage: $0 {start|stop|restart}"

 ;;

esac




流程五:配置文件權限和軟連接

[root@localhost 3307]# chown -R mysql.mysql /data/

[root@localhost 3307]# find /data/ -name mysqld|xargs ls -l

-rw-r--r--. 1 mysql mysql 794 May  3 11:55 /data/3306/mysqld

-rw-r--r--. 1 mysql mysql 794 May  3 11:55 /data/3307/mysqld

[root@localhost 3307]# find /data/ -name mysqld|xargs chmod 700

[root@localhost 3307]# ln -s  /application/mysql/bin/*  /usr/local/sbin/





流程六:初始化MySQL多實例的數據庫文件

cd /application/mysql/scripts

./mysql_install_db  --basedir=/application/mysql --datadir=/data/3306 --user=mysql

./mysql_install_db  --basedir=/application/mysql --datadir=/data/3307 --user=mysql

初始化數據庫後能夠看到對應實例目錄下會多了以下文件,省略部分

[root@localhost scripts]# tree /data/|head -10

/data/

├── 3306

│   ├── data

│   ├── my.cnf

│   ├── mysql

│   │   ├── columns_priv.frm

│   │   ├── columns_priv.MYD

│   │   ├── columns_priv.MYI

│   │   ├── db.frm

│   │   ├── db.MYD




流程七:啓動MySQL多實例數據庫

sed -i "s#/usr/local/mysql#/application/mysql#g"  /application/mysql/bin/mysqld_safe           #修改腳本執行路徑

[root@localhost scripts]# /data/3306/mysqld start

MySQL 3306 Starting                                        [  OK  ]

[root@localhost scripts]# /data/3307/mysqld start 

MySQL 3306 Starting                                        [  OK  ]

[root@localhost 3307]# netstat -tnlp | grep 330

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      7983/mysqld         

tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      8271/mysqld 





流程八:配置和管理MySQL多實例數據庫


1)加入開機自啓

[root@localhost 3306]# echo "#mysql  multi instances" >> /etc/rc.local 

[root@localhost 3306]# echo "/data/3306/mysqld start" >> /etc/rc.local          

[root@localhost 3306]# echo "/data/3307/mysqld start" >> /etc/rc.local  


2)登陸MySQL測試

[root@localhost 3306]# mysql -S /data/3306/mysql.sock         #mysql.sock用於區分登陸不一樣的實例

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.5.32-log MySQL Community Server (GPL)


Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| data               |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.01 sec)


mysql> select user();

+----------------+

| user()         |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.00 sec)


3)MySQL多實例數據庫的管理方法

無密碼狀況下登陸數據庫方法:

mysql -S /data/3306/mysql.sock

mysql -S /data/3307/mysql.sock

重啓對應實例數據庫的命令:

/data/3306/mysqld restart


4)MySQL安全配置

經過mysqladmin命令爲MySQL不一樣實例的數據庫設置獨立的密碼,命令以下:

[root@localhost 3306]# mysqladmin -u root -S /data/3306/mysql.sock password 'ywxi123'

[root@localhost 3306]# mysqladmin -u root -S /data/3307/mysql.sock password 'ywxi123'

[root@localhost 3306]# mysql -uroot -pywxi123 -S /data/3306/mysql.sock 

[root@localhost 3306]# mysql -uroot -pywxi123 -S /data/3307/mysql.sock 


5)再增長一個MySQL的實例

mkdir -p /data/3308/data

\cp /data/3306/mysqld /data/3308/

\cp /data/3306/my.cnf /data/3308/

sed -i 's/3306/3308/g' /data/3308/my.cnf

sed -i 's/3306/3308/g' /data/3308/mysqld 

chmod 700 /data/3308/mysqld

cd /application/mysql/scripts/

./mysql_install_db  --basedir=/application/mysql --datadir=/data/3308 --user=mysql

chown -R mysql:mysql /data/3308/

egrep "server_id|log_bin" /data/3308/my.cnf

 /data/3308/mysqld start

netstat -tnlp | grep 3308

相關文章
相關標籤/搜索