一、什么是Mysql多实例
MySQL的多实例可以使得多个Mysql服务器实例运行在同一台机器上,能够有效的分离不同场景下的资源需求和隔离环境。可以节约部分硬件及维护成本,还可以让我们更容易管理实例
二、环境准备
1.安装Mysql
在Mysql官网上下载对应的版本进行安装,安装完成后需要先以管理员模式打开命令行
2.修改配置文件
不同实例需要不同的配置文件,可复制一份Mysql的配置文件my-default.ini,复制后改名,进行相应配置。
找到my-default.ini文件,将其复制到Mysql的安装目录下,更改名称为my-new-default.ini,然后进行修改。
将datadir修改为相应实例的存储路径,修改相应端口号port和socket,并将[mysqld]改为[mysqldunique_instance_name],如下:
```
# unique instance name
[mysqld_mysql1]
# socket path
socket="/tmp/mysql1.sock"
# 端口号
port=13306
# data directory
datadir="/mnt/local/mysql1/data"
# 日志配置
log-error="/mnt/local/mysql1/log/mysql_error.log"
log-bin="/mnt/local/mysql1/binlog/mysql-bin"
log-bin-index="/mnt/local/mysql1/binlog/mysql-bin.index"
```
配置多个实例后需在配置文件最后增加
```
# [mysqld]部分必须保留
[mysqld]
```
三、启动多个实例
通过mysqld_multi来启动多个实例。
1. 安装mysqld_multi
MYSQL自带mysqld_multi脚本
复制一下路径
`/usr/share/mysql/scripts/mysqld_multi`
将mysqld_multi复制到我们的环境变量可以找到的地方/usr/local/bin/下
2.配置启动多实例
```
mkdir -p /mnt/local/mysql1/data
mkdir -p /mnt/local/mysql1/log
chown -R mysql:mysql /mnt/local/mysql1
```
在/etc目录下新建一个my.cnf文件并配置多个实例进程的参数
```
mkdir /etc/my.cnf.d
vim /etc/my.cnf
```
文件内容如下:
```
[mysqld]
basedir=/usr/local/mysql
datadir=/mnt/local/mysql1/data
socket=/tmp/mysql1.sock
port=13306
pid-file=/mnt/local/mysql1/my.cnf.pid-file
bind-address=0.0.0.0
log-error=/mnt/local/mysql1/log/mysql.error
log-bin=/mnt/local/mysql/binlog/mysql-bin
log-bin-index=/mnt/local/mysql/binlog/mysql-bin.index
!includedir /etc/my.cnf.d
```
3. 启动多实例
执行 `mysqld_multi start`
四、其他常用命令
1. 查看多实例状态:
```
mysqld_multi report
```
2. 关闭多实例:
```
mysqld_multi stop
```
五、总结
Mysql多实例部署的好处有很多,能够有效地分离不同场景下的资源需求和隔离环境,同时也可以节约部分硬件及维护成本,对于多线上服务来说,是个非常有效的解决问题的方式。同时,我们也需要合理的分配资源,优化性能。