金仓数据库KingbaseES数据库参考手册(服务器配置参数7. 复制)

目录

7.1. 发送服务器 ¶

7.2. 主服务器 ¶

7.3. 后备服务器 ¶

7.4. 订阅者 ¶


这些设置控制内建流复制特性的行为。服务器将可以是主控服务器或后备服务器。主控机能发送数据,而后备机总是被复制数据的接收者。当使用级联复制时,后备服务器也可以是发送者,同时也是接收者。这些参数主要用于发送服务器和后备服务器,尽管某些只在主服务器上有意义。如果有必要,设置可以在集群中变化而不出问题。

7.1. 发送服务器 

这些参数可以在任何发送复制数据给一个或多个后备服务器的服务器上设置。主控机总是一个发送服务器,因此这些参数总是要在主控机上设置。这些参数的角色和含义不会在一个后备机变成主控机后改变。

max_wal_senders

属性

描述

类型

integer

默认值

10

级别

KINGBASE---实例级

指定来自后备服务器或流式基础备份客户端的并发连接的最大数量(即同时运行 WAL 发送进程 的最大数)。默认值是 10 。值 意味着禁用复制。 突然的流客户端断开连接可能留下一个孤立连接槽(知道达到超时),因此这个参数应该设置得略高于最大客户端 连接数,这样断开连接的客户端可以立刻重新连接。这个参数只能在服务器启动时被设置。此外, wal_level 必须设置为 replica 或更高级别以允许来自后备服 务器的连接。

在运行备用服务器时,必须将此参数设置为与主服务器相同或更高的值。否则,备用服务器将不允许查询。

max_replication_slots

属性

描述

类型

integer

默认值

10

级别

KINGBASE---实例级

指定服务器可以支持的复制槽 最大数量。默认值为10。这个参数只能在服务器启动时设置。将它设置为一个比当前已有复制槽要少的值会阻碍服务器启动。此外,要允许使用复制槽, wal_level 必须被设置为 replica 或 更高。

wal_keep_segments

属性

描述

类型

integer

默认值

0

级别

SIGHUP---会话级

指定在后备服务器需要为流复制获取日志段文件的情况下, sys_wal 目录下所能保留的过去日志文件段的最小数目。每个段通常是 16兆字节。如果一个连接到发送服务器的后备服务器落后了超过 wal_keep_segments 个段,发送服务器可以移除一个后备机仍然需要的 WAL段,在这种情况下复制连接将被中断。最终结果是下行连接也将最终失败(不过,如果在使用 WAL 归档,后备服务器可以通过从归档获取段来恢复)。 只设置 sys_wal 中保留的文件段的最小数目;系统可能需要为WAL 归档或从一个检查点恢复保留更多段,更多的空间来 存放WAL归档或从一个检查点恢复。如果wal_keep_segments是零(缺省), 系统不会为后备目的保留任何多余的段,因此后备服务器可用的旧 WAL 段的数量是一个上个检查点位置和 WAL 归档状态的函数。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。

wal_init_zero

属性

描述

类型

boolean

默认值

on

级别

SUPERUSER---超级用户级

如果设置为 on (默认值),这个选项会导致新的WAL文件被填满0。在某些文件系统上,这可以确保在需要写入WAL记录之前分配空间。但是,Copy-On-Write (COW)文件系统可能不会受益于这种技术,因此可以选择跳过不必要的工作。如果设置为 off ,则在创建文件时只写入最后一个字节,使其具有预期的大小。

wal_recycle

属性

描述

类型

boolean

默认值

on

级别

SUPERUSER---超级用户级

如果设置为 on (默认值),这个选项会通过重命名使WAL文件被回收,从而避免了创建新文件的需要。在COW文件系统上,创建新文件系统可能更快,因此提供了禁用此行为的选项。

wal_sender_timeout

属性

描述

类型

integer

默认值

60s

级别

USER---用户级

中断那些停止活动超过指定毫秒数的复制连接。这对发送服务器检测一个后备机崩溃或 网络中断有用。零值将禁用该超时机制。 默认值是60秒。对于分布在多个地理位置的集群,每个位置使用不同的值可以为集群管理带来更大的灵活性。对于具有低延迟网络连接的备用服务器,较小的值有助于更快地进行故障检测;对于具有高延迟网络连接的远程服务器,较大的值有助于更好地判断备用服务器的健康状况。

track_commit_timestamp

属性

描述

类型

boolean

默认值

off

级别

KINGBASE---实例级

记录事务的提交时间。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是 off 

7.2. 主服务器 

