名词表
高可用(HA:High Availability)
高可用指的是系统无中断地执行其功能的能力,代表系统的可用性程度,是进行系统设计时的准则之一。高可用性系统与构成该系统的各个组件相比可以更长时间运行。高可用性通常通过提高系统的容错能力来实现。 具体到数据库领域来说,高可用,概念上指一主一备或者一主多备情况下,当主库发生宕机,可以通过手动或者自动的主备角色切换,以降低数据库的不可服务时间,降低对于业务的影响。
主备
主备多用来用于数据库场景,比如:MogDB 主备,MySQL 主备等等。主备的概念用于有状态的应用服务。 主备即主库实例与备库实例,二者不共享数据文件,各自拥有独立的数据文件,主备之间通过数据操作日志进行数据同步,主库允许读写,而备库禁止写,但可以读,备库通过即时回放操作日志,保证数据视图延迟不会超过特定区间(通常为最新的数据事务)。
物理复制和逻辑复制
数据库存在物理复制(流复制)与逻辑复制。
- 物理复制指的是,复制日志为 Redo (数据块变更记录),通过物理复制,可以从实例级复制出一个与主库一模一样的实例级的从库。物理复制同步方式有同步、异步两种。其目的是保证主备之间数据文件一致,最大化保护数据。
- 逻辑复制传输的是逻辑操作日志,主备之间数据状态一致,但存储到磁盘上的数据文件不相同。
相比较物理复制,逻辑复制更灵活,但在特定情况下,数据不一致的可能性大于物理复制。
同步流复制,异步流复制
异步流复制指主库上提交的事务不需要等待备库接收写入 WAL 日志时便返回成功响应,如果主库宕机,主库上已提交的事务可能还没来得及发给备库,就会造成数据丢失,备库丢失数量与 WAL 复制延迟有关,延迟越大,丢失越多。 同步流复制需要在主库提交事务时等待备库接受 WAL 日志后,主库收到备库发回的确认信息才返回成功响应,这样就保证了数据的完整性,但增加了事务的响应时间,因此同步流复制吞吐量比异步流复制低。
Switchover
switchover 是指在主备机正常时,出于维护的需要,将备机切换为主机的行为,这样可保证切换过程中数据不丢失。
Failover
failover 是指在主机异常时,将备机切换为主机的行为。