当前位置: 首页 > news >正文

PostgreSQL WAL 日志发展史 - pg9

文章目录

  • 一、pg9 实现流复制
  • 二、pg9.1 备机同步提交
  • 三、pg9.2 级联复制
  • 四、pg9.3 小改动
  • 五、pg9.4 复制槽与Logical
  • 六、pg9.5 些许小改动
  • 七、pg9.6 多同步备机

一、pg9 实现流复制

这里实现了流复制,为了流复制也增加了很多相应的GUC参数。与温备相对应,流复制也可以称为热备,他实现了主备之间以wal记录的粒度同步数据
在这里插入图片描述
WAL_LEVEL

wal的级别当前版本支持minimal、aichive、hot_standby,三种级别。

MAX_WAL_SENDERS

每一个流复制连接,在主机都会有一个对应的wal发送进程,这个参数定义最大支持的连接数。

WAL_SENDER_DELAY

wal发送进程每隔一段时间,向备机发送一次主机产生的wal日志。这个参数配置了这个时间间隔的大小。

WAL_KEEP_SEGMENTS

设想一下,如果因为某种原因,主备之间的同步延迟比较大,就会造成主机的wal日志记录在发送到备机之前就已经被移除。这样备机就无法同步主机数据了。因此在主机上配置wal_keep_segments参数,就可以使主机生成的wal日志不会被立即清除,可以让备机有充足的时间完成数据同步。

VACUUM_DEFER_CLEAN_AGE

主机上执行的vacuum操作会打断备机正在执行的查询,设置这个参数后主机对死亡元组的vacuum可以延迟几个事务的时间。这个参数在后面会有更为有效的hot_standby_feedback参数作为替代。

HOT_STANDBY

配置是否可以连接到这个备机进行查询操作。

MAX_STANDBY_ARCHIVE_DELAY&&MAX_STANDBY_STREAM_DELAY

当一个wal redo的操作与当前正在执行的查询冲突时,需要判断等待查询完成再redo,还是取消查询执行redo。

这个参数设定了一个允许查询继续执行的时间,经过这个时间之后,就会取消查询执行redo。

MAX_STANDBY_ARCHIVE_DELAY用于文件级别的wal传递,也就是温备的情况

MAX_STANDBY_STREAM_DELAY用于流复制,或者说热备。

ARCHIVE_CLEANUP_COMMAND

配置一个命令在遇到一个重启点时,清理归档路径中的wal段

RECOVERY_END_COMMAND

配置一个命令在完成恢复后,做一些清理工作

STANDBY_MODE

界定这是一次PITR还是一个备机,这个参数在PG12中删除了。

PRIMARY_CONNINFO

备机启动时连接主机的字符串

TRIGGER_FILE

指定一个触发文件,当文件存在时,备机退出recovery模式

二、pg9.1 备机同步提交

SYNCHRONOUS_COMMIT

这不是一个新的参数,而是为这个参数增加了一个可选值‘local’

ON:wal record在本地和备机中刷写到磁盘之后,事务才完成提交状态。

LOCAL:wal record在本地刷写到磁盘之后,事务才完成提交状态。

OFF:异步提交

SYNCHRONOUS_STANDBY_NAMES

指定primary_conninfo字符串中可以指定备机的名字,通过将名字添加到这个参数中,可以指定一个同步备机。

当前版本只支持一个同步备机。

REPLICATION_TIMEOUT

这里界定一个时间间隔,如果超过这个时间没有收到备机的消息,那么主机将断开与备机的连接。

WAL_RECEIVER_STATUS_INTERVAL

备机每隔一段时间会向主机报告复制情况,也是向主机报告备机存活的方法。

HOT_STANDBY_FEEDBACK

备机向主机发送备机正在执行的查询,目的是通知主机不要清理相关的死亡元组。

RECOVERY_TARGET_NAME

为PITR指定一个恢复点的名字,恢复点可以用 pg_create_restore_point()创建

三、pg9.2 级联复制

9.2版本的特点是出现了级联复制,一个备机可以从他的上游服务器获取wal日志,也可以向下游服务器传递wal日志。不过没有为级联复制准备特殊的GUC参数,我们只要把上游服务器配置为一个备机就可以了。

PAUSE_AT_RECOVERY_TARGET

在PITR时如果指定了恢复目标,那么当达到恢复目标时,startup进程停止redo,这时的数据库还是在恢复状态,你可以连接数据库查看当前数据库状态是否满足你的预期,如果不满足这提供了一次让你重新配置recovery.conf继续恢复的机会。当pause_at_recovery_target参数配置为false时,redo过程在达到恢复目标会立即会进入一个可读可写的状态。

SYNCHRONOUS_COMMIT

这个参数又来了,这次它提供了一个remote_write的可选项,remote_write比ON严谨一些,当walrecord在同步备机apply之后,事务才会被认为是完成了。

四、pg9.3 小改动

删除了replication_timeout参数,增加了wal_sender_timeout 替代参数,并增加了wal_receiver_timeout 参数。

WAL_SENDER_TIMEOUT

代替replication_timeout

WAL_RECEIVER_TIMEOUT

这个参数用来探测主机的状态,如果主机长时间没有回复则断开连接。

五、pg9.4 复制槽与Logical

实现了复制槽,使得发送服务器刚好能保存适当的wal文件。

出现了logical的wal日志级别,内置了wal日志的解析插件test_decoding和工具pg_recvlogical。

在这里插入图片描述
WAL_LEVEL