这些参数可以在发送复制数据给一个或多个后备服务器的主控/主要服务器上设置。注意除了这些参数之外,在主控服务器上必须设置合适的 wal_level ,并且也启用可选的 WAL归档,这些参数值与后备服务器无关。

synchronous_standby_names

属性

描述

类型

string

默认值

' '

级别

SIGHUP---会话级

这个参数指定一个支持 同步复制 的后备服务器的列表。可能会有一个或者多个活动的同步后备服务器,在这些后备服务器确认收到它们的数据之后,等待提交的事务将被允许继续下去。同步后备服务器是那些名字出现在这个列表前面,并且当前已连接并且正在实时流传输数据的服务器。指定多于一台同步后备可以得到非常高的可用性并且能防止数据丢失。

用于这一目的的后备服务器的名称是其 application_name 设置, 它在后备服务器的连接信息中设置。在物理复制后备的情况下,应该在 primary_conninfo 设置中设置;默认设置是 cluster_name (如果设置),否则为 walreceiver 。对于逻辑复制,可以在订阅的连接信息中设置。 对于其他复制流消费者,请参考其文档。

这个参数使用下面的语法之一来指定一个后备服务器列表:

[FIRST] num_sync ( standby_name [, ...] )
ANY num_sync ( standby_name [, ...] )
standby_name [, ...]

其中 ``num_sync`` 是事务需要等待其回复的同步后备服务器的数量, ``standby_name`` 是一个后备服务器的名称。 FIRST 以及 ANY 指定从所列服务器中选取同步后备的方法。

关键词 FIRST 加上 ``num_sync`` 指定一种基于优先的同步复制,并且会让事务提交等待,直到它们的WAL记录被复制到基于优先级选择的 ``num_sync`` 台同步后备上为止。例如,设置 FIRST 3 (s1, s2, s3, s4) 将导致每次提交都等待来自三台较高优先级的后备机的答复,这三台后备机将从后备服务器 s1 、 s2 、 s3 以及 s4 中选出。在该列表中出现较早的后备服务器将被给予较高的优先级,并且将被考虑为同步后备。列表中出现的其他后备服务器表示潜在的同步后备。如果当前的任何同步后备因为某种原因断开连接,它将立刻被下一个最高优先级的后备服务器替代。关键词 FIRST 是可选的。

关键词 ANY 加上 ``num_sync`` 指定一种基于规定数量的同步复制,并且会让事务提交等待,直到它们的WAL记录被复制到所列出后备服务器中的至少 ``num_sync`` 台上为止。例如,设置 ANY 3 (s1, s2, s3, s4) 将导致每次提交会在收到 s1 、 s2 、 s3 以及 s4 中任意三台后备服务器的回答后立刻继续下去。

FIRST 和 ANY 是大小写不敏感的。如果这些关键词被用作后备服务器的名字,其 ``standby_name`` 必须被放在双引号内。

KingbaseES版本 |V8R2| 之前使用过第三种语法,目前也仍然支持。它和 FIRST 和 ``num_sync`` 等于1的第一种语法相同。例如, FIRST 1 (s1, s2) 和 s1, s2 具有相同的含义: s1 或者 s2 会被选中作为同步后备服务器。

特殊项 匹配任意后备名称。

没有机制强制后备服务器名称的唯一性。在出现重复的情况下,匹配的后备之一将被认为是较高优先级,不过无法弄清到底是哪一个。

注意

每一个 ``standby_name`` 都应该具有合法 SQL 标识符的形式,除非它是 。如果必要可以使用双引号。但是注意在比较 ``standby_name`` 和后备机应用程序名称时是大小写不敏感的(不管有没有双引号)。

如果这里没有指定同步后备机名称,那么同步复制不能被启用并且事务提交将不会等待复制。这是默认的配置。即便当同步复制被启用时,个体事务也可以被配置为不等待复制,做法是将 synchronous_commit 参数设置为 local 或 off 

这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。

vacuum_defer_cleanup_age

属性

描述

类型

integer

默认值

0

级别

SIGHUP---会话级

指定 VACUUM 和HOT更新在清除死亡行版本之前,应该推迟多久(以事务数量计)。默认值是零个事务,表示死亡行版本将被尽可能快地清除,即当它们不再对任何打开的事务可见时尽快清除。在一个支持热后备服务器的主服务器上,可以把这个参数设置为一个非零值。这允许后备机上的查询有更多时间来完成而不会由于先前的行清除产生冲突。但是,由于该值是用在主服务器上发生的写事务的数目衡量的,很难预测对后备机查询可用的附加时间到底是多少。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。

可以通过设置后备服务器上的 hot_standby_feedback 来作为使用这个参数的一种替代方案。

