设置
wal_level
参数说明:设置写入WAL信息量的级别,不能为空或被注释掉。
- 如果需要启用WAL日志归档和主备机的数据流复制,必须将此参数设置为archive、hot_standby或者logical。
- 如果此参数设置为minimal,hot_standby必须设置为off,max_wal_senders参数设置为0,且需为单机环境,否则将导致数据库无法启动。
- 如果此参数设置为archive,hot_standby必须设置为off,否则将导致数据库无法启动。但是,hot_standby在双机环境中不能设置为off,具体参见hot_standby参数说明。
参数类型:枚举类型
取值范围:
- minimal
优点:一些重要操作(包括创建表、创建索引、簇操作和表的复制)都能安全的跳过,这样就可以使操作变得更快。
缺点:WAL仅提供从数据库服务器崩溃或者紧急关闭状态恢复时所需要的基本信息,无法用WAL归档日志恢复数据。
- archive
- hot_standby
- 这个参数进一步增加了在备机上运行的SQL查询的信息,这个参数只能在数据库服务重新启动后生效。
- 为了在备机上开启只读查询,wal_level必须在主机上设置成hot_standby,并且备机必须打开hot_standby参数。hot_standby和archive级别之间的性能只有微小的差异,如果它们的设置对产品的性能影响有明显差异,欢迎反馈。
- logical
默认值:hot_standby
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:开启逻辑复制功能时设置为logical,其他场景设置为hot_standby。
fsync
参数说明:设置GaussDB服务器是否使用fsync()系统函数(请参见wal_sync_method)确保数据的更新及时写入物理磁盘中。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
- 使用fsync()系统函数可以保证在操作系统或者硬件崩溃的情况下将数据恢复到一个已知的状态。
- 如果将此参数关闭,可能会在系统崩溃时无法恢复原来的数据,导致数据库不可用。
取值范围:布尔型
- on表示使用fsync()系统函数。
- off表示不使用fsync()系统函数。
默认值:on
synchronous_commit
参数说明:设置当前事务的同步方式。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
- 主机将日志内容写入本地内存。
- 主机将本地内存中的日志写入本地文件系统。
- 主机将本地文件系统中的日志内容刷盘。
- 主机将日志内容发送给备机。
- 备机接收到日志内容,存入备机内存。
- 备机将备机内存中的日志写入备机文件系统。
- 备机将备机文件系统中的日志内容刷盘。
- 备机回放日志,完成对数据文件的增量更新。
取值范围:枚举类型
- on:表示主机事务提交需要等待备机将对应日志刷新到磁盘。
- off:表示主机事务提交无需等待主机自身将对应日志刷新到磁盘,通常也称为异步提交。
- local:表示主机事务提交需要等待主机自身将对应日志刷新到磁盘,通常也称为本地提交。
- remote_write:表示主机事务提交需要等待备机将对应日志写到文件系统(无需刷新到磁盘)。
- remote_receive:表示主机事务提交需要等待备机接收到对应日志数据(无需写入文件系统)。
- remote_apply:表示主机事务提交需要等待备机完成对应日志的回放操作。
- true:同on。
- false:同off。
- yes:同on。
- no:同off。
- 1:同on。
- 0:同off。
- 2:同remote_apply。
默认值:on
该参数由CM维护,如果手动修改,则存在丢失数据的风险。详细请参考 “工具参考 > 统一集群管理工具 > 特性介绍 > 按分片自动升降副本 > 备注说明 ”。
wal_sync_method
参数说明:设置向磁盘强制更新WAL数据的方法。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
如果将fsync关闭,这个参数的设置就没有意义,因为所有数据更新都不会强制写入磁盘。
取值范围:枚举类型
- open_datasync表示用带O_DSYNC选项的open()打开“WAL”文件。
- fdatasync表示每次提交的时候都调用fdatasync()(支持suse10和suse11)。
- fsync_writethrough表示每次提交的时候调用fsync()强制把缓冲区任何数据写入磁盘。
由于历史原因,Windows平台支持将wal_sync_method设置为fsync_writethrough。在windows平台上fsync_writethrough和fsync等效。
- fsync表示每次提交的时候调用fsync()(支持suse10和suse11)。
- open_sync表示用带O_SYNC选项的open()写“WAL”文件(支持suse10和suse11)。
不是所有的平台都支持以上参数。
默认值:fdatasync
full_page_writes
参数说明:设置GaussDB服务器在检查点之后对页面的第一次修改时,是否将每个磁盘页面的全部内容写到WAL日志中。当enable_incremental_checkpoint和enable_double_write同时打开时,则不使用full_page_writes。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
- 设置这个参数是因为在操作系统崩溃过程中可能磁盘页面只写入了一部分内容,从而导致在同一个页面中包含新旧数据的混合。在崩溃后的恢复期间,由于在WAL日志中存储的行变化信息不够完整,因此无法完全恢复该页。把完整的页面影像保存下来就可以保证页面被正确还原,代价是增加了写入WAL日志的数据量。
- 关闭此参数,在系统崩溃的时候,可能无法恢复原来的数据。如果服务器硬件的特质(比如电池供电的磁盘控制器)可以减小部分页面的写入风险,或者文件系统特性支持(比如ReiserFS 4),并且清楚知道写入风险在一个可以接受的范畴,可以关闭这个参数。
取值范围:布尔型
- on表示启用此特性。
- off表示关闭此特性。
默认值:on
wal_log_hints
参数说明:设置在检查点之后对页面的第一次修改为页面上元组hint bits的修改时,是否将整个页面的全部内容写到WAL日志中。不推荐用户修改此设置。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔型
- on表示整个页面全部内容写到WAL日志中。
- off表示整个页面内容不会写到WAL日志中。
默认值:on
wal_buffers
参数说明:设置用于存放WAL数据的共享内存空间的大小,可以以XLOG_BLCKSZ的个数表示,同时也可以以实际的大小表示。XLOG_BLCKSZ是XLOG块的大小,一般默认为8kB。
参数类型:整型
参数单位:8kB(XLOG_BLCKSZ)
取值范围:-1,4~218,最小值为-1,最大值为262144(XLOG_BLCKSZ的个数)。
- 如果设置为-1,表示wal_buffers的大小随着参数shared_buffers自动调整。wal_buffers默认为shared_buffers的1/32,最小值为8个XLOG_BLCKSZ,最大值为2048个XLOG_BLCKSZ,自动调整后的值小于最小值时会被强制设置为最小值,大于最大值时会被强制设置为最大值。
- 如果设置为其他值,当小于4时(0、1、2、3),会被强制设置为4。
默认值:
1GB(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,64核CPU/512G内存,60核CPU/480G内存,32核CPU/256G内存);512MB(16核CPU/128G内存);256MB(8核CPU/64G内存);128MB(4核CPU/32G内存);16MB(4核CPU/16G内存)
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。例如,取值2048表示wal_buffers为2048* 8kB;取值20480kB表示wal_buffers为20480kB。取值如果要带单位,必须为kB、MB、GB,且必须设置为8kB整数倍。
设置建议:每次事务提交时,WAL缓冲区的内容都写入到磁盘中,因此设置为很大的值不会带来明显的性能提升。如果将它设置成几百兆,在有很多即时事务提交的服务器上提高写入磁盘的性能。根据经验,默认值可以满足大多数的情况,不建议修改。避免设置明显不合理(过大或过小)的wal_buffers值,应满足条件:data_replicate_buffer_size + segment_buffers + shared_buffers + wal_buffers + temp_buffers + maintenance_work_mem + work_mem + query_mem + (备机)wal_receiver_buffer_size < max_process_memory < 物理机内存大小。如果设置的内存参数数值过大,超过物理内存上限,将会导致数据库由于无法申请到足够的内存而启动失败的情况。
wal_writer_delay
参数说明:WalWriter线程的写间隔时间。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
如果时间过长可能造成WAL缓冲区的内存不足,时间过短会引起WAL不断写入,增加磁盘I/O负担。
取值范围:整型, 1~10000(毫秒)
默认值:200ms
commit_delay
参数说明:表示一个已经提交的数据在WAL缓冲区中存放的时间。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
- 设置为非 0 值时事务执行commit后不会立即写入WAL中,而仍存放在WAL缓冲区中,等待WalWriter线程周期性写入磁盘。
- 如果系统负载很高,在延迟时间内,其他事务可能已经准备好提交。但如果没有事务准备提交,这个延迟就是在浪费时间。
取值范围:整型, 0~100000(微秒),其中0表示无延迟。
默认值:0
commit_siblings
参数说明:当一个事务发出提交请求时,如果数据库中正在执行的事务数量大于此参数的值,则该事务将等待一段时间(commit_delay的值),否则该事务则直接写入WAL。
该参数属于USERSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型, 0~1000
默认值:5
wal_block_size
参数说明:说明WAL日志段文件中日志页面的大小。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:整型,单位为Byte。
默认值:8192
wal_segment_size
参数说明:说明WAL日志段文件的大小。
该参数属于INTERNAL类型参数,为固定参数,用户无法修改此参数,只能查看。
取值范围:整型,单位为8KB。
默认值:16MB (2048 * 8KB)
walwriter_cpu_bind
参数说明:把walwriter线程绑定到指定CPU核上运行。
参数类型:整型
参数单位:无
取值范围:-1~核数减1。CPU核从0号开始排序。
- -1:表示不进行绑核操作。
- N:表示把walwriter线程绑定到第N号CPU核上。
默认值:-1
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:建议设置为默认值。
wal_sender_bind_cpu_attr
参数说明:用于控制日志发送的绑核操作,仅sysadmin用户可以访问。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
- 'nobind':线程不做绑核。
- 'cpuorderbind: 8-12': 从8号核开始一个线程绑定一个CPU,区间内核不足就不参与绑定。建议区间大小设置为大于等于参数max_wal_senders。
取值范围:字符串,长度大于0,该参数不区分大小写。
默认值:'nobind'
walwriteraux_bind_cpu
参数说明:绑定到辅助写日志线程的CPU核。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型,-1~核数减1。
默认值:-1
walwriter_sleep_threshold
参数说明:xlogflusher进入sleep之前空闲xlog刷新的次数,达到阈值会休眠。
参数类型:整型
参数单位:次
取值范围:1-50000
默认值:500(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,64核CPU/512G内存,60核CPU/480G内存);50(32核CPU/256G内存,16核CPU/128G内存,8核CPU/64G内存,4核CPU/32G内存,4核CPU/16G内存)
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:建议设置为默认值。
wal_file_init_num
参数说明:WalWrtier线程启动时一次创建xlog段文件的数量。
参数类型:整型
参数单位:无
取值范围:0~1000000
默认值:10(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,64核CPU/512G内存,60核CPU/480G内存);0(32核CPU/256G内存,16核CPU/128G内存,8核CPU/64G内存,4核CPU/32G内存,4核CPU/16G内存)
设置方式:该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
设置建议:建议设置为默认值。
wal_file_preinit_bounds
参数说明:设置业务运行时,WAL writer辅助线程每秒可预扩的WAL日志段文件的数量限制(WAL日志段文件的大小为16MB)。当该参数值为0时,表示不进行限制。
参数类型:整型
参数单位:无
取值范围:0~1024
默认值:0
设置方式:该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
设置建议:设置为默认值,不做调整。当把该参数设置为有效值时,需基于磁盘IO能力进行设置,可参考参数max_io_capacity的数值进行设置:
- 若max_io_capacity为500MB,可设置为25;
- 若max_io_capacity为1GB,可设置为50。
xlog_file_path
参数说明:双数据库实例共享存储场景下,xlog日志共享盘的路径。本参数在数据库系统初始化时由OM进行配置,不建议用户自行修改。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:字符串。
默认值:NULL
xlog_file_size
参数说明:双数据库实例共享存储场景下,xlog日志共享盘的大小。本参数在数据库系统初始化时由OM进行配置,不建议用户自行修改。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:长整型,5053733504~576460752303423487,单位是字节。
默认值:549755813888
xlog_lock_file_path
参数说明:双数据库实例共享存储场景下,xlog日志共享盘抢占的锁文件的路径。本参数在数据库系统初始化时由OM进行配置,不建议用户自行修改。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:字符串。
默认值:NULL
max_size_for_shared_storage_xlog_write
参数说明:控制共享盘单次写入的最大数据量。
参数类型:整型
参数单位:KB
取值范围:8~131072
默认值:1024
设置方式:该参数属于POSTMASTER类型参数,请参考表表1中对应设置方法进行设置。
设置建议:无
force_promote
参数说明:备机强切功能开关。
备机强切在数据库实例故障状态下,以丢失部分数据为代价换取数据库实例尽可能快的恢复服务;是数据库实例状态为不可用时的一个逃生方法,不建议频繁触发。如果操作者不清楚备机强切后丢失数据对业务的影响,请勿使用本功能。
使用时需要分别在DN和cmserver开启并重启数据库实例生效,备机强切功能参考《故障处理》中“应急处理 > 备机强切”章节。
取值范围:整型,0或1
0表示关闭,1表示开启
默认值:0
wal_debug
参数说明:允许输出wal相关的调试信息。仅在编译时开启WAL_DEBUG编译宏时可用。
该参数属于SUSET类型参数,请参考表1中对应设置方法进行设置。
取值范围:布尔类型
默认值:false
wal_flush_timeout
参数说明:遍历WalInsertStatusEntryTbl的超时时间。Xlog刷盘自适应控制的刷盘IO遍历WalInsertStatusEntryTbl等待的最大时间。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
如果时间过长可能造成Xlog刷盘频率降低,降低Xlog处理性能。
取值范围:整型, 0 ~ 90000000(微秒)
默认值:
2us(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,64核CPU/512G内存,60核CPU/480G内存,32核CPU/256G内存,16核CPU/128G内存,8核CPU/64G内存,4核CPU/32G内存);800us(4核CPU/16G内存)
wal_flush_delay
参数说明:遍历WalInsertStatusEntryTbl时,遇到WAL_NOT_COPIED状态entry时等待的时间间隔。
该参数属于SIGHUP类型参数,请参考表1中对应设置方法进行设置。
取值范围:整型, 0 ~ 90000000(微秒)
默认值:
1us(196核CPU/1536G内存,128核CPU/1024G内存,104核CPU/1024G内存,96核CPU/1024G内存,96核CPU/768G内存,80核CPU/640G内存,64核CPU/512G内存,60核CPU/480G内存,32核CPU/256G内存,16核CPU/128G内存,8核CPU/64G内存,4核CPU/32G内存);100us(4核CPU/16G内存)
wal_receiver_bind_cpu
参数说明:WAL receiver 线程绑定cpu的核号。
默认是-1,-1是无效值,就是不绑核。
虽然数值范围为INT_MAX,但是实际和所用设备核数相关,所设定CPU核号不存在时报错中断。
多个线程允许绑定一个核,但是性能下降,不建议。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:最大值INT_MAX ,最小值-1。
默认值:-1
wal_rec_writer_bind_cpu
参数说明:WAL rec writer 线程绑定cpu的核号。
默认是-1,-1是无效值,就是不绑核。
虽然数值范围为INT_MAX,但是实际和所用设备核数相关,所设定CPU核号不存在时报错中断。
多个线程允许绑定一个核,但是性能下降,不建议。
该参数属于POSTMASTER类型参数,请参考表1中对应设置方法进行设置。
取值范围:最大值INT_MAX ,最小值-1。
默认值:-1