PostgreSQL 10.1 手册_部分 III. 服务器管理_第 19 章 服务器配置_19.6. 复制

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 19.6. 复制 19.6.1. 发送服务器 19.6.2. 主服务器 19.6.3. 后备服务器 19.6.4. 订阅 这些设置控制内建流复制特性(见第 26.2.5 节)的行为。服务器将可以是主控服务器或后备服务器。

19.6. 复制

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

19.6.1. 发送服务器

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

max_wal_senders (integer)

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

max_replication_slots (integer)

指定服务器可以支持的复制槽(见第 26.2.6 节) 最大数量。默认值为10。这个参数只能在服务器启动时设置。要允许使用复制槽, wal_level必须被设置为archive或 更高。把它的值设置为低于现有复制槽的数量会阻止服务器启动。

wal_keep_segments (integer)

指定在后备服务器需要为流复制获取日志段文件的情况下,pg_wal目录下所能保留的过去日志文件段的最小数目。每个段通常是 16 兆字节。如果一个连接到发送服务器的后备服务器落后了超过wal_keep_segments个段,发送服务器可以移除一个后备机仍然需要的 WAL 段,在这种情况下复制连接将被中断。最终结果是下行连接也将最终失败(不过,如果在使用 WAL 归档,后备服务器可以通过从归档获取段来恢复)。

只设置pg_wal中保留的文件段的最小数目;系统可能需要为 WAL 归档或从一个检查点恢复保留更多段。如果wal_keep_segments为零(默认值), 更多的空间来 存放WAL归档或从一个检查点恢复。如果wal_keep_segments是零(缺省), 系统不会为后备目的保留任何多余的段,因此后备服务器可用的旧 WAL 段的数量是一个上个检查点位置和 WAL 归档状态的函数。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。

wal_sender_timeout (integer)

中断那些停止活动超过指定毫秒数的复制连接。这对发送服务器检测一个后备机崩溃或网络中断有用。零值将禁用该超时机制。这个参数只能在postgresql.conf文件中或在服务器命令行上设置。默认值是 60 秒。

track_commit_timestamp (boolean)

记录事务提交时间。这个参数只能在postgresql.conf文件 或者服务器命令行上设置。缺省值是off

19.6.2. 主服务器

这些参数可以在发送复制数据给一个或多个后备服务器的主控/主要服务器上设置。注意除了这些参数之外,在主控服务器上必须设置合适的wal_level,并且也启用可选的 WAL 归档(见第 19.5.3 节)。这些参数值与后备服务器无关,尽管你可能希望为了准备好一个后备机转变成主控机来设置这些参数。

synchronous_standby_names (string)

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

用于此目的的备用服务器的名称是备用数据库的application_name设置, 如备用数据库的连接信息中所设置的。在物理复制备用的情况下, 这应该在recovery.confprimary_conninfo 设置中设置;默认值是walreceiver。对于逻辑复制, 可以在订阅的连接信息中设置,并且它默认为订阅名称。对于其他复制流消费者, 请参阅他们的文档。

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

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

其中num_sync 是事务需要等待其回复的同步后备服务器的数量,standby_name 是一个后备服务器的名称。 FIRSTANY 指定从列出的服务器中选择同步备用数据库的方法。

关键字FIRST加上num_sync, 指定基于优先级的同步复制,并使事务提交等待, 直到它们的WAL记录被复制到根据其优先级进行选择的 num_sync同步备用数据库。 例如,FIRST 3 (s1, s2, s3, s4) 的设置将导致每个提交等待来自从备用服务器 s1s2s3s4 中选择出来的三个更高级备用服务器的回复。 其名称出现在列表前面的备用数据库被赋予更高的优先级,并将被视为同步。 在列表后面出现的其他备用服务器代表潜在的同步备用服务器。 如果任何当前的同步备用服务器因任何原因断开连接, 它将立即被次最高优先级的备用机器替换。关键字FIRST是可选的。

关键字ANY加上num_sync, 指定基于数量的同步复制,并使事务提交等待,直到它们的WAL记录被复制到 至少num_sync 个列出的备用服务器。例如,ANY 3 (s1, s2, s3, s4) 的设置将导致每个提交至少被s1s2、 s3 和s4中的任意三个备用服务器回复处理。