增加logical级别

WAL_LOG_HINTS

一些page页如果发生了不重要的页数据改动,也遵循全页写机制。

MAX_REPLICATION_SLOTS
9.4版本新增加了复制槽功能,每一个流复制备机可以配置使用一个复制槽,这个复制槽记录了对应备机的wal记录的apply情况,并在主机为备机保存还要使用的wal段不被清理。

PRIMARY_SLOT_NAME

在备机配置其要使用的复制槽,并为复制槽命名。

RECOVERY_MIN_APPLY_DELAY

备机收到wal日志后会延迟一段时间才完成wal记录的redo操作。同步复制不受此配置的影响。

考虑到如果你在主机执行了一个没有条件筛选的delete操作,幡然醒悟。这时delete操作还没有同步到备机,这时可以赶紧采取紧急措施补救数据。

六、pg9.5 些许小改动

WAL_COMPRESSION

是否压缩wal日志中的全页写数据

MAX_WAL_SIZE && MIN_WAL_SIZE

软限制wal日志在wal生成目录的size,当wal目录下wal段的size小于min_wal_size时,checkpoint进程不会处理wal段;当wal目录下wal段的size大于max_wal_size时,checkpoint会移除最旧的wal段直到wal段size为max_wal_size; 剩余的情况,checkpoint会将不在使用的wal段重命名为未来的的wal段名。

ARCHIVE_MODE

增加always选项,一个备机是否继续归档它接受到的wal日志

RECOVERY_TARGET_ACTION

在完成恢复后,数据库的动作,有三个可选项:pause,promote, shutdown.

这个参数替代了pause_at_recovery_target参数。

pause指停止redo,但此时数据库还是处于恢复模式,这个参数可以让你查看数据库当前值得状态,若当前状态不符合你的预期,可以停库修改恢复recovery.conf,启动数据库后继续redo,使用pg_xlog_replay_resume() 命令可以使数据库退出恢复模式。

promote:恢复完成后,直接将数据库提升为主机状态。

shutdown:这相当于在pause的基础上,多加了个停库的操作。

TRACK_COMMIT_TIMESTAMP

为提交的事务记录提交时间。

WAL_RETRIEVE_RETRY_INTERVAL

这是一个等待时间,当备机已经重演完所有的wal日志时,walreciver进程探测是否有新的wal日志的时间间隔。

七、pg9.6 多同步备机

9.6版本最大的亮点是支持多个同步备机,另外修整了wal级别为(minimal,replica,logical)

WAL_LEVEL

wal级别支持minimal,replica,logical三种。

SYNCHRONOUS_COMMIT

添加remote_apply选项,walrecord在synchronous_standby_names指定的同步备机上完成redo后,主机事务才算完成。

WAL_WRITE_FLUSH_AFTER

在事务异步提交时,会通知wal writer进程将wal日志刷盘,但这个刷盘只是指刷入操作系统缓存。

当刷入操作系统缓存,但是没有完成硬盘同步的wal日志的数量大于wal_write_flush_after值时,会触发一次将wal日志同步到硬盘的过程。

SYNCHRONOUS_STANDBY_NAMES

这个参数增加了值的类型,用以支持多同步备机

http://www.dtcms.com/a/426699.html

相关文章:

  • 企业自有网站全国加盟网站大全
  • 做金融网站看那些素材怎样联系自己建设网站
  • Java的任务调度框架之 Quartz 以及 CronTrigger,CronScheduleBuilder 和 Cron表达式 笔记250930
  • 联想乐享重构智能搜索生态:ThinkPad T14p 2025升级信息首触“企业智能双胞胎”
  • 明远智睿 SSD2351 核心板:64 位四核含税不足 50 元,批量采购新选择
  • Flutter 自定义 View 权威指引
  • AWS | Linux 硬盘挂载综合教程
  • ntdll.pdb 包含查找模块 ntdll.dll 的源文件所需的调试信息
  • 精读C++20设计模式——行为型设计模式:策略模式
  • Spark专题-第三部分:性能监控与实战优化(1)-认识spark ui
  • 汕头网站设计哪家好鞍山制作网站哪家好
  • 电子商务网站建设试卷软件设计师好考吗
  • 【计算机视觉】形态学的去噪
  • 精读C++20设计模式——行为型设计模式:命令模式
  • petalinux 安装Openblass库
  • 织梦播放器网站网站建设简历自我评价
  • 大数据毕业设计选题推荐-基于大数据的全球经济指标数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • Spring Boot 整合 Redisson 实现分布式锁:实战指南
  • 国鑫发布新一代「海擎」服务器 全面兼容国内外主流OAM GPU
  • 百度电商MultiAgent视频生成系统
  • FRP v0.65.0 内网穿透专业指南(SSH + HTTP/HTTPS 一体化配置)
  • UNIX下C语言编程与实践20-UNIX 文件类型判断:stat 结构 st_mode 与文件类型宏的使用实战
  • 电脑网站开发手机上可以打开吗网站建设如何把代码
  • ROS2下利用遥控手柄控制瑞尔曼RM65-B机器人
  • SOC(安全运营中心)
  • 济南网站建设山东聚搜网推荐传媒公司招聘
  • C++ STL 深度解析:容器、迭代器与算法的协同作战
  • SPI主控的CS引发的读不到设备寄存器
  • 数据标注、Label Studio
  • 央链知播受权发布:图说《“可信资产 IPO + 数链金融 RWA” 链改 2.0 六方共识》