OceanBase 数据库中副本类型也有以下几种:
全能型副本:目前支持的普通副本,拥有事务日志、MemTable 和 SSTable 等全部完整的数据和功能。它可以随时快速切换为 Leader 以对外提供服务。
日志型副本:只包含日志的副本,没有 MemTable 和 SSTable。它参与日志投票并对外提供日志服务,可以参与其他副本的恢复,但自己不能变为主提供数据库服务。
只读型副本:包含完整的日志、MemTable 和 SSTable 等。但是它的日志比较特殊,它不作为 Paxos 成员参与日志的投票,而是作为一个观察者实时追赶 Paxos 成员的日志,并在本地回放。这种副本可以在业务对读取数据的一致性要求不高的时候提供只读服务。因其不加入 Paxos 成员组,又不会造成投票成员增加导致事务提交延时的增加。
以下表格展示了上述副本的特性差异。
特性 | 全能型 | 日志型 |
---|---|---|
LOG | 有,参与投票(SYNC_CLOG) | 有,参与投票(SYNC_CLOG) |
MemTable | 有(WITH_MEMSTORE) | 无(WITHOUT_MEMSTORE) |
SSTable | 有(WITH_SSSTORE) | 无(WITHOUT_SSSTORE) |
数据安全 | 高 | 低 |
恢复为 Leader 的时间 | 快 | 不支持 |
资源成本 | 高 | 低 |
服务 | Leader 提供读写,Follower可非一致性读 | 不可读写 |
名称(简写) | FULL(F) | LOGONLY(L) |
副本类型值 | 0 | 5 |