Mysql多实例的配置

什么是多实例

简单地说,MySQL多实例就是在一台服务器上同时开启多个不同的服务端口(如:3306/3307)同时运行多个MySQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。 
  这些MySQL多实例共用一套MySQL安装程序,使用不同的my.cnf(也可以相同)配置文件、启动程序(也可以相同)和数据文件。在提供服务时,多实例MySQL在逻辑上看来是各自独立的,他们根据配置文件对应设定值,获得服务器响应数量的资源。 

在进行下面的操作时,首先你先安装好mysql才能进行下面的操作

安装mysql:http://www.cnblogs.com/HByang/p/9177505.html

多实例的配置

1、环境的介绍

[root@DB01 ~]$ cat /etc/redhat-release 

CentOS release 6.8 (Final)

[root@DB01 ~]$ uname -r

2.6.32-642.el6.x86_64

[root@DB01 ~]$ uname -m

x86_64

[root@DB01 ~]$ mysql -uroot -p123123 -e "select version();"

Warning: Using a password on the command line interface can be insecure.

+-----------+
| version() |
+-----------+
| 5.6.38    |
+-----------+

#单实例安装位置:

[root@DB01 ~]$ ll /application/

total 4

lrwxrwxrwx  1 root  root    26 Mar  6 13:23 mysql ->/application/mysql-5.6.38/

drwxr-xr-x 13 mysql mysql 4096 Mar  6 13:49 mysql-5.6.38

2、多实例的创建

[root@DB01 ~]$ mkdir -p /data/{3306,3307}

[root@DB01 ~]$ cp -a /application/mysql/my.cnf /data/3306/

[root@DB01 ~]$ cp -a /application/mysql/my.cnf /data/3307/

[root@DB01 ~]$ vim /data/3306/my.cnf

user = mysql

port = 3306

socket = /data/3306/mysql.sock

basedir = /application/mysql

datadir = /data/3306/data

pid-file = /data/3306/mysql.pid

log-error=/data/3306/mysql_3306.err

=================================>

[root@DB01 ~]$ vim /data/3307/my.cnf

user = mysql

port = 3307

socket = /data/3307/mysql.sock

basedir = /application/mysql

datadir = /data/3307/data

pid-file = /data/3307/mysql.pid

log-error=/data/3307/mysql_3307.err

3、创建启动脚本

[root@DB01 ~]$ vim /data/3306/mysqld

#!/bin/bash port
=3306 mysql_user="root" CmdPath="/application/mysql/bin" mysql_sock="/data/${port}/mysql.sock" mysqld_pid_file_path=/data/${port}/${port}.pid start(){ if [ ! -e "$mysql_sock" ];then printf "Starting MySQL...\n" /bin/sh ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null & sleep 3 else printf "MySQL is running...\n" exit 1 fi } stop(){ if [ ! -e "$mysql_sock" ];then printf "MySQL is stopped...\n" exit 1 else printf "Stoping MySQL...\n" mysqld_pid=`cat "$mysqld_pid_file_path"` if (kill -0 $mysqld_pid 2>/dev/null) then kill $mysqld_pid sleep 2 fi fi } restart(){ printf "Restarting MySQL...\n" stop sleep 2 start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) printf "Usage: /data/${port}/mysql {start|stop|restart}\n" esac

[root@DB01 ~]$ cp /data/3306/mysqld /data/3307/

[root@DB01 ~]$ vim /data/3307/mysqld

打开mysqld脚本只需修改第2行的端口号保存退出即可

4、进行赋权

[root@DB01 ~]$ chown -R mysql.mysql /data/

[root@DB01 ~]$ chmod +x /data/3306/mysqld 

[root@DB01 ~]$ chmod +x /data/3307/mysqld

5、进行初始化

cd /application/mysql/scripts

./mysql_install_db  --defaults-file=/data/3306/my.cnf --basedir=/application/mysql/ --datadir=/data/3306/data --user=mysql

echo $?   --->测试是否成功(0表示成功非0失败)

./mysql_install_db  --defaults-file=/data/3307/my.cnf --basedir=/application/mysql/ --datadir=/data/3307/data --user=mysql

echo $?

6、进行启动

 

[root@DB01 ~]$ /data/3306/mysqld start

Starting MySQL...

[root@DB01 ~]$ /data/3307/mysqld start

Starting MySQL...

[root@DB01 ~]$ netstat -lntup |grep mysql

tcp 0 0 :::3306 :::* LISTEN 2104/mysqld 

tcp 0 0 :::3307 :::* LISTEN 2719/mysqld

登录测试

[root@DB01 ~]$ mysql -S /data/3306/mysql.sock 

[root@DB01 ~]$ mysql -S /data/3307/mysql.sock 

 

到此我们的简单mysql多实例就算是配置完成了,至于多实例的优化根据业务需求来定

 

猜你喜欢

转载自www.cnblogs.com/HByang/p/9212263.html