FIRSTANY是大小写无关的。 如果这些关键字用作备用服务器的名称,那么 standby_name必须是双引号引用的。

第三种语法在PostgreSQL版本9.6之前使用,并且仍然受支持。 它与第一个使用FIRSTnum_sync 等于1的语法相同。例如,FIRST 1 (s1, s2)s1, s2 具有相同的含义:选择s1s2作为同步备用。

特殊项*匹配任何备用服务器名称。

没有机制来强制备用名称的唯一性。在重复的情况下, 匹配的备用数据库之一将被视为较高优先级,但确切地说哪一个是不确定的。

注意

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

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

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

vacuum_defer_cleanup_age (integer)

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

你也可以考虑设置后备服务器上的hot_standby_feedback作为使用这个参数的一种替代方案。

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

19.6.3. 后备服务器

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

hot_standby (boolean)

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

max_standby_archive_delay (integer)

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

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

max_standby_streaming_delay (integer)

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

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

wal_receiver_status_interval (integer)

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

hot_standby_feedback (boolean)

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

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

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

wal_receiver_timeout (integer)

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

wal_retrieve_retry_interval (integer)

指定等待服务器应等待多长时间时, 当重试检索WAL数据之前来自任何源 (流复制,本地pg_wal或者WAL归档)的WAL数据不可用。 此参数只能在postgresql.conf文件或服务器命令行设置。 缺省值是5秒。如果没有指定,单位是毫秒。

此参数有助于配置恢复节点控制等待新的WAL数据可用的时间数。 例如,在归档恢复中,通过减少此参数的值检测一个新的WAL日志文件中使得恢复更加敏感, 这种做法是有可能的。在一个低WAL活动系统中,增加它减少了必要的访问WAL归档的需求量, 一些有用例子在云环境中访问基础设施的时间量要考虑在内。

19.6.4. 订阅

这些设置控制逻辑复制订阅的行为。发布者的值无关紧要。

请注意,wal_receiver_timeout和 wal_retrieve_retry_interval配置参数还影响逻辑复制工作。

max_logical_replication_workers (int)

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

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

默认值是4。

max_sync_workers_per_subscription (integer)

每个订阅的最大同步工作者数量。 此参数控制订阅初始化期间或添加新表时初始数据副本的并行数量。

目前,每个表只能有一个同步工作进程。

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

默认值是2。

