1.8 一些基础概念
为了方便后续阅读,让大家对部分概念的理解保持一致,从而更好地理解书中的内容,这里有必要先对下面的这些概念进行阐述。
1. MySQL Server、MySQL实例、MySQL数据库
MySQL数据库指的是实际存在的物理操作系统文件的集合,也可以指逻辑数据的集合。为了访问、处理数据,我们需要一个数据库管理系统,也就是MySQL Server(也称为MySQL服务器)。
MySQL实例指的是MySQL进程及其所持有的内存结构,我们对数据的操作实际上是通过MySQL实例来访问物理数据库文件的。在实际生产中,可以用一个IP:PORT组合来表示一个实例。如“192.168.7.101:3307”这个MySQL实例表示在主机上起了一个MySQL服务,它的服务端口是3307。如果没有特别说明,本书中的实例一词就是指MySQL
实例。
现实语境中,我们一般使用实例来描述对于数据库的操作,对于MySQL数据库、MySQL Server、MySQL实例并没有进行严格的区分,没有特别说明的话,大家可以将它们看作是同等的。
2.可扩展性
可扩展性也称为伸缩性,指的是系统不断增长其承载能力的能力。它是能满足不断增长的负荷而自身的性能仍然尚可的这样一种能力。
3.可用性
可用性可以定义为系统保持正常运行时间的百分比,比如一个系统一共运行了100分钟,有99分钟是正常运行的,那么可用性就是99%。
4.单点故障
单点故障是指系统中的某个部分,一旦失败,将会导致整个系统无法工作。为了消除单点故障,一般需要增加冗余组件或冗余系统。比如服务器的电源冗余、网卡冗余、磁盘RAID阵列,冗余的服务器,备用的数据中心等。如果要设计高可用的服务,单点故障是需要尽量避免的。
5.读写分离
由于数据库只能接受有限的读请求。对于读请求较多的应用,数据库可能会成为瓶颈,为了增加读的能力,提高扩展性,因此引入了读写分离的技术。比如,利用复制技术配置多个从库,以承担更多的读请求,或者应用程序直接访问读库,或者通过一个负载均衡软件分发读请求。写入操作和一些读操作仍然访问主库。由于MySQL的复制是异步的,所以需要留意复制延时对于读写分离的影响。