如何理解MySQL数据库单实例和多实例?

数据库专业领域有两个名词容易搞混,数据库和实例。理解这2个名词的含义,对我们后续开发和部署mysql都有很大帮助!其中实例又分单实例和多实例,本节重点介绍MySQL多实例!

图片发自App

mysql实例介绍

数据库和实例

数据库:简单讲是数据的集合,这些数据按照一定的方式存储在一起,可以给多用户共享,与应用程序独立开来。在MYSQL数据库中,数据库文件按照存储引擎的不同,文件后缀也不同,可以是frm、myd、myi、ibd结尾,是一个静态概念。

实例:MySQL数据库由后台线程及一个共享内存区组成,数据库实例才是真正用于操作数据库文件的程序集,是一个动态概念。

在MySQL中实例和数据库的关系通常是一一对应的,即一个实例对应一个数据库,但是现在越来越多的场景使用多实例,也就是一个数据库被多个数据库实例使用多情况。

Mysql被设计成一个单进程多线程架构的数据库,所以在操作系统上表现就是一个进程。

所以在linux上可以用进程查看命令观察数据库进程情况

ps -ef |grep mysql

图片发自App

可以看到进程号88052就是我本机启动的mysql进程,我们发现只有一个mysql进程,这就是我们讲的数据库单实例。

mysql多实例介绍

上节介绍了mysql进程,这种单进程实际上就是mysql的单实例,其实在生产环境中,更为通用的部署方式是多实例部署,那什么是多实例?

多实例就是在一台服务器上同时开启多个不同的数据库服务端口(例如3306、3307),同时运行多个MYSQL服务进程,这些服务进程通过不同的socket监听不同的服务端口来提供服务。

这些MySQL实例共用一个Mysql数据库安装程序,使用不同的my.cnf配置文件启动,在提供服务时,多实例MySQL在逻辑上看,是各自独立的,他们根据配置文件的设定来获得服务器相应数量的资源。

多实例学习

MySQL多实例的优缺点

优点:

可以有效利用服务器资源,当单个服务器资源富裕时,可以充分利用资源提供更多的服务。

节约服务器资源,若公司资金不是充裕,又想数据库能独立提供服务,还想用主从复制等技术,那么只能选择多实例部署方式。

缺点:

存在资源互享抢占的问题,当某个数据库实例并发很高且SQL查询耗时,那整个实例会消耗大量的系统资源,包括CPU、磁盘IO等,导致同一个服务器的其它数据库实例可能响应慢,毕竟它不会像虚拟机一样做到完全隔离。

MySQL多实例的应用场景

中小型公司的选择:公司业务访问量不大,希望不同的业务使用不同的数据库服务而互相不受影响,建于资金不足,可食用多实例,比如可以通过3台服务器部署9-15个实例,交叉做主从复制、数据备份及读写分离,这样也能达到多个服务器只装1个数据库的效果。

并发访问不是很大的业务:当业务访问量不大,服务器资源基本都是空闲的,这时很适合多实例应用,如果对sql语句优化较好,多实例是一个很值得使用技术,即使并发打,合理分配资源以及搭配号服务,问题也不大。

门户网站应用:门户网站通常会使用多实例,因为配置硬件好的服务器,可以节省IDC机柜空间,同时运行多个实例可以减少资源浪费情况,例如一个pc服务器,16核CPU,内存128G内存,可运行3-4个实例绰绰有余。

图片发自App

MySQL多实例的部署方案

一般目前流行的部署方案是多配置文件,多启动程序的部署方式,也就是多个my.cnf文件,启动程序mysql都是独立的文件,数据文件也是独立的。关于更多的部署细节,后续文章会单独来讲解。

总结

本节描述了数据库的生产部署方式之一,实例的定义及多实例的部署,总之多实例部署也是节省资源的一种手段之一,在配置高的pcserver上,采用多实例可以尽最大化使用服务器的计算能力,所以请你在自己的学习环境上配置多实例mysql。

你可能感兴趣的:(如何理解MySQL数据库单实例和多实例?)