暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【AntDB高可用性方案设计与最佳实践】WAL 日志或流复制的高可用方案

北陌 2023-06-13
134

预写式日志 Write Ahead LogWAL,又称 WAL  志。WAL 日志是PostgreSQL 中十分重要的部分,相当于 Oracle 中的 redo 日志。PostgreSQL 使 WAL 日志保存每一次的数据修改,这样保证了数据库即使意外宕机,也能利用它准确地恢复数据。

WAL 机制实际是在写数据的过程中加入了对应的写 WAL 的过程,步骤是先到 Buffer,再刷新到 Disk,具体如下:

Change 发生时:

● 先将变更后的内容记入WAL Buffer。

● 再将更新后的数据写入Data Buffer。

Commit 发生时:

● WAL Buffer刷新到Disk。

● Data Buffer写磁盘推迟。

Checkpoint 发生时。

● 将所有Data Buffer刷新到磁盘,如图6-5所示。


6-5 Daba Buffer 刷盘结构图

 

PostgreSQL  9.x 版本之后引入了主从的流复制机制,所谓流复制,就是备服务器通过 tcp 流从主服务器中同步相应的数据,主服务器在 WAL 记录产生时即将它们以流式传送给备服务器,而不必等到 WAL 文件被应用。

默认情况下流复制是异步的,在主服务器上提交一个事务与该变化在备 服务器上变得可见之间客观上存在短暂的延迟,但这种延迟相比基于文件的日志传送方式依然要小得多,在备服务器的能力满足负载的前提下延迟通常低于一秒。

在流复制中,备服务器比使用基于文件的日志传送具有更小的数据丢失窗口,不需要采用 archive_timeout 来缩减数据丢失窗口。

将一个备服务器从基于文件日志传送转变为基于流复制的步骤:把recovery.conf 文件中的 primary_conninfo 设置指向主服务器;设置主服务器配置文件的 listen_addresses 参数与认证文件即可。

PostgreSQL 物理流复制按照同步方式分为两类:

● 异步流复制。

● 同步流复制。

物理流复制具有以下特点:

● 延迟极低,不怕大事务。

● 支持断点续传。

● 支持多副本。

● 配置简单。

● 备库与主库物理完全一致,并支持只读。

 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论