高可用是指通过尽可能缩短系统的维护时间(包括日常维护和突发系统故障),使得服务器或服务能够最大限度地提供可用性。
高可用是在IT生产环境里对每个系统或服务的基本要求。当用户需要在IT系统上执行操作时,系统或服务都需要保证能够正常访问。如果系统无法使用或宕机,则用户无法执行所需的操作。
MySQL在高可用方面持续进行开发和改进,能够提供详细的管理和配置、状态报告,以及主服务器自动故障转移等功能,以确保即使主服务器发生宕机,数据仍然能够使用。
二、如何实现?(一)可靠性:可靠性是指在一定时间内、一定条件下,使系统无故障地执行指定的功能,并使系统尽可能具有可访问性。可靠性可以通过多种方式来实现,因此,系统会产生不同级别的可靠性。
通常情况下,用户可通过以下三个原则来实现可靠性。
1.消除单点故障:尽可能减少使用的组件,如果单一组件发生故障,那么系统将无法继续使用。
2.增加恢复能力:建立多个主动冗余机制,通过冗余组件将系统从故障中快速恢复。
3.容错:增加主动故障检测,通过切换到冗余组件的机制进行自动恢复。
(二)恢复:实现可靠性最简单的方法是从故障中恢复。现实中,系统无法从全部类型的故障中恢复。通常,用户可以通过频繁地备份数据来实现这一目的,当发生损坏事件时,用户可以通过恢复这些备份的副本,来恢复丢失的数据。
MySQL数据库的解决方案中包含了备份和恢复,读者需要理解两种类型的备份方法——逻辑备份和物理备份。
1.逻辑备份。逻辑备份通过遍历数据,逐行地复制数据,将数据从二进制形式转换为SQL语句,并将数据转储为数据文件。恢复时,通过执行SQL语句读取数据文件,将数据导入数据库。逻辑备份的优点是灵活,数据可以在恢复时进行修改,并且用户可以读取数据的内容。缺点是在进行大量数据备份时,速度慢,并且会占用更多的存储空间。
2.物理备份。物理备份是磁盘存储层的二进制副本。可以简单地理解为操作系统层面的文件复制。通常情况下,物理备份只能用于指定的应用程序,恢复时必须使用同一应用程序进行恢复。物理备份的优点是速度快,利用空间小,并且支持一些高级特性,例如增量备份、差异备份等。
(三)冗余:实现可靠性的一个方法是冗余,即在系统里使用两个或多个组件扮演相同角色。其目的是系统在需要替换组件的情况下,准备一个可以用来替换的组件。
冗余组件与主要组件并行参与系统运行,当检测到主要组件发生故障时,系统会自动切换到冗余组件。
通常情况下,冗余可以通过额外的专用硬件来实现。例如,服务器使用UPS,应用系统使用多台服务器,系统使用多个数据采集节点,等等。
(四)容错:容错是与可靠性相关的因素之一。容错是系统检测故障并从突发事件中恢复的能力,它经常用来区分大多数高可用解决方案的正常运行时间。容错实际上是利用冗余和恢复,以及添加主动检测机制和主动切换来实现的。
MySQL的实用程序mysqlfailover,可以用来监视主服务器,当主服务器因故障离线时,它可以将应用程序的连接切换到从服务器。此外,用户也可以利用组复制自动执行故障转移及其他高可用操作。
MySQL还提供了一个轻量级的中间件MySQLRouter,它是MySQL的连接路由器,用户可以通过它连接一组指定的服务器,当指定的服务器离线(或无法访问)时,MySQLRouter会自动切换到另一个可用的服务器。
(五)可伸缩性:可伸缩性是与可靠性相关的另一个因素,这一因素通常与性能有关。通常情况下,用户会希望减少存储和检索数据的时间,但这需要用户