数据库参数配置

参数说明

参数名缩写类型生效类型生效策略说明
—dbpath-dstr1. 指定数据文件存放路径。2. 如果不指定,则默认为当前路径。
—indexpath-istr1. 指定索引文件存放路径。2. 如果不指定,则默认与’dbpath’相同。
—confpath-cstr1. 指定配置文件路径(不包含文件名),系统会在confpath下寻找sdb.conf。
2. sdb.conf中填入需要的配置项,配制方法为:参数名 = 参数值。如 svcname=11810;diaglevel=3
3. 如果不指定此参数,系统默认在当前路径寻找sdb.conf。
4. sdb.conf可以不存在。
—logpath-lstr1. 副本节点在进行数据同步时会生成同步日志。此参数用来指定同步日志的路径。
2. 如果不指定,则默认路径为:数据文件路径/replicalog
—diagpathstr重启生效1. 指定诊断日志存放目录。
2. 如果不指定,则默认为:数据文件路径/diaglog
—auditpathstr重启生效1. 指定审计日志存放目录。
2. 如果不指定,则默认为:数据文件路径/diaglog
—diagnumnum在线生效当前文件写满时生效1. 指定诊断日志文件最大数量。
2. 如果不指定,则默认为:20,-1表示不限制,取值范围[-1, 231 - 1]。
—auditnumnum在线生效当前文件写满时生效1. 指定审计日志文件最大数量。
2. 如果不指定,则默认为:20,-1表示不限制,取值范围[-1, 231 - 1]。
—bkuppathstr1. 指定备份文件生成目录。
2. 如果不指定,则默认为:数据文件路径/bakfile
—maxpoolnum在线生效1. 指定线程池内线程数量。
2. 如果不指定,则默认为50,取值范围是[0,10000]。
—svcname-pstr1. 指定本地服务端口,用于对客户端提供服务。
2. 协调节点默认端口为 11810,编目节点默认端口为 11800,数据节点默认端口为 11820。
—replname-rstr1. 指定数据复制服务端口,默认端口为 svcname+1。
2. 该参数只对编目节点和数据节点有效。
—shardname-astr指定数据分区服务端口,默认端口为 svcname+2
—catalogname-xstr1. 指定编目服务端口,默认端口为 svcname+3。
2. 该参数只对编目节点有效。
—httpname-sstr指定 HTTP 服务端口,默认端口为 svcname+4
—diaglevel-vnum在线生效1. 指定诊断日志打印级别。SequoiaDB中诊断日志从0-5分别代表:SEVERE, ERROR, EVENT, WARNING, INFO, DEBUG。
2. 如果不指定,则默认为WARNING。
—auditmaskstr在线生效新连接生效1. 指定审计日志打印掩码。SequoiaDB中审计日志类型有:ACCESS,CLUSTER,SYSTEM,DML,DDL,DCL,DQL,INSERT,DELETE,UPDATE,OTHER。
2. 如果不指定,则默认为”SYSTEM|DDL|DCL”, ALL取值表示开启所有,NONE关闭全部。
3. 更详细的内容可参考审计日志
—role-ostr1. 指定服务角色。SequoiaDB分别以data/coord/catalog/standalone代表:数据节点/协调节点/编目节点/单机。
2. 如果不指定则默认为单机。
—catalogaddr-tstr1. 指定编目节点的地址。配置形式为”hostname1:catalogname1,hostname2:catalogname2,…”。
2. 需要至少指定一个编目节点的地址。
—logfilesz-fnum1. 指定同步日志文件的大小。合法输入为64(MB)- 2048(MB)。
2. 如果不指定,则默认为64(MB)。
3. 同步日志的总大小(logfilesz * logfilenum)决定了在同步过程中的容错能力,日志越大则触发全量同步的可能性越小。
—logfilenum-nnum1. 指定同步日志文件的数量。
2. 如果不指定,则默认为20。
—transactionon-eboolean重启生效1. 是否开启事务功能。默认为true
2. 当开启事务功能,’logfilenum’ 必须大于1。
—transactiontimeoutnum在线生效1. 事务锁等待超时时间(单位:秒),默认为:60,取值范围[0,3600]
—numpreloadnum重启生效页面预加载代理数据,默认值为0,取值范围:[0,100]
—maxprefpoolnum重启生效数据预取代理池最大数量,默认值:0,取值范围:[0,1000]
—maxreplsyncnum在线生效日志同步最大并发数量,默认值:10,取值范围:[0,200], 0表示不启用日志并发同步
—logbuffsizenum重启生效复制日志内存页面数,默认值:1024,取值范围:[512,1024000],但日志总内存大小不能超过日志总文件大小;每个页面大小为64KB
—tmppathstr重启生效数据库临时文件目录,默认为’数据库路径’+’/tmp’
—sortbufnum在线生效下次查询生效排序缓存大小(MB),默认值256,最小值128,取值范围[128, 231 - 1]
—hjbufnum在线生效下次查询生效哈希连接缓存大小(MB),默认值128,最小值64,取值范围[64, 231 - 1]
—syncstrategystr在线生效1. 副本组之间数据同步控制策略。
2. 取值列表:
● none: 不开启同步控制策略。若主节点处理数据的能力远超备节点同步数据的能力,则在写操作繁忙的场景下易导致备节点发生全量同步。
● keepnormal: 主动降低主节点相对于正常节点的处理速度(可能会造成性能影响),以避免全量同步的发生。
● keepall: 主动降低主节点相对于所有节点的处理速度(可能会造成性能影响),以避免全量同步的发生。
3. keepnormal和keepall的区别在于,当有节点异常时keepall会降低主节点的处理速度,而keepnormal不受异常节点的影响。
4. 如果不指定,默认为keepnormal。
—preferedinstancestr在线生效新连接生效1. 指定执行读请求时优先选择的实例
2. 如果不指定,则默认值为M,即选择可读写实例。
3. 取值可以取单值单独指定,也可以取多值混合指定;在 SequoiaDB 的配置文件中可以使用 ‘,’ 连接多个值。连接多值时字符串最大长度为 256。如:”1,2,S”。
4. 取值范围:
● 取值类型分为两类,一类是角色取值,如 “M”, “S” 等;一类是实例取值,即数据节点通过配置 instanceid 设置的实例 ID。
● 角色取值:”M”, “m”:可读写实例(主实例);”S”, “s”: 只读实例(备实例);”A”, “a”: 任意角色实例。
● 实例取值:1-255,指定匹配 instanceid 设置的节点。数据节点可以通过配置 instanceid 配合使用。
5. 更详细的内容请参考 db.setSessionAttr()
—preferedinstancemodestr在线生效新连接生效1. 指定当多个实例符合 preferedinstance 的条件时的选择模式。
2. 取值列表:
● “random”: 从候选的实例取值中随机选择。
● “ordered”: 从候选的实例取值中按照 perferedinstance 的顺序进行选择。
● preferedinstance 中的角色取值,根据规则选择时优于或者次于实例取值,与 preferedinstancemode 取值无关。
3. 默认值为 “random”。
4. 更详细的内容请参考 db.setSessionAttr()
—preferedstrictboolean在线生效新连接生效指定节点选择是否为严格模式,当为严格模式时,节点只能从 preferedinstance 指定的ID中选取,默认为false。
—preferedperiodnum在线生效新连接生效1. 优先实例的有效周期,单位为秒。
2. 如果上一次选择进行请求的节点在有效周期内,读请求仍使用该节点进行查询,周期之后,将根据 preferedinstance 重新选择。
3. 默认值为 60 秒。
4. 取值范围为 [-1, 231 - 1]
5. -1 表示不失效
6. 0 表示本次查询不使用上次选择的实例,根据 preferedinstance 进行重新选择。
—instanceidnum重启生效1. 节点的实例 ID,用于 preferedinstance 进行实例选择。
2. 有效的取值包括 [1, 255]。
3. 如不指定,或者指定超出有效范围,则按照节点在编目信息中的下标进行自动分配。
4. 多个节点可以指定相同的实例 ID。
—lobpathstr1. 指定大对象存放路径。
2. 如果不指定,则默认为:数据文件路径
—lobmetapathstr1. 指定大对象元数据存放路径。
2. 如果不指定,则默认与’lobpath’保持一致
—directioinlobboolean在线生效新建集合空间生效在大对象功能中关闭文件系统缓存,如果不指定,默认值为”false”
—sparsefileboolean在线生效当扩展文件时,使用稀疏文件功能,如果不指定,默认值为”false”
—weightnum在线生效节点选举权重, 默认值为10, 取值范围[1, 100]
—usesslboolean在线生效新连接生效允许客户端使用SSL连接(仅限企业版),默认为false
—authboolean在线生效开启鉴权功能.默认为true
—planbucketsnum在线生效下次查询生效1. 访问计划缓存内桶的个数。
2. 当其为0时数据库将不会缓存任何访问计划。
3. 默认为500,最大值为4096。
4. 更详细的内容可参考 访问计划缓存
—optimeoutnum在线生效判定操作中断的时间(ms),默认值:60000, 0表示不超时,取值范围[0, 231 - 1]
—overflowrationum在线生效记录大小预留空间扩展比(%),默认为12,取值范围:[0,10000]
—omaddrstr1. 指定om节点的地址。配置形式为”hostname:omservicename”。
—maxcachesizenum在线生效节点缓存最大值,单位为MB,默认值为0,取值范围[0, 231 - 1](注意:该配置目前仅对Lob功能生效)
—maxcachejobnum在线生效1. 后台缓存任务线程的最大数量,默认值为10,取值范围为[2, 200]。
2. 后台缓存任务线程主要执行同步脏页至文件,回收和释放空闲内存页。
3. 后台缓存任务线程根据缓存的负载情况自动启动和退出。
4. 该配置目前仅对Lob功能生效。
—cachemergesznum在线生效每一个集合空间用于合并页的缓存大小,默认为0,取值范围:[0,64],单位为MB(注意:该配置目前仅对Lob功能生效)
—pagealloctimeoutnum在线生效申请缓存页的超时时间,默认为0,取值范围:[0,3600000],单位为毫秒
—maxsyncjobnum在线生效1. 后台数据同步任务线程的最大数量,默认值为10,取值范围为[2, 200]。
2. 后台数据同步任务线程主要执行同步脏数据和日志至文件。
3. 后台数据同步任务线程根据负载情况自动启动和退出。
—syncintervalnum在线生效1. 后台数据同步周期,单位毫秒。
2. 对于编目节点和om节点,默认值为10000,取值范围(0, 60000]
3. 对于其它类型的节点,默认值为10000,0表示不按周期触发数据同步,取值范围[0, 231 - 1]
—syncrecordnumnum在线生效1. 后台数据同步触发记录数。
2. 对于编目节点和om节点,默认值为10,取值范围(0, 1000]
3. 对于其它类型的节点,默认值为0,0表示不按记录数触发数据同步,取值范围[0, 231 - 1]
—syncdeepboolean在线生效1. 数据同步是否开启深度刷盘。
2. 如果不指定,则默认为false。
—archiveonboolean重启生效开启复制日志归档功能,默认值为false。
—archivecompressonboolean在线生效新归档文件生效开启复制日志归档压缩功能,默认值为true。
—archivepathstr1. 此参数用来指定归档日志的路径。
2. 如果不指定,则默认路径为:数据文件路径/archivelog。
—archivetimeoutnum在线生效判定未归档的超时时间(秒),默认值:600,0表示不超时, 取值范围[0, 231 - 1]。
—archiveexpirednum在线生效归档日志文件的过期时间(小时),默认值:240,0表示不过期, 取值范围[0, 11930464]。
—archivequotanum在线生效归档日志目录的磁盘配额(GB),默认值:10,0表示没有限制,取值范围[0, 231 - 1]。
—dataerroropnum在线生效1. 节点在无法继续正常增量同步而可能触发全量同步时的处理操作,取值为 0/1/2。 缺省为1。
2. 取值列表:
● 0: 不作任何处理,保持节点运行。
● 1: 自动从该数据组的其它节点进行全量同步。
● 2: 该节点停止运行。
—maxconnnum在线生效指定允许连接到引擎的客户端的最大数量,取值范围为[0,30000], 默认值是0,0表示不限制
—plancachelevelnum在线生效下次查询生效1. 指定查询计划的缓存级别,默认是 3。
2. 取值列表:
● 0: 不缓存查询计划。
● 1: 缓存原查询计划。
● 2: 缓存泛化后的查询计划。
● 3: 缓存参数化的查询计划。
● 4: 缓存参数化并带操作符模糊匹配的查询计划。
—svcschedulernum重启生效1. 指定任务调度器类型,默认是0。
2. 取值列表:
● 0: 不开启。
● 1: 先入先出。
● 2: 基于优先级调度。
● 3: 基于容器调度。
—svcmaxconcurrencynum在线生效1. 指定任务执行的最大并发数,0表示不限制。默认值为100,取值范围[0, 231 - 1]。
2. 当’svcscheduler’取值为0时,该参数不生效。
—transisolationnum在线生效下一次事务中生效1. 指定事务隔离级别,默认是0。
2. 取值列表:
● 0: RU,读未提交。
● 1: RC, 读已提交。
● 2: RS,读稳定性。
● 3: RR,可重复读。
—translockwaitboolean在线生效下一次事务中生效1. 指定事务在RC隔离级别下记录锁的等待行为,默认是false。需要与transisolation配合使用
2. 当mvccon被设为true时,translockwait 会被默认为false。
3. 取值列表:
● false: 不等待记录锁,直接从系统读取最后一次提交的版本。
● true: 等待记录锁,读取最新提交版本的数据
—transautocommitboolean在线生效下一次事务中生效是否开启自动事务提交,默认是false。只有当 transaction 开启时取值才会生效。
—transautorollbackboolean在线生效下一次事务中生效1.事务操作失败是否自动回滚该事务。默认为true。只有当 transaction 开启时取值才会生效。
—transuserbsboolean在线生效下一次事务中生效1. 事务操作是否使用回滚段。默认为true。只有当 transaction 开启时取值才会有效。
2. 当mvccon被设为true时,transuserbs 会被默认为true。
—transrccountboolean在线生效下一次事务中生效是否使用读已提交来处理 count() 查询。默认为 true。只有当 transaction 开启时,且隔离级别为读已提交 RC 或者读稳定性 RS,取值才会有效。
—logwritemodstr在线生效复制日志写模式,取值:increment,full,默认为increment。为increment时,复制日志只保存更新记录的增量信息;为full时,复制日志将保存更新记录的完整信息。
—logtimeonboolean在线生效开启复制日志保存时间信息功能,默认为false。
—maxsocketpernodenum在线生效两个节点之间的最大连接数,取值范围:[1,100],默认为5。
—maxsocketperthreadnum在线生效一个线程驱动最大连接数,0表示不限制,默认为1。
—maxsocketthreadnum在线生效通信最大驱动线程数,取值范围[1,100],默认10。
—monslowquerythresholdnum在线生效单位:ms。默认为200。
—mongroupmaskstr在线生效用于设置监控组的详细监控级别。有效的组值为“slowQuery”或者”all”。有效的监控级别可以为“off”,“basic”或者“detail”。
—ftmaskstr在线生效1. 指定开启容错处理的掩码。SequoiaDB中容错掩码有:NOSPC,DEADSYNC,SLOWNODE
2. 如果不指定,则默认为”NOSPC|DEADSYNC”, ALL取值表示开启所有,NONE关闭全部。
—ftconfirmperiodnum在线生效故障确认的时间周期,默认为60,取值范围:[1,3600],单位为秒
—ftconfirmrationum在线生效故障确认的故障比阈值,默认为80,取值范围:[1,100],单位为百分比
—ftlevelnum在线生效容错级别,1(熔断), 2(半容错), 3(全容错). 默认为2
—ftfusingtimeoutnum在线生效熔断超时时间,默认为10,取值范围:[0,3600],单位:秒
—ftslownodethresholdnum在线生效慢节点检测的日志差阈值,默认:256,取值范围:[1,10000],单位:MB
—ftslownodeincrementnum在线生效慢节点检测的日志增量值,默认:8,取值范围:[0,10000],单位:MB
—syncwaittimeoutnum在线生效数据一致性同步等待超时时间,默认为600,取值范围:[1,3600],单位:秒
—shutdownwaittimeoutnum在线生效主数据节点停机时等待备节点数据同步超时时间,默认为1200,取值范围:[0,864000],单位:秒
—servicemaskstr重启生效屏蔽服务端口的掩码,取值为 LOCAL、REPL、SHARD、CATALOG 和 HTTP,可以使用’|’连接多个值,默认值为 NONE。
LOCAL:禁用本地服务端口。如果禁用协调节点的本地服务端口,会导致数据库不能为客户端提供服务。
REPL:禁用数据同步服务端口。如果禁用编目节点或数据节点的数据同步服务端口,会导致主节点和备节点数据不一致,通常不应该禁用。
SHARD:禁用数据分区服务端口。如果禁用任一节点的数据分区服务端口,会导致数据操作失败,通常不应该禁用。
CATALOG:禁用编目服务端口。如果禁用编目节点的编目服务端口,会导致节点操作失败、数据操作失败,通常不应该禁用。
HTTP:禁用 HTTP 服务端口。如果禁用节点的 HTTP 服务端口,会导致该节点不能提供 HTTP 服务。
—mvcconboolean重启生效1. 指定是否打开多版本。
2. 如果不指定,则默认为false。
3. 只有当 transactionon 开启时,取值才会有效。
4. 当mvccon被设为true时,transuserbs 会被默认为true。
5. 当mvccon被设为true时,translockwait 会被默认为false。
—globtransonboolean重启生效1. 指定是否支持全局事务功能。
2. 如果不指定,则默认值为 false。
3. 只有当 transactionon 开启时,取值才会有效。
4. 全局事务功能要求接入全局时间服务支持,并且数据节点打开 MVCC 支持。