这无法阻止已经达到 old_snapshot_threshold 所指定年龄的死亡行被清除。

7.3. 后备服务器 

这些设置空值接收复制数据的一个后备服务器的行为。它们的值与主服务器无关。

primary_conninfo

属性

描述

类型

string

默认值

' '

级别

KINGBASE---实例级

指定用于备用服务器与发送服务器连接的连接字符串。如果该字符串中有未指定的选项,则选中相应的环境变量。如果环境变量也没有设置,则使用默认值。

连接字符串应该指定发送服务器的主机名(或地址),以及端口号(如果它与备用服务器的默认端口号不同)。还要指定与发送服务器上具有适当特权的角色对应的用户名。如果发送方需要口令身份验证,还需要提供口令。它可以在 primary_conninfo 字符串中提供,或是备用服务器上的单独的 ~/.kbpass 文件(使用 replication 作为数据库名称)。不要在 primary_conninfo 字符串中指定数据库名称。

此参数只能在服务器启动时设置。如果服务器没有处于备用模式,则此设置无效。

primary_slot_name

属性

描述

类型

string

默认值

' '

级别

KINGBASE---实例级

可选地指定在通过流复制连接到发送服务器以控制上游节点上的资源删除时使用的现有复制槽 。此参数只能在服务器启动时设置。如果没有设置 primary_conninfo ,则此设置无效。

promote_trigger_file

属性

描述

类型

string

默认值

' '

级别

SIGHUP---会话级

指定一个触发器文件,该文件的存在将结束备用系统中的恢复。即使未设置此值,仍然可以促进备用使用 sys_ctl promote , 或者调用 sys_promote 。此参数只能在 kingbase.conf 文件或在服务器命令行中设置。

hot_standby

属性

描述

类型

boolean

默认值

on

级别

KINGBASE---实例级

指定在恢复期间,是否能够连接并运行查询。默认值是 on 。这个参数只能在服务器启动时设置。它只在归档恢复期间或后备机模式下才有效。

max_standby_archive_delay

属性

描述

类型

integer

默认值

30s

级别

SIGHUP---会话级

当热后备机处于活动状态时,这个参数决定取消那些与即将应用的 WAL 项冲突的后备机查询之前,后备服务器应该等待多久。当 WAL 数据被从 WAL 归档(并且因此不是当前的 WAL)时, max_standby_archive_delay 可以应用。默认值是 30 秒。如果没有指定,衡量单位是毫秒。值 -1 允许后备机一直等到冲突查询结束。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。

注意, max_standby_archive_delay 与取消之前一个查询能够运行的最长时间不同;它表示应用任何一个 WAL 段数据能够被允许的最长总时间。因此,如果一个查询早于 WAL 段导致了显著的延迟,后续冲突查询将只有更少的时间。

max_standby_streaming_delay

属性

描述

类型

integer

默认值

30s

级别

SIGHUP---会话级

当热后备机处于活动状态时,这个参数决定取消那些与即将应用的 WAL 项冲突的后备机查询之前,后备服务器应该等待多久。当 WAL 数据正在通过流复制被接收时, max_standby_streaming_delay 可以应用。默认值是 30 秒。如果没有指定,衡量单位是毫秒。值 -1 允许后备机一直等到冲突查询结束。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。

注意, max_standby_streaming_delay 与取消之前一个查询能够运行的最长时间不同;它表示在从主服务器接收到 WAL 数据并立刻应用它能够被允许的最长总时间。因此,如果一个查询导致了显著的延迟,后续冲突查询将只有更少的时间,直到后备服务器再次赶上进度。

wal_receiver_status_interval

属性

描述

类型

integer

默认值

10s

级别

SIGHUP---会话级

指定在后备机上的 WAL 接收者进程向主服务器或上游后备机发送有关复制进度的信息的最小频度,可以使用 sys_stat_replication 视图看到。后备机将报告它已经写入的上一个预写式日志位置、它已经刷到磁盘的上一个位置以及它已经应用的最后一个位置。这个参数的值是报告之间的最大间隔,以秒计。每次写入或刷出位置改变时会发送状态更新,或者至少按这个参数的指定的频度发送。因此,应用位置可能比真实位置略微滞后。将这个参数设置为零将完全禁用状态更新。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是 10 秒。

hot_standby_feedback

属性

描述

类型

boolean

默认值

off

级别

SIGHUP---会话级

指定一个热后备机是否将会向主服务器或上游后备机发送有关于后备机上当前正被执行的查询的反馈。这个参数可以被用来排除由于记录清除导致的查询取消,但是可能导致在主服务器上用于某些负载的数据库膨胀。反馈消息的发送频度不会高于每个 wal_receiver_status_interval 周期发送一次。默认值是 off 。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。

