PostgreSQL WAL 日志发展史 - pg9

一、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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值