MySQL多实例介绍及MySQL多实例的特点
1、什么是MySQL多实例?
MySQL多实例就是在一台机器上开启多个不同的服务端口(如:3306,3307,3308),运行多个MySQL服务进程,通过不同的socket监听不同的服务端口来提供各自的服务。
2、MySQL多实例的特点有以下几点:
1)、有效利用服务器资源,当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。
2)、节约服务器资源
3)、资源互相抢占问题,当某个服务实例服务并发很高时或者开启慢查询时,会消耗更多的内存、CPU、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降。
二,MySQL多实例的安装配置
系统环境:centos 6.9 64位
内核版本: 2.6.32-696.el6.x86_64
mysql版本:5.7.16
程序目录: /usr/local/mysql
# mkdir /usr/local/mysql
实例系统文件目录: /usr/local/mysql/dbsxxxx
# mkdir -p /usr/local/mysql/{dbs3007,dbs3008}
实例数据文件目录: /data/mysql/dataxxxx
# mkdir -p /data/mysql/{data3007,data3008}
1、首先创建mysql用户和组:
# groupadd mysql
# useradd -s /sbin/nologin -g mysql -M mysql
2、下载MySQL源码包并解压安装
# cd /usr/local/src/ 约定以后安装软件就下载到这里使用
# wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.17-linux-glibc2.5-x86_64.tar
# yum search libaio mysql对libiao库有依赖,查询如果没有安装则进行安装。
# yum install -y libaio 对libiao库进行安装。
# tar -xvf mysql-5.7.17-linux-glibc2.5-x86_64.tar 这里解tar包后发现有两个包:mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 和 mysql-test-5.7.17-linux-glibc2.5-x86_64.tar.gz,我使用mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz这个包。
# tar zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz 解包
# cp -R mysql-5.7.17-linux-glibc2.5-x86_64/* /usr/local/mysql 将文件复制到程序目录下
3、创建MySQL多实例配置文件
# cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/dbs3007/my3007.cnf
# cp /usr/local/mysql/support-files/my-default.cnf /usr/local/mysql/dbs3008/my3008.cnf
# vim /usr/local/mysql/dbs3007/my3007.cnf 其my3008.cnf也相同方法加入如下行
[mysqld]
socket = /tmp/mysql3007.sock
port = 3007
pid-file = /data/mysql/data3007/mysql3007.pid
datadir = /data/mysql/data3007
basedir = /usr/local/mysql/dbs3007
user = mysql
server-id=3007
[client]
port = 3007
socket = /tmp/mysql3007.sock
[mysql]
no-auto-rehash
socket = /tmp/mysql3007.sock
prompt=\u@\h[\d]> \
4、改变目录和文件属组及属主
# chown -R mysql:mysql /usr/local/mysql/
# chown -R mysql:mysql /data/mysql/
5、初始化MySQL数据目录并添加mysql命令道全局路径
# echo 'export PATH=$PATH:/usr/local/mysql/bin/' >> /etc/profile
# source /etc/profile
# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-5.7.17-linux-glibc2.5-x86_64/ --datadir=/data/mysql/data3006/
HJ7pwBX(6??P
# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/dbs3007 --datadir=/data/mysql/data3007/ 初始化实例3007
记录初始密码 t4-h1ULfDrrd
# mysqld --initialize --user=mysql --basedir=/usr/local/mysql/dbs3008 --datadir=/data/mysql/data3008/ 初始化实例3008
记录初始密码 Fu*=QeSK#8c!
6、启动、连接、关闭多实例
# mysqld_safe --defaults-file=/usr/local/mysql/dbs3007/my3007.cnf & 启动对应实例
# mysql -uroot -pt4-h1ULfDrrd -S /tmp/mysql3007.sock 套接字方式连接
mysql> set password = password('3007passwd'); 登录第一步必须先修改密码,否则会影响使用
# mysql -uroot -p3007passwd -P3007 --protocol=tcp tcp方式连接
# mysql -h127.0.0.1 -uroot -p3007passwd -P3007
# mysqladmin -uroot -P3007 -p3007passwd -S /tmp/mysql3007.sock shutdown 关闭实例
# mysqladmin -h127.0.0.1 -P3007 -p3007passwd shutdown
(以上操作使用了明显密码,实例操作中避免此类事情)
3008实例用相同方法操作将密码改为 3008passwd