数据库中的High availability
在传统关系型数据库中有一个非常重要的特性就是high availability,简称高可用。简而言之就是如果一台服务器坏了,仍然系统要保证可用性,通常的实现方式有以下几种,
1: 使用一主一备或多备的方式来同步数据;
2: 使用共享磁阵的方式共享数据;
3: 使用分布式文件系统来保证数据的安全;
本篇博客只探讨单机数据库中的高可用,对于分布式数据库中的高可用可以到下次再探讨。
通常单机数据库采用方法1来实现high availability,一台服务器作为主机,另一台作为热备。主机实时将事务日志xlog同步给备机,备机将日志写盘后回复主机写入的位置(例如LSN,一个uint64位顺序递增数值,并假设它永远用不完),主机将事务等待队列中小于该LSN的事务全部提交。
主备复制流程如图1所示:
Note left of Primary: start transaction
Note left of Primary: flush xlog to disk
Primary->Standby: send xlog to Standby
Note right of Standby: flush ...