Note:
1. “生效类型”为在线生效的配置能进行在线修改,不需要重启就能生效。
2. “生效类型”为重启生效的配置能进行在线修改,需要重启后生效。
3. “生效类型”为空的配置不能进行在线修改。同步日志参数 logfilesz 和 logfilenum 虽然不能在线修改配置,但是可以通过特殊方式进行修改,请参考同步日志

参数配置

SequoiaDB 支持命令行方式及配置文件方式进行参数配置。

命令行方式配置

在启动 sequoiadb 时传入配置参数值:

  1. $ ./sequoiadb --businessname yyy --catalogaddr ubuntu-wjm:30003,ubuntu-wjm:30013,ubuntu-wjm:30023 --clustername xxx --dbpath /home/users/wjm/sequoiadb/trunk/50000 --diaglevel 3 --role coord --svcname 50000

配置文件方式配置

在启动 sequoiadb 时传入配置文件路径:

  1. $ ./sequoiadb -c ../conf/local/50000/

配置文件内容如下:

  1. businessname=yyy
  2. catalogaddr=ubuntu-wjm:30003,ubuntu-wjm:30013,ubuntu-wjm:30023
  3. clustername=xxx
  4. dbpath=/home/users/wjm/sequoiadb/trunk/50000
  5. diaglevel=3
  6. role=coord
  7. svcname=50000

Note:

当两种方式并存时,命令行参数将会覆盖配置文件中的相同的配置项。

配置动态生效

  • 使用 updateConf() 以及 deleteConf() 在线修改配置。

  • 使用 reloadConf() 重新加载配置文件,并进行配置动态生效,只支持“生效类型”列为“在线生效”的配置项,其他配置项会被忽略。“生效策略”若无其他说明,则默认为立即生效。