日志回放
recovery_time_target
参数说明:设置recovery_time_target能够让备机完成日志写入和回放。
参数类型:整型
参数单位:秒
取值范围:0~3600
0是指不开启日志流控,1~3600是指备机能够在recovery_time_target时间内完成日志的写入和回放,可以保证主机与备机切换时能够在recovery_time_target完成日志写入和回放,保证备机能够快速升主机。recovery_time_target设置时间过小会影响主机的性能,设置过大会失去流控效果。
默认值:60
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:一般设置为默认值,不作调整。
recovery_parallelism
参数说明:查询实际回放线程个数,该参数为只读参数,无法修改。
该参数属于POSTMASTER类型参数,受recovery_max_workers以及recovery_parse_workers参数影响,任意一值大于0时,recover_parallelism将被重新计算。
取值范围:整型,1~2147483647
默认值:1
queue_item_size
参数说明:设定每个redo replay 线程的任务队列最大长度。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:最大值65535 ,最小值1。
默认值:560
recovery_parse_workers
参数说明:是极致RTO特性中ParseRedoRecord线程的数量。
- 需要配合recovery_redo_workers使用。recovery_parse_workers和recovery_redo_workers同时大于1,则开启极致RTO。如不期望开启极致RTO,请保持recovery_parse_workers为默认值1;
- 在开启极致RTO时确保参数replication_type为1;
- 若同时开启极致RTO和并行回放,则极致RTO特性生效,并行回放特性失效;
- 极致RTO不支持流控,流控统一由recovery_time_target参数控制。
参数类型:整型
参数单位:无
取值范围:1~16
默认值:1
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:不同CPU、内存和部署模式下,recovery_parse_workers和recovery_redo_workers的设置值可参考表1 不同CPU、内存和部署模式下的参数设置参考。
打开极致RTO后,备机会额外启动的回放线程总数=recovery_parse_workers * (recovery_redo_workers + 2) + 5。回放线程越多,占用CPU、内存和IO资源越多。请根据实际硬件配置合理设置参数,否则可能会因为资源不足而导致系统无法启动。混合部署场景可能对主机性能有影响。
recovery_redo_workers
参数说明:是极致RTO特性中每个ParseRedoRecord线程对应的PageRedoWorker数量。recovery_redo_workers需要配合recovery_parse_workers使用,只有recovery_parse_workers大于1,recovery_redo_workers参数设置值才生效。
参数类型:整型
参数单位:无
取值范围:1~8
默认值:1
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:不同CPU、内存和部署模式下,recovery_parse_workers和recovery_redo_workers的设置值可参考表1 不同CPU、内存和部署模式下的参数设置参考。
编号 |
CPU个数 |
内存(GB) |
是否混合部署 |
recovery_parse_workers |
recovery_redo_workers |
回放线程总数 |
备注 |
---|---|---|---|---|---|---|---|
1 |
4 |
- |
- |
1 |
1 |
- |
不推荐开极致RTO |
2 |
8 |
- |
是 |
1 |
1 |
- |
不推荐开极致RTO |
3 |
8 |
64 |
否 |
1 |
1 |
- |
不推荐开极致RTO |
4 |
16 |
128 |
是 |
1 |
1 |
- |
不推荐开极致RTO |
5 |
16 |
128 |
否 |
2 |
3 |
15 |
- |
6 |
32 |
256 |
是 |
2 |
2 |
13 |
- |
7 |
32 |
256 |
否 |
2 |
8 |
25 |
- |
8 |
64 |
512 |
是 |
2 |
4 |
17 |
- |
9 |
64 |
512 |
否 |
2 |
8 |
25 |
大于此硬件规格的系统均参考此参数设置值 |
10 |
96 |
768 |
- |
2 |
8 |
25 |
大于此硬件规格的系统均参考此参数设置值 |
enable_page_lsn_check
参数说明:数据页lsn检查开关。回放时,检查数据页当前的lsn是否是期望的lsn。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
默认值:on
recovery_min_apply_delay
参数说明:设置备节点回放的延迟时间。
参数类型:整型
参数单位:毫秒
取值范围:0~INT_MAX
默认值:0(不增加延迟)
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:见下方须知。
- 此参数主节点设置无效,必须设置在需要延迟的备节点上,推荐设置在异步备上,但设置了延时的异步备如果升主RTO时间会比较长。
- 延迟时间是根据主服务器上事务提交的时间戳与备机上的当前时间来计算,因此需要保证主备系统时钟一致。
- 延迟时间设置过长时,可能会导致该备机xLog文件所在的磁盘满,需要平衡考虑磁盘大小来设置延迟时间。
- 没有事务的操作不会被延迟。
- 主备切换之后,原主机若需延迟,需要再手动配置此参数。
- 当synchronous_commit被设置为remote_apply时,同步复制会受到这个延时的影响,每一个COMMIT都需要等待备机回放结束后才会返回。
- 使用这个特性也会让hot_standby_feedback被延迟,这可能导致主服务器的膨胀,两者一起使用时需谨慎操作。
- 主机执行了持有AccessExclusive锁的DDL操作,比如DROP和TRUNCATE操作,在备机延迟回放该条记录期间,如果在备机上对该对象执行查询操作,等待锁释放之后才会返回。
dcf_truncate_dump_info_level
参数说明:用于控制dcf做日志截断(truncate)时是否打印被截断lsn及之后的lsn。
参数类型:整型
参数单位:无
取值范围: 0~2
- 0:不开启。
- 1:打印被dcf截断的所有lsn内容(大于等于截断lsn的xLog日志)。
- 2:打印被dcf截断的所有lsn内容,且当落盘lsn大于截断lsn时打印warnning级别日志。
默认值:0(不开启)
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:建议设置为默认值。
redo_bind_cpu_attr
参数说明:用于控制回放线程的绑核操作,仅sysadmin用户可以访问。该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
- 'nobind':线程不做绑核。
- 'nodebind: 1, 2':利用NUMA组1,2中的CPU core进行绑核。
- 'cpubind: 0-30':利用0-30号CPU core进行绑核。
- 'cpuorderbind: 16-32': 从16号核开始一个线程绑定一个CPU,区间内核不足就不参与绑定。建议区间大小设置为大于等于recovery_parallelism + 1。
默认值:'nobind'
- 本参数主要用于arm环境下的绑核操作。推荐将所有的回放线程绑定到一个numa组内,性能会更好,针对混合部署的场景,推荐将同一个机器上的不同节点的回放线程绑定到不同的numa组。
- 通过本参数设置的绑核区间应与通过GUC参数thread_pool_attr设置的线程池绑核区间以及通过GUC参数wal_rec_writer_bind_cpu、walwriteraux_bind_cpu、wal_receiver_bind_cpu设置绑定的CPU核号错开。