1.什么是MySQL多实例?

简单的说,就是一台机器上开启多个不同的服务端口(如3306,3307),运行多个MySQL服务进程,这些进程通过不同的socket监听不同的服务端口来提供各自的服务。

这些MySQL多实例共用一套MySQL安装程序,使用不同(也可以相同)的my.cnf配置文件、启动程序文件,数据文件。本次的案例采用共用一套安装程序,使用不同的配置文件、不同的启动程序、不同的数据文件的mysql多实例。在提供服务的时候,多实例MySQL在逻辑上看来是各自独立的,多个实例的自身是根据配置文件对应的设置值,来取得服务器的相关硬件资源多少的。

做一个形象的比喻,MySQL多实例相当于房子的多个卧室一样,每个实例可以看作是一个卧室,整个服务器就是一套房子,服务器的硬件资源可以看作是房子的卫生间、厨房一样是房子的公共资源。就像是北漂住在一套房子里,肯定要共享资源。其实很多服务都可以有多实例如nginx,apache,redias等。

2.MySQL多实例的作用与存在的问题

(1) 有效利用服务器资源

当单个服务器资源有剩余时,可以充分利用剩余的资源提供更多的服务。一般服务器资源占用率应该到60%-70%。

(2) 节约服务器资源

当公司资金比较紧张,但是数据库又需要各自尽量独立提供服务,而且需要主从同步技术时多实例就再好不过了。

(2)资源互相抢占问题

当某个实例并发很高或者慢查询时,整个实例会消耗整个服务器更多的内存、cpu、磁盘IO资源,导致服务器上的其他实例提供服务的质量下降,这就相当于大家住在一个房子的不同卧室一样,早晨起来要上班,都要刷牙、洗脸等等。这样卫生间就会长期占用,其他人要等待一样的道理。