如果使用级联复制,反馈将被向上游传递直到它最后到达主服务器。后备机在接收到反馈之后除了传递给上游不会做任何其他操作。

这个设置不会覆盖主服务器上的 old_snapshot_threshold 的行为,后备服务器上一个超过了主服务器年龄阈值的快照可能会变得不可用,导致后备服务器上事务的取消。这是因为 old_snapshot_threshold 是为了对死亡行能够存在的时间给出一个绝对限制,不然就会因为一个后备服务器的配置而被违背。

wal_receiver_timeout

属性

描述

类型

integer

默认值

60s

级别

SIGHUP---会话级

中止处于非活动状态超过指定毫秒数的复制链接。这对于正在接收的后备服务器检测主服务器崩溃或网络断开有用。值零会禁用超时机制。这个参数只能在 kingbase.conf 文件中或在服务器命令行上设置。默认值是 60 秒。

wal_retrieve_retry_interval

属性

描述

类型

integer

默认值

5s

级别

SIGHUP---会话级

指定当从任何来源(流复制、本地 sys_wal 或者 WAL 归档)都得不到 WAL 数据时,后备服务器应该等待多久才去重新尝试 获取 WAL 数据。这个参数只能在 kingbase.conf 文件 或者服务器命令行中设置。默认值是 5 秒。如果没有指定,则单位是毫秒。

这个参数对恢复中的节点需要为新 WAL 数据可用等待多少时间的配置有用。 例如,在归档恢复中,通过减小这个参数的值可以让恢复更积极地检测新的 WAL 日志文件。在一个 WAL 活动较低的系统上,增加这个参数的值可以减 少访问 WAL 归档所必需的请求数量,这对于例如云环境是有用的,在其中 对于基础设施的访问时间也是被考虑的。

recovery_min_apply_delay

属性

描述

类型

integer

默认值

0

级别

SIGHUP---会话级

默认情况下,备用服务器将尽快从发送服务器恢复WAL记录。拥有一个延迟的数据副本可能会很有用,这为纠正数据丢失错误提供了机会。此参数允许恢复延迟一段固定的时间(如果没有指定单元,则以毫秒为单位)。例如, 5min ,那么只有当备用系统的时间比主系统报告的提交时间至少晚5分钟时,备用系统才会重新执行每个事务提交。

服务器之间的复制延迟可能超过此参数的值,在这种情况下不添加延迟。请注意,延迟是在主服务器上写的WAL时间戳和备用服务器上的当前时间之间计算的。由于网络延迟或级联复制配置而导致的传输延迟可能会显著减少实际的等待时间。如果主备系统上的时钟不同步,则可能导致应用记录的恢复比预期的要早;但这不是一个主要问题,因为此参数的有用设置比服务器之间的典型时间偏差大得多。

延迟只发生在事务提交的WAL记录上。其他记录会尽可能快地重放,这不是问题,因为MVCC可见性规则确保它们的效果在应用相应的提交记录之前是不可见的。

当处于恢复状态的数据库达到一致状态时,直到提升或触发备用数据库时,才会发生延迟。之后,备用服务器将结束恢复,不再等待。

此参数用于流式复制部署;但是,如果指定了参数,则在所有情况下都将使用该参数。 hot_standby_feedback 将延迟使用此功能,这可能会导致主机膨胀;两者一起使用时要小心。

警告

同步复制将被影响当 synchronous_commit 被设置为 remote_apply ;每个 COMMIT 需要等待应用。

此参数只能在 kingbase.conf 文件或在服务器命令行中设置。

7.4. 订阅者 

这些设置控制逻辑复制订阅者的行为。它们在发布者上的值与此无关。

注意,配置参数 wal_receiver_timeout 、 wal_receiver_status_interval 以及 wal_retrieve_retry_interval 也影响逻辑复制工作者。

max_logical_replication_workers

属性

描述

类型

int

默认值

4

级别

KINGBASE---实例级

指定逻辑复制工作者的最大数目。这同时包括应用工作者和表同步工作者。

逻辑复制工作者是从 max_worker_processes 定义的池中取出的。

max_sync_workers_per_subscription

属性

描述

类型

integer

默认值

2

级别

SIGHUP---会话级

每个订阅的同步工作者的最大数目。这个参数控制订阅初始化期间或者新表增加时的初始数据拷贝的并行度。

当前,每个表只能有一个同步工作者。

同步工作者是从 max_logical_replication_workers 定义的池中取出的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值