Mysql多实例的配置
Posted 杨灏
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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多实例就算是配置完成了,至于多实例的优化根据业务需求来定
以上是关于Mysql多实例的配置的主要内容,如果未能解决你的问题,请参考以下文章