openGauss主备机

142 阅读2分钟

主备机

为了保证故障的可恢复,需要将数据写多份,设置主备多个副本,通过日志进行数据同步,可以实现节点故障、停止后重启等情况下,openGauss能够保证故障之前的数据无丢失,满足ACID特性。主备环境可以支持主备和一主多备两种模式。主备模式下,备机需要重做日志,可以升主。在一主多备模式下,所有的备机都需要重做日志,都可以升主。主备主要用于要求一般可靠性的OLTP系统,能够节省一定的存储资源。而一主多备提供更高的容灾能力,适合于要求更高可靠性事务处理的OLTP系统。

主备机均正常的状态下,主备机之间可以通过switchover命令进行角色切换;主机故障后可以通过failover命令对备机进行升主。

为保证failover的时间可控,可以开启日志流控功能,控制日志发往备机的速率,保证备机堆积的日志会在小于流控配置的目标时间内回放完。开启流控后因为发送给备机日志的速率被动态调整,从而整体的事务的性能会有相应的降低。

初始化安装或者备份恢复等场景中,需要根据主机重建备机的数据,此时需要build功能,将主机的数据和WAL日志发送到备机。主机故障后重新以备机的角色加入时,也需要build功能将其数据和日志与新主机拉齐。build包含全量build和增量build,全量build要全部依赖主机数据进行重建,拷贝的数据量比较大,耗时比较长,而增量build只拷贝差异文件,拷贝的数据量比较小,耗时比较短。一般情况下,优先选择增量build来进行故障恢复,如果增量build失败,再继续执行全量build,直至故障恢复。

openGauss除了流复制主备双机外,还支持逻辑复制。在逻辑复制中把主库称为源端数据库,备库称为目标端数据库。源端数据库根据预先指定好的逻辑解析规则对WAL文件进行解析,把DML操作解析成一定的逻辑变化信息(标准SQL语句),源端数据库把标准SQL语句发给目标端数据库,目标端数据库收到后进行应用,从而实现数据同步。逻辑复制只有DML操作。逻辑复制可以实现跨版本复制、异构数据库复制、双写数据库复制、表级别复制。