本文转自PostgreSQL中文社区,原文链接:19.6. 复制

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
弹性计算 大数据 云计算
阿里云最便宜的云服务器多少钱一年?2024年阿里云服务器配置报价参考
阿里云最便宜的云服务器多少钱一年?在云计算的浪潮中,阿里云作为行业佼佼者,经常推出各种优惠活动。近期,阿里云为新用户推出了两款极具竞争力的服务器产品:一款是2核2G3M的轻量应用服务器,秒杀价年付仅需61元;另一款则是同配置的云服务器ECS,年费仅需99元。那么,面对这两款服务器,我们该如何选择呢?
|
4天前
|
存储 Oracle Unix
TSM服务器日常维护简明手册--TSM启动和停止
TSM服务器日常维护简明手册--TSM启动和停止
|
2月前
|
网络协议 Linux 网络安全
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
Linux服务器DNS服务器配置实现bind的正向解释和反向解释
23 0
|
2月前
|
弹性计算 缓存 数据库
2核4G配置服务器一年多少钱?2024年阿里云2核4G配置服务器配置报价
2核4G配置服务器一年多少钱?2024年阿里云2核4G配置服务器配置报价
|
2月前
|
机器学习/深度学习 弹性计算 程序员
2024年阿里云服务器降价,2024年阿里云新版优惠活动服务器配置报价整理汇总!
对于我们这些资深的程序员而言,选择一个既经济又高效的云服务器是项目成功的关键。阿里云作为国内云服务领域的佼佼者,其服务器产品一直备受信赖。近期,阿里云再次调整了其服务器价格策略,新版收费价格已经出炉,并且带来了大量的优惠!这对于正在寻找稳定、高性能云服务器的企业和个人用户来说,无疑是一个巨大的福音。首先,让我们来看看轻量应用服务器。这款2核2G3M配置的服务器,价格仅为62元一年。对于那些需要搭建小型网站或应用的人来说,这是一个非常实惠的选择。接下来是经济型e实例云服务器ECS。这款服务器以其实惠的价格和稳定的性能,深受用户喜爱。从2核2G配置的99元一年,到8核32G版本的4299.84元,
116 0
|
2月前
|
弹性计算 安全 程序员
2024年阿里云大降价!2核2G云服务器配置价格及阿里云服务器活动内容揭秘!
随着云计算技术的飞速发展,选择一款稳定、高效、安全的云服务器已成为许多企业和个人的共识。在众多云服务提供商中,阿里云凭借其卓越的性能和口碑,赢得了广大用户的青睐。那么,对于想要购买阿里云2核2G云服务器的朋友们来说,2024年的价格究竟如何呢?对于资深程序员来说,服务器的配置和价格都是选择的关键因素。而阿里云的2核2G3M轻量应用服务器,正是一款性价比极高的选择。在2024年,阿里云针对新用户推出了前所未有的优惠活动。具体来说,新用户购买这款2核2G3M轻量应用服务器,可以享受1折秒杀的优惠,年付价格仅需61元。这样的价格,对于许多初入云计算领域的新手来说,无疑是一个极具吸引力的优惠。
|
2月前
|
存储 弹性计算 大数据
阿里云16核32G服务器价格多少?2024年阿里云16核32G云服务器配置价格及测评参考
阿里云16核32G服务器价格多少?给你提供阿里云16核32G云服务器的详细测评。关于2024年阿里云16核32G云服务器的价格:阿里云16核32G云服务器的价格因不同的实例类型和配置选项而有所不同。一般来说,这种高配置的服务器适用于需要处理大规模数据或运行高负载业务的企业级用户。
350 1
|
2月前
|
弹性计算 小程序 大数据
阿里云4核8G配置云服务器价格多少钱?2024年阿里云4核8G配置云服务器配置报价参考
在数字化浪潮中,云服务器成为了企业与个人的首选。其中,阿里云以其稳定的服务和卓越的性能赢得了广大用户的信赖。那么,对于许多关注性能与价格的用户来说,[阿里云4核8G通用算力型u1实例云服务器ECS]的价格是多少呢? 在本次阿里云的特惠活动中,这款备受瞩目的云服务器配置展现出了极高的性价比。尤其是对于那些首次体验阿里云服务的用户来说,更是能够享受到专享的优惠价格——仅需955.58元一年!这样的价格,在同类产品中无疑是相当吸引人的。 通用算力型u1实例,作为阿里云的一款明星产品,不仅提供了均衡的计算、内存和网络资源,更能满足大多数场景下的应用需求。无论是搭建个人网站、进行小程序开发,还是支持
58 0
|
2月前
|
弹性计算 数据挖掘 大数据
阿里云4核8G云服务器怎么样?2024年阿里云4核8G云服务器测评:价格配置、CPU性能
在数字化时代,数据成为驱动业务发展的核心力量。因此,无论是个人站长还是企业用户,都对云服务器的性能和价格提出了更高要求。阿里云作为国内云服务市场的领军者,始终致力于为用户提供卓越性能和极具竞争力的价格。阿里云4核8G通用算力型u1实例云服务器ECS备受瞩目。这款服务器凭借强大的4核CPU和8GB内存,能够轻松应对搭建网站、应用服务器以及进行数据分析和计算等多重任务。而其年度价格仅为955.58元,换算下来每月仅需80元,这一价格无疑在同类产品中极具竞争力。对于那些寻求高性能服务器以支持业务发展的用户来说,阿里云这款4核8G服务器无疑是一个理想选择。它不仅提供了出色的性能,还通过优惠活动大大降低
93 0
|
2月前
|
存储 弹性计算 ice
阿里云ECS云服务器怎么样?2024年阿里云ECS云服务器配置价格表
阿里云云服务器ECS的价格表因不同的配置、实例类型、地域和促销活动等因素而有所不同。以下是一些常见的阿里云云服务器ECS价格表信息: 1. 按量付费:按量付费是一种灵活的计费方式,您可以根据实际需求选择实例规格、操作系统、存储和带宽等配置,并按照实际使用情况进行计费。按量付费的价格通常比预付费要高一些,但灵活性更高,适合短期或临时使用云服务器的用户。