日志回放
recovery_time_target
参数说明:备机完成日志写入和回放的流控阈值。当备机的回放完成预期时间大于此参数,主机会触发日志流控,将降低主机向备机发送日志的速率。
参数类型:整型
参数单位:s(秒)
取值范围:0~3600
- 0表示不开启日志流控。
- 1~3600是指备机能够在recovery_time_target时间内完成日志的写入和回放,可以保证主机与备机切换时能够在recovery_time_target完成日志写入和回放,保证备机能够快速升主机。
默认值:60
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:一般设置为默认值,不作调整。
设置不当的风险与影响:设置过小会影响主机的性能,例如设置为10,说明备机回放相对备机接收日志有延迟,允许延迟最大为10s,如果超过了10s,则会限制主机往备机段发送日志,对主机的性能会有限制,在主备场景下,主机的事务需要有备机日志落盘才能提交,限制了日志的发送会限制主机的事务执行影响到性能。设置过大会失去流控效果。关闭流控后,可能会出现RTO/RPO升高的情况。
recovery_max_workers
参数说明:设置并行回放线程的最大数量。recovery_parse_workers和recovery_redo_workers同时为1,即不开启极致RTO,此参数才能生效。
参数类型:整型
参数单位:无
取值范围:0~20
默认值:4
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置过大,会导致CPU、内存资源不足,造成回放速度降低。
recovery_parallelism
参数说明:查询并行回放线程的实际数量。
参数类型:整型
参数单位:无
取值范围:1~165
默认值:4
设置方式:该参数属于POSTMASTER类型参数,但是不能直接修改。recovery_max_workers、recovery_parse_workers、recovery_redo_workers这3个参数的任意一个被修改时,recover_parallelism都将被重新计算。
设置建议:该参数为只读参数,无法修改。
设置不当的风险与影响:无
queue_item_size
参数说明:设定每个redo replay 线程的任务队列最大长度。
参数类型:整型
参数单位:无
取值范围:1~65535
默认值:560
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:设置过大,会占用较多的内存资源。
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、内存和I/O资源越多。请根据实际硬件配置合理设置参数,否则可能会因为资源不足而导致系统无法启动。混合部署场景可能对主机性能有影响。
设置不当的风险与影响:设置过大,会导致CPU、内存资源不足,造成回放速度降低。
recovery_redo_workers
参数说明:是极致RTO特性中每个ParseRedoRecord线程对应的PageRedoWorker数量。recovery_redo_workers需要配合recovery_parse_workers使用,recovery_parse_workers或者recovery_redo_workers大于1,则开启极致RTO。如不期望开启极致RTO,请保持recovery_redo_workers为默认值1。
参数类型:整型
参数单位:无
取值范围:1~8
默认值:1
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:不同CPU、内存和部署模式下,recovery_parse_workers和recovery_redo_workers的设置值可参考表1 不同CPU、内存和部署模式下的参数设置参考。
设置不当的风险与影响:设置过大,会导致CPU、内存资源不足,造成回放速度降低。
编号 |
CPU个数 |
内存(GB) |
是否混合部署 |
recovery_parse_workers |
recovery_redo_workers |
回放线程总数 |
备注 |
---|---|---|---|---|---|---|---|
1 |
4 |
- |
- |
1 |
1 |
- |
不推荐开极致RTO |
2 |
8 |
- |
是 |
1 |
1 |
- |
不推荐开极致RTO |
3 |
8 |
64 |
否 |
1 |
3 |
10 |
- |
4 |
16 |
128 |
是 |
1 |
2 |
9 |
- |
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。
参数类型:布尔型
参数单位:无
取值范围:
- on:表示开启数据页lsn检查开关。
- off:表示关闭数据页lsn检查开关。
默认值:on
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:该参数关闭后,可能无法快速发现数据页错误,导致预期外的报错。
recovery_min_apply_delay
参数说明:设置备节点回放的延迟时间。
参数类型:整型
参数单位:ms(毫秒)
取值范围:0~2147483647
默认值: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时打印warning级别日志。
默认值:1
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:推荐使用默认值。
设置不当的风险与影响:请在充分理解参数含义,并经过测试验证后进行修改,避免出现意料之外的结果。
redo_bind_cpu_attr
参数说明:用于控制回放线程的绑核操作,仅sysadmin用户可以访问。
参数类型:字符串
参数单位:无
- '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'
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:见下方说明。
设置不当的风险与影响:错误的设置会造成数据库节点无法启动。
- 本参数主要用于arm环境下的绑核操作。推荐将所有的回放线程绑定到一个numa组内,性能会更好,针对混合部署的场景,推荐将同一个机器上的不同节点的回放线程绑定到不同的numa组。
- 通过本参数设置的绑核区间应与通过GUC参数thread_pool_attr设置的线程池绑核区间错开。