为什么要使用多实例
- 物理机配置NB,但单个实例无法充分使用cpu核(mysql性能问题)
- 资源隔离,减少相互影响
- 分担连接数:mysql随着连接数增多,性能会出现严重的下降。此时os cpu消耗在sys上。系统频繁的在切换资源
- 更充分的利用资源
- 不同的业务错峰允许。
总结:一个实例中有多个库,容易造成连接数超多。
可分拆为一个服务器上运行多实例
配置多实例
配置MySQL 目录
找一个空间充足的分区,作为MySQL数据库存放数据的位置
[root@dd01 ~]# mkdir -p /data/mysql3307
[root@dd01 ~]# cd /data/mysql3307
[root@dd01 ~]# mkdir run tmp logs binlogs data
[root@dd01 ~]# chown -R mysql:mysql /data
参数文件
既然是多实例,说明我们服务器上已经有一个mysql实例在运行了。
那么,我们直接拷贝参数文件即可
cp /etc/my.cnf /data/mysql3307/my3307.cnf
并将参数文件中,所有3306 的字样改为3307。
初始化数据库
去读指定的参数文件,非默认位置的参数文件
/usr/local/mysql/bin/mysqld --defaults-file=/data/mysql3307/my3307.cnf --initialize
登陆数据库
mysql -S /tmp/mysql3307.sock -p
修改提示符
我们现在一个服务器上有两个mysql 实例了。那么登陆到数据库之后,很难区分现在连接的是哪个,所以我们可以修改提示符:
vi /etc/my.cnf
prompt="\\u@\\h:\\p [\\d]> "
性能优化
内存分配
一个服务器上的所有mysql 实例参数中的innodb_buffer_pool_size总和,不超过操作系统的80%。
sum(innodb_buffer_pool_size) <= os_memory * 80%
连接限制
既然我们采用多实例的架构,主要还是需要可以承受更多conn,那么处理DB上的调整,我们也要关注操作系统上的相关限制:
- open_files 需要调整为 6535
- max_user_processes 调整为 10000以上