<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>参考 on PIG.CENTER</title><link>https://pig.center/zh/categories/%E5%8F%82%E8%80%83/</link><description>Recent content in 参考 on PIG.CENTER</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Tue, 08 Sep 2026 21:29:01 +0800</lastBuildDate><atom:link href="https://pig.center/zh/categories/%E5%8F%82%E8%80%83/index.xml" rel="self" type="application/rss+xml"/><item><title>pgBadger 13.x 版本记录</title><link>https://pig.center/zh/docs/pgbadger/releases/13/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/releases/13/</guid><description>&lt;p&gt;本页按从新到旧的顺序保留 pgBadger 13.x 的完整上游变更记录。为确保版本、参数、提交者致谢和兼容性描述不被转述改变，正文保留英文原文。&lt;/p&gt;&#10;&lt;h2 id="v13-2"&gt;v13.2 · 2025-12-29&#10;&lt;/h2&gt;&#10;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues and applied patches&#10;reported by users since last release.&lt;/p&gt;</description></item><item><title>注解命令（annotate）</title><link>https://pig.center/zh/docs/pgbackrest/command/annotate/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/annotate/</guid><description>&lt;p&gt;&lt;code&gt;backup&lt;/code&gt; 命令执行时附加的注解，可在事后通过 &lt;code&gt;annotate&lt;/code&gt; 命令进行添加、修改或删除。&lt;/p&gt;&#10;&lt;h2 id="命令选项"&gt;命令选项&#10;&lt;/h2&gt;&#10;&lt;h3 id="备份注解选项--annotation"&gt;备份注解选项（&lt;code&gt;--annotation&lt;/code&gt;）&#10;&lt;/h3&gt;&#10;&lt;p&gt;为备份添加用户自定义键值对注解。&lt;/p&gt;</description></item><item><title>动态配置</title><link>https://pig.center/zh/docs/patroni/config/dynamic/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/config/dynamic/</guid><description>&lt;p&gt;&lt;a id="dynamic"&gt;&lt;/a&gt;&#10;动态配置存储在 DCS（分布式配置存储）中，并应用于集群的所有节点。&lt;/p&gt;&#10;&lt;p&gt;如需修改动态配置，可使用 &lt;a href="https://pig.center/zh/docs/patroni/patronictl/#patronictl_edit_config"&gt;&lt;code&gt;patronictl edit-config&lt;/code&gt;&lt;/a&gt;&#10; 工具或 Patroni &lt;a href="https://pig.center/zh/docs/patroni/rest_api/#rest_api"&gt;&lt;strong&gt;REST API&lt;/strong&gt;&lt;/a&gt;&#10;。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;loop_wait&lt;/code&gt;&lt;/strong&gt;：主循环每轮的休眠秒数。默认值：10，最小值：1。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;ttl&lt;/code&gt;&lt;/strong&gt;：获取领导者锁的 TTL（秒）。可以理解为触发自动故障转移前的等待时长。默认值：30，最小值：20。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;retry_timeout&lt;/code&gt;&lt;/strong&gt;：DCS 和 PostgreSQL 操作的重试超时时间（秒）。若 DCS 或网络故障时长短于此值，Patroni 不会对主库执行降级。默认值：10，最小值：3。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;警告&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;修改 &lt;strong&gt;&lt;code&gt;loop_wait&lt;/code&gt;&lt;/strong&gt;、&lt;strong&gt;&lt;code&gt;retry_timeout&lt;/code&gt;&lt;/strong&gt; 或 &lt;strong&gt;&lt;code&gt;ttl&lt;/code&gt;&lt;/strong&gt; 时，必须遵守以下约束：&lt;/p&gt;</description></item><item><title>新闻</title><link>https://pig.center/zh/docs/pgbackrest/news/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/news/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="release-2-59-1"&gt;pgBackRest 2.59.1 正式发布&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;2026 年 8 月 17 日&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;pgBackRest 社区很高兴地宣布 &lt;a href="https://pgbackrest.org"&gt;pgBackRest&lt;/a&gt;&#10; 2.59.1 正式发布。pgBackRest 是一款可靠、易用的备份与恢复解决方案，可无缝扩展以应对超大规模数据库和工作负载。&lt;/p&gt;</description></item><item><title>pgBadger 12.x 版本记录</title><link>https://pig.center/zh/docs/pgbadger/releases/12/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/releases/12/</guid><description>&lt;p&gt;本页按从新到旧的顺序保留 pgBadger 12.x 的完整上游变更记录。为确保版本、参数、提交者致谢和兼容性描述不被转述改变，正文保留英文原文。&lt;/p&gt;&#10;&lt;h2 id="v12-4"&gt;v12.4 · 2023-12-25&#10;&lt;/h2&gt;&#10;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues reported by&#10;users since last release.&lt;/p&gt;</description></item><item><title>归档获取命令（archive-get）</title><link>https://pig.center/zh/docs/pgbackrest/command/archive-get/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/archive-get/</guid><description>&lt;p&gt;PostgreSQL 通过此命令执行备份恢复、PITR，或将其作为流复制的替代方式来维持副本同步。WAL 段是 PostgreSQL 执行恢复或维护副本的必要条件。&lt;/p&gt;&#10;&lt;p&gt;配置多个仓库时，pgBackRest 按优先级顺序（如 &lt;code&gt;repo1&lt;/code&gt;、&lt;code&gt;repo2&lt;/code&gt; 等）依次从各仓库获取 WAL。速度更快或成本更低的存储应配置更高的优先级。若通过 &lt;code&gt;--repo&lt;/code&gt; 选项指定了某个仓库，则仅从该仓库中查找。&lt;/p&gt;</description></item><item><title>YAML 配置参数</title><link>https://pig.center/zh/docs/patroni/config/yaml/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/config/yaml/</guid><description>&lt;p&gt;&lt;a id="yaml"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="全局通用"&gt;全局/通用&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;name&lt;/code&gt;&lt;/strong&gt;：主机名称，在集群中必须唯一。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;namespace&lt;/code&gt;&lt;/strong&gt;：Patroni 在配置存储中保存集群信息的路径，默认值为 &lt;strong&gt;&lt;code&gt;/service&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;scope&lt;/code&gt;&lt;/strong&gt;：集群名称。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;a id="log_settings"&gt;&lt;/a&gt;&lt;/p&gt;</description></item><item><title>配置：pgbouncer.ini</title><link>https://pig.center/zh/docs/pgbouncer/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbouncer/config/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="描述"&gt;描述&#10;&lt;/h2&gt;&#10;&lt;p&gt;配置文件采用 &amp;ldquo;ini&amp;rdquo; 格式。节名称位于 &lt;code&gt;[&lt;/code&gt; 和 &lt;code&gt;]&lt;/code&gt; 之间。以 &lt;code&gt;;&lt;/code&gt; 或 &lt;code&gt;#&lt;/code&gt; 开头的行被视为注释并忽略。当 &lt;code&gt;;&lt;/code&gt; 和 &lt;code&gt;#&lt;/code&gt; 出现在行中间时，不会被识别为特殊字符。&lt;/p&gt;</description></item><item><title>pgBadger 11.x 版本记录</title><link>https://pig.center/zh/docs/pgbadger/releases/11/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/releases/11/</guid><description>&lt;p&gt;本页按从新到旧的顺序保留 pgBadger 11.x 的完整上游变更记录。为确保版本、参数、提交者致谢和兼容性描述不被转述改变，正文保留英文原文。&lt;/p&gt;&#10;&lt;h2 id="v11-8"&gt;v11.8 · 2022-04-08&#10;&lt;/h2&gt;&#10;&lt;p&gt;This release of pgBadger fix some issues reported by users since past&#10;three months and especially two fixes on new log entries detection in&#10;incremental mode.&lt;/p&gt;</description></item><item><title>归档推送命令（archive-push）</title><link>https://pig.center/zh/docs/pgbackrest/command/archive-push/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/archive-push/</guid><description>&lt;p&gt;接收来自 PostgreSQL 的 WAL 段，并将其归档到各个仓库中（仓库路径由带索引的 &lt;code&gt;repo-path&lt;/code&gt; 选项定义，详见 &lt;a href="https://pig.center/zh/docs/pgbackrest/configuration/#%e4%bb%93%e5%ba%93%e9%80%89%e9%a1%b9"&gt;&lt;strong&gt;仓库选项&lt;/strong&gt;&lt;/a&gt;&#10; 章节）。WAL 段可以立即推送到归档，也可以根据 &lt;code&gt;archive-async&lt;/code&gt; 的值先暂存在本地。配置了多个仓库时，&lt;code&gt;archive-push&lt;/code&gt; 会尽量向所有仓库推送。&lt;/p&gt;</description></item><item><title>Patroni 配置</title><link>https://pig.center/zh/docs/patroni/config/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/config/</guid><description>&lt;p&gt;&lt;a id="config"&gt;&lt;/a&gt;&#10;Patroni 的配置分为 3 种类型：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;全局 &lt;a href="https://pig.center/zh/docs/patroni/config/dynamic/#dynamic"&gt;&lt;strong&gt;动态配置&lt;/strong&gt;&lt;/a&gt;&#10;。&#10;这些选项存储在 DCS（分布式配置存储）中，并应用于集群的所有节点。动态配置可以随时通过 &lt;a href="https://pig.center/zh/docs/patroni/patronictl/#patronictl_edit_config"&gt;&lt;code&gt;patronictl edit-config&lt;/code&gt;&lt;/a&gt;&#10; 工具或 Patroni &lt;a href="https://pig.center/zh/docs/patroni/rest_api/#rest_api"&gt;&lt;strong&gt;REST API&lt;/strong&gt;&lt;/a&gt;&#10; 进行设置。如果更改的选项不属于启动配置，它们将异步地（在下一个唤醒周期时）应用到每个节点，随后触发重载。如果节点需要重启才能应用配置（对于上下文为 postmaster 且值已更改的 &lt;a href="https://www.postgresql.org/docs/current/view-pg-settings.html"&gt;PostgreSQL 参数&lt;/a&gt;&#10;），则会在成员数据 JSON 中设置一个特殊标志 &lt;strong&gt;&lt;code&gt;pending_restart&lt;/code&gt;&lt;/strong&gt;，同时节点状态也会通过 &lt;strong&gt;&lt;code&gt;&amp;quot;restart_pending&amp;quot;: true&lt;/code&gt;&lt;/strong&gt; 来体现这一情况。&lt;/p&gt;</description></item><item><title>环境变量</title><link>https://pig.center/zh/docs/patroni/config/env/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/config/env/</guid><description>&lt;p&gt;&lt;a id="env"&gt;&lt;/a&gt;&#10;可以使用系统环境变量覆盖 Patroni 配置文件中定义的部分配置参数。本文档列出了 Patroni 处理的所有环境变量。通过环境变量设置的值始终优先于配置文件中的值。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="全局通用"&gt;全局/通用&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_CONFIGURATION&lt;/code&gt;&lt;/strong&gt;：可通过 &lt;a href="https://pig.center/zh/docs/patroni/config/#config"&gt;&lt;code&gt;PATRONI_CONFIGURATION&lt;/code&gt;&lt;/a&gt;&#10; 环境变量为 Patroni 提供完整配置。设置此变量后，其他所有环境变量将被忽略！&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_NAME&lt;/code&gt;&lt;/strong&gt;：运行当前 Patroni 实例的节点名称，在集群内必须唯一。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_NAMESPACE&lt;/code&gt;&lt;/strong&gt;：Patroni 在配置存储中保存集群信息的路径。默认值：&amp;quot;/service&amp;quot;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_SCOPE&lt;/code&gt;&lt;/strong&gt;：集群名称。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="日志"&gt;日志&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_TYPE&lt;/code&gt;&lt;/strong&gt;：日志格式，可为 &lt;strong&gt;&lt;code&gt;plain&lt;/code&gt;&lt;/strong&gt; 或 &lt;strong&gt;&lt;code&gt;json&lt;/code&gt;&lt;/strong&gt;。使用 &lt;strong&gt;&lt;code&gt;json&lt;/code&gt;&lt;/strong&gt; 格式需要安装 &lt;a href="https://pig.center/zh/docs/patroni/installation/#extras"&gt;&lt;code&gt;jsonlogger&lt;/code&gt;&lt;/a&gt;&#10;。默认值为 &lt;strong&gt;&lt;code&gt;plain&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_LEVEL&lt;/code&gt;&lt;/strong&gt;：全局日志级别。默认值为 &lt;strong&gt;&lt;code&gt;INFO&lt;/code&gt;&lt;/strong&gt;（参见 &lt;a href="https://docs.python.org/3.6/library/logging.html#levels"&gt;Python logging 文档&lt;/a&gt;&#10;）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_TRACEBACK_LEVEL&lt;/code&gt;&lt;/strong&gt;：显示 traceback 的日志级别。默认值为 &lt;strong&gt;&lt;code&gt;ERROR&lt;/code&gt;&lt;/strong&gt;。若希望仅在 &lt;strong&gt;&lt;code&gt;PATRONI_LOG_LEVEL=DEBUG&lt;/code&gt;&lt;/strong&gt; 时才显示 traceback，可将其设置为 &lt;strong&gt;&lt;code&gt;DEBUG&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_FORMAT&lt;/code&gt;&lt;/strong&gt;：日志格式化字符串。若日志类型为 &lt;strong&gt;&lt;code&gt;plain&lt;/code&gt;&lt;/strong&gt;，格式应为字符串，可用属性参见 &lt;a href="https://docs.python.org/3.6/library/logging.html#logrecord-attributes"&gt;LogRecord 属性文档&lt;/a&gt;&#10;。若日志类型为 &lt;strong&gt;&lt;code&gt;json&lt;/code&gt;&lt;/strong&gt;，格式除字符串外还可以是列表，每个列表项对应一个 LogRecord 属性，只需填写字段名，省略 &lt;strong&gt;&lt;code&gt;%(&lt;/code&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;code&gt;)&lt;/code&gt;&lt;/strong&gt;。若希望以不同键名输出某个字段，可使用字典，键为日志字段名，值为希望在日志中显示的字段名。默认值为 &lt;strong&gt;%(asctime)s %(levelname)s: %(message)s&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_DATEFORMAT&lt;/code&gt;&lt;/strong&gt;：日期时间格式化字符串（参见 &lt;a href="https://docs.python.org/3.6/library/logging.html#logging.Formatter.formatTime"&gt;formatTime() 文档&lt;/a&gt;&#10;）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_STATIC_FIELDS&lt;/code&gt;&lt;/strong&gt;：为日志添加额外字段，仅在日志类型为 &lt;strong&gt;&lt;code&gt;json&lt;/code&gt;&lt;/strong&gt; 时可用。示例：&lt;strong&gt;&lt;code&gt;PATRONI_LOG_STATIC_FIELDS=&amp;quot;{app: patroni}&amp;quot;&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_MAX_QUEUE_SIZE&lt;/code&gt;&lt;/strong&gt;：Patroni 采用两步日志记录机制。日志记录先写入内存队列，由独立线程从队列中取出后写入 stderr 或文件。内存队列容量默认限制为 &lt;strong&gt;&lt;code&gt;1000&lt;/code&gt;&lt;/strong&gt; 条，足以保留过去约 1 小时 20 分钟的日志。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_DIR&lt;/code&gt;&lt;/strong&gt;：应用程序日志的写入目录。该目录必须已存在且对运行 Patroni 的用户可写。设置此变量后，默认保留 4 个 25MB 的日志文件，可通过 &lt;strong&gt;&lt;code&gt;PATRONI_LOG_FILE_NUM&lt;/code&gt;&lt;/strong&gt; 和 &lt;strong&gt;&lt;code&gt;PATRONI_LOG_FILE_SIZE&lt;/code&gt;&lt;/strong&gt; 调整（见下文）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_MODE&lt;/code&gt;&lt;/strong&gt;：日志文件权限（例如 &lt;strong&gt;&lt;code&gt;0644&lt;/code&gt;&lt;/strong&gt;）。若未指定，将基于当前 umask 值设置。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_FILE_NUM&lt;/code&gt;&lt;/strong&gt;：保留的应用程序日志文件数量。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_FILE_SIZE&lt;/code&gt;&lt;/strong&gt;：触发日志滚动的 patroni.log 文件大小（字节）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_LOGGERS&lt;/code&gt;&lt;/strong&gt;：按 Python 模块重新定义日志级别。示例：&lt;strong&gt;&lt;code&gt;PATRONI_LOG_LOGGERS=&amp;quot;{patroni.postmaster: WARNING, urllib3: DEBUG}&amp;quot;&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;PATRONI_LOG_DEDUPLICATE_HEARTBEAT_LOGS&lt;/code&gt;&lt;/strong&gt;：设置为 &lt;strong&gt;&lt;code&gt;true&lt;/code&gt;&lt;/strong&gt; 时，连续且内容相同的心跳日志不再重复输出。默认值为 &lt;strong&gt;&lt;code&gt;false&lt;/code&gt;&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;警告&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;HA 循环的执行时间是诊断资源耗尽等问题所致故障转移的重要信息。将 &lt;strong&gt;&lt;code&gt;PATRONI_LOG_DEDUPLICATE_HEARTBEAT_LOGS&lt;/code&gt;&lt;/strong&gt; 设置为 &lt;strong&gt;&lt;code&gt;true&lt;/code&gt;&lt;/strong&gt; 后，HA 循环执行将不产生日志（除非领导者发生变化），导致这些潜在有用的信息无法从日志中获取。&lt;/p&gt;</description></item><item><title>命令行参考</title><link>https://pig.center/zh/docs/pgbadger/command-line/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/command-line/</guid><description>&lt;p&gt;本页保留固定上游源码生成的完整命令参考。为了能与 &lt;code&gt;pgbadger --help&lt;/code&gt; 逐项核对，参数名、帮助文字和命令示例均保留英文原文。&lt;/p&gt;&#10;&lt;h2 id="usage-and-options"&gt;用法与选项&#10;&lt;/h2&gt;&#10;&lt;p&gt;Usage: pgbadger [options] logfile [&amp;hellip;]&lt;/p&gt;</description></item><item><title>pgBadger 10.x 版本记录</title><link>https://pig.center/zh/docs/pgbadger/releases/10/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/releases/10/</guid><description>&lt;p&gt;本页按从新到旧的顺序保留 pgBadger 10.x 的完整上游变更记录。为确保版本、参数、提交者致谢和兼容性描述不被转述改变，正文保留英文原文。&lt;/p&gt;&#10;&lt;h2 id="v10-3"&gt;v10.3 · 2019-02-14&#10;&lt;/h2&gt;&#10;&lt;p&gt;This release of pgBadger is a maintenance release that fixes some&#10;log format autodetection issues another pgBouncer log parsing issue&#10;reported by users. There is also a new feature:&lt;/p&gt;</description></item><item><title>备份命令（backup）</title><link>https://pig.center/zh/docs/pgbackrest/command/backup/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/backup/</guid><description>&lt;p&gt;配置多个仓库时，pgBackRest 默认备份到优先级最高的仓库（如 &lt;code&gt;repo1&lt;/code&gt;），除非通过 &lt;code&gt;--repo&lt;/code&gt; 选项明确指定目标仓库。&lt;/p&gt;&#10;&lt;p&gt;pgBackRest 本身不内置调度器，建议通过 cron 或其他调度机制触发备份。&lt;/p&gt;</description></item><item><title>Patroni REST API</title><link>https://pig.center/zh/docs/patroni/rest_api/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/rest_api/</guid><description>&lt;p&gt;&lt;a id="rest_api"&gt;&lt;/a&gt;&#10;Patroni 提供了丰富的 REST API，供 Patroni 自身在主库竞选期间调用，也供 &lt;a href="https://pig.center/zh/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; 工具执行故障转移、主从切换、重新初始化、重启和重载等操作，还可供 HAProxy 或其他负载均衡器执行 HTTP 健康检查，以及用于监控目的。以下是 Patroni REST API 端点的完整列表。&lt;/p&gt;</description></item><item><title>命令参考</title><link>https://pig.center/zh/docs/pgbackrest/command/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/</guid><description>&lt;h2 id="简介"&gt;简介&#10;&lt;/h2&gt;&#10;&lt;p&gt;pgBackRest 通过命令来执行各项功能。本文档对每个命令的选项进行了详尽列举——即每个适用于某命令的选项都会随该命令一并列出，即便该选项同样适用于其他命令。所有可在 &lt;code&gt;pgbackrest.conf&lt;/code&gt; 中配置的选项均包含在内。&lt;/p&gt;</description></item><item><title>pgBadger 9.x 版本记录</title><link>https://pig.center/zh/docs/pgbadger/releases/9/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/releases/9/</guid><description>&lt;p&gt;本页按从新到旧的顺序保留 pgBadger 9.x 的完整上游变更记录。为确保版本、参数、提交者致谢和兼容性描述不被转述改变，正文保留英文原文。&lt;/p&gt;&#10;&lt;h2 id="v9-2"&gt;v9.2 · 2017-07-27&#10;&lt;/h2&gt;&#10;&lt;p&gt;This release of pgBadger is a maintenance release that adds some new&#10;features.&lt;/p&gt;</description></item><item><title>检查命令（check）</title><link>https://pig.center/zh/docs/pgbackrest/command/check/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/check/</guid><description>&lt;p&gt;&lt;code&gt;check&lt;/code&gt; 命令用于验证 pgBackRest 及 &lt;code&gt;archive_command&lt;/code&gt; 的配置是否正确，确保指定 stanza（stanza 是 pgBackRest 中用于标识 PostgreSQL 集群备份配置的逻辑名称）的归档与备份能够正常运作。该命令会对当前主机上为该 stanza 配置的所有仓库和数据库逐一检查，可检测出配置错误——尤其是归档配置问题，此类问题会导致所需的 WAL 段无法进入归档，从而造成备份不完整。此命令可在 PostgreSQL 主机或仓库主机上运行；也可在备库主机上运行，但由于备库无法执行 &lt;code&gt;pg_switch_xlog()&lt;/code&gt;/&lt;code&gt;pg_switch_wal()&lt;/code&gt;，命令仅会测试仓库配置。&lt;/p&gt;</description></item><item><title>HAProxy 3.4.4 中文文档</title><link>https://pig.center/zh/docs/haproxy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;&lt;strong&gt;HAProxy&lt;/strong&gt; 是一款免费、快速、可靠的反向代理，适用于高可用、TCP 与 HTTP 负载均衡及应用流量管理。本组件收录三套 HAProxy 3.4 核心手册的完整中文译文，并将其重新编排为适合 OINK 阅读器的扁平阅读顺序。&lt;/p&gt;</description></item><item><title>patronictl 命令行</title><link>https://pig.center/zh/docs/patroni/patronictl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/patronictl/</guid><description>&lt;p&gt;&lt;a id="patronictl_version_description"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl_version_parameters"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl_version_examples"&gt;&lt;/a&gt;&#10;&lt;a id="patronictl"&gt;&lt;/a&gt;&#10;Patroni 提供了 &lt;a href="https://pig.center/zh/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; 命令行工具，用于与 Patroni 的 REST API 和 DCS 交互，旨在简化集群操作，适合人工操作或脚本调用。&lt;/p&gt;&#10;&lt;p&gt;&lt;a id="patronictl_configuration"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="配置"&gt;配置&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;a href="https://pig.center/zh/docs/patroni/patronictl/#patronictl"&gt;patronictl&lt;/a&gt;&#10; 使用以下 3 个配置节：&lt;/p&gt;</description></item><item><title>配置参考</title><link>https://pig.center/zh/docs/pgbackrest/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/configuration/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="简介"&gt;简介&#10;&lt;/h2&gt;&#10;&lt;p&gt;pgBackRest 可以完全通过命令行参数使用，但当配置较为复杂或需要设置大量选项时，使用配置文件更为实用。配置文件的默认路径为 &lt;code&gt;/etc/pgbackrest/pgbackrest.conf&lt;/code&gt;。若该路径下不存在配置文件，则会检查旧的默认路径 &lt;code&gt;/etc/pgbackrest.conf&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>源码发布版下载</title><link>https://pig.center/zh/docs/pgbouncer/download/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbouncer/download/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-125"&gt;PgBouncer 1.25&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.2/pgbouncer-1.25.2.tar.gz"&gt;pgbouncer-1.25.2.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2026-05-08&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;865371 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.2/pgbouncer-1.25.2.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.1/pgbouncer-1.25.1.tar.gz"&gt;pgbouncer-1.25.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-12-03&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;864801 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.1/pgbouncer-1.25.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.0/pgbouncer-1.25.0.tar.gz"&gt;pgbouncer-1.25.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-11-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;863322 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.25.0/pgbouncer-1.25.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-124"&gt;PgBouncer 1.24&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.1/pgbouncer-1.24.1.tar.gz"&gt;pgbouncer-1.24.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-04-16&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;717796 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.1/pgbouncer-1.24.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.0/pgbouncer-1.24.0.tar.gz"&gt;pgbouncer-1.24.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2025-01-10&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;706573 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.24.0/pgbouncer-1.24.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-123"&gt;PgBouncer 1.23&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.1/pgbouncer-1.23.1.tar.gz"&gt;pgbouncer-1.23.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-08-02&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;700025 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.1/pgbouncer-1.23.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.0/pgbouncer-1.23.0.tar.gz"&gt;pgbouncer-1.23.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-07-03&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;694845 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.23.0/pgbouncer-1.23.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-122"&gt;PgBouncer 1.22&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.1/pgbouncer-1.22.1.tar.gz"&gt;pgbouncer-1.22.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-03-04&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;677351 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.1/pgbouncer-1.22.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.0/pgbouncer-1.22.0.tar.gz"&gt;pgbouncer-1.22.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2024-01-31&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;670589 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.22.0/pgbouncer-1.22.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-121"&gt;PgBouncer 1.21&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.21.0/pgbouncer-1.21.0.tar.gz"&gt;pgbouncer-1.21.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-10-16&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;668211 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.21.0/pgbouncer-1.21.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-120"&gt;PgBouncer 1.20&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.1/pgbouncer-1.20.1.tar.gz"&gt;pgbouncer-1.20.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-08-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;638844 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.1/pgbouncer-1.20.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz"&gt;pgbouncer-1.20.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-07-20&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;638020 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-119"&gt;PgBouncer 1.19&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.1/pgbouncer-1.19.1.tar.gz"&gt;pgbouncer-1.19.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-05-31&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;623569 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.1/pgbouncer-1.19.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.0/pgbouncer-1.19.0.tar.gz"&gt;pgbouncer-1.19.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2023-05-04&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;616947 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.19.0/pgbouncer-1.19.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-118"&gt;PgBouncer 1.18&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.18.0/pgbouncer-1.18.0.tar.gz"&gt;pgbouncer-1.18.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2022-12-12&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;600825 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.18.0/pgbouncer-1.18.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-117"&gt;PgBouncer 1.17&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.17.0/pgbouncer-1.17.0.tar.gz"&gt;pgbouncer-1.17.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2022-03-23&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;598294 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.17.0/pgbouncer-1.17.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-116"&gt;PgBouncer 1.16&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.1/pgbouncer-1.16.1.tar.gz"&gt;pgbouncer-1.16.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2021-11-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;591450 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.1/pgbouncer-1.16.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.0/pgbouncer-1.16.0.tar.gz"&gt;pgbouncer-1.16.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2021-08-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;592136 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.16.0/pgbouncer-1.16.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-115"&gt;PgBouncer 1.15&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.15.0/pgbouncer-1.15.0.tar.gz"&gt;pgbouncer-1.15.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2020-11-19&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;588042 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.15.0/pgbouncer-1.15.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-114"&gt;PgBouncer 1.14&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.14.0/pgbouncer-1.14.0.tar.gz"&gt;pgbouncer-1.14.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2020-06-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;578955 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.14.0/pgbouncer-1.14.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-113"&gt;PgBouncer 1.13&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.13.0/pgbouncer-1.13.0.tar.gz"&gt;pgbouncer-1.13.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2020-04-27&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;574955 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.13.0/pgbouncer-1.13.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-112"&gt;PgBouncer 1.12&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.12.0/pgbouncer-1.12.0.tar.gz"&gt;pgbouncer-1.12.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2019-10-17&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;567465 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.12.0/pgbouncer-1.12.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-111"&gt;PgBouncer 1.11&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.11.0/pgbouncer-1.11.0.tar.gz"&gt;pgbouncer-1.11.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2019-08-27&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;571414 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.11.0/pgbouncer-1.11.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-110"&gt;PgBouncer 1.10&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.10.0/pgbouncer-1.10.0.tar.gz"&gt;pgbouncer-1.10.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2019-07-01&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;480571 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.10.0/pgbouncer-1.10.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-19"&gt;PgBouncer 1.9&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.9.0/pgbouncer-1.9.0.tar.gz"&gt;pgbouncer-1.9.0.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2018-08-13&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;469300 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.9.0/pgbouncer-1.9.0.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-18"&gt;PgBouncer 1.8&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8.1/pgbouncer-1.8.1.tar.gz"&gt;pgbouncer-1.8.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2017-12-20&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;465930 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8.1/pgbouncer-1.8.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8/pgbouncer-1.8.tar.gz"&gt;pgbouncer-1.8.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2017-12-19&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;465612 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.8/pgbouncer-1.8.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-17"&gt;PgBouncer 1.7&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.2/pgbouncer-1.7.2.tar.gz"&gt;pgbouncer-1.7.2.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2016-02-26&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;462374 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.2/pgbouncer-1.7.2.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.1/pgbouncer-1.7.1.tar.gz"&gt;pgbouncer-1.7.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2016-02-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;461903 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7.1/pgbouncer-1.7.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7/pgbouncer-1.7.tar.gz"&gt;pgbouncer-1.7.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-12-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;459080 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.7/pgbouncer-1.7.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-16"&gt;PgBouncer 1.6&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6.1/pgbouncer-1.6.1.tar.gz"&gt;pgbouncer-1.6.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-09-03&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;431076 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6.1/pgbouncer-1.6.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6/pgbouncer-1.6.tar.gz"&gt;pgbouncer-1.6.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-08-01&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;412700 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.6/pgbouncer-1.6.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-15"&gt;PgBouncer 1.5&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.5/pgbouncer-1.5.5.tar.gz"&gt;pgbouncer-1.5.5.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2015-04-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;336145 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.5/pgbouncer-1.5.5.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.4/pgbouncer-1.5.4.tar.gz"&gt;pgbouncer-1.5.4.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-11-28&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;339610 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.4/pgbouncer-1.5.4.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.3/pgbouncer-1.5.3.tar.gz"&gt;pgbouncer-1.5.3.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-09-12&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;339013 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.3/pgbouncer-1.5.3.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.2/pgbouncer-1.5.2.tar.gz"&gt;pgbouncer-1.5.2.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-05-29&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;335338 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.2/pgbouncer-1.5.2.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.1/pgbouncer-1.5.1.tar.gz"&gt;pgbouncer-1.5.1.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-04-17&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;334413 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5.1/pgbouncer-1.5.1.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5/pgbouncer-1.5.tar.gz"&gt;pgbouncer-1.5.tar.gz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2012-01-05&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;411488 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.5/pgbouncer-1.5.tar.gz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-14"&gt;PgBouncer 1.4&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.2/pgbouncer-1.4.2.tgz"&gt;pgbouncer-1.4.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2011-06-16&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;283204 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.2/pgbouncer-1.4.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.1/pgbouncer-1.4.1.tgz"&gt;pgbouncer-1.4.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2011-04-01&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;282728 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4.1/pgbouncer-1.4.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4/pgbouncer-1.4.tgz"&gt;pgbouncer-1.4.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2011-01-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;231691 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.4/pgbouncer-1.4.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-13"&gt;PgBouncer 1.3&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.4/pgbouncer-1.3.4.tgz"&gt;pgbouncer-1.3.4.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2010-09-09&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;167957 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.4/pgbouncer-1.3.4.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.3/pgbouncer-1.3.3.tgz"&gt;pgbouncer-1.3.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2010-05-10&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;167476 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.3/pgbouncer-1.3.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.2/pgbouncer-1.3.2.tgz"&gt;pgbouncer-1.3.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2010-03-15&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;166756 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.2/pgbouncer-1.3.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.1/pgbouncer-1.3.1.tgz"&gt;pgbouncer-1.3.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2009-07-06&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;161518 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3.1/pgbouncer-1.3.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3/pgbouncer-1.3.tgz"&gt;pgbouncer-1.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2009-02-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;160154 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.3/pgbouncer-1.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-12"&gt;PgBouncer 1.2&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.3/pgbouncer-1.2.3.tgz"&gt;pgbouncer-1.2.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-08-08&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;145372 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.3/pgbouncer-1.2.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.2/pgbouncer-1.2.2.tgz"&gt;pgbouncer-1.2.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-08-06&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;145017 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.2/pgbouncer-1.2.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.1/pgbouncer-1.2.1.tgz"&gt;pgbouncer-1.2.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-08-04&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;144903 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2.1/pgbouncer-1.2.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2/pgbouncer-1.2.tgz"&gt;pgbouncer-1.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2008-07-29&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;143915 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.2/pgbouncer-1.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-11"&gt;PgBouncer 1.1&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: right"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.2/pgbouncer-1.1.2.tgz"&gt;pgbouncer-1.1.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td&gt;2007-12-10&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;122054 bytes&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.2/pgbouncer-1.1.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.1/pgbouncer-1.1.1.tgz"&gt;pgbouncer-1.1.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td&gt;2007-10-26&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;121042 bytes&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1.1/pgbouncer-1.1.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1/pgbouncer-1.1.tgz"&gt;pgbouncer-1.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td&gt;2007-10-09&lt;/td&gt;&#10; &lt;td style="text-align: right"&gt;120462 bytes&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.1/pgbouncer-1.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-10"&gt;PgBouncer 1.0&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;File&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Date&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;Size&lt;/th&gt;&#10; &lt;th scope="col" style="text-align: center"&gt;SHA256&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.8/pgbouncer-1.0.8.tgz"&gt;pgbouncer-1.0.8.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-06-18&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;93636 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.8/pgbouncer-1.0.8.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.7/pgbouncer-1.0.7.tgz"&gt;pgbouncer-1.0.7.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-19&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;93086 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.7/pgbouncer-1.0.7.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.6/pgbouncer-1.0.6.tgz"&gt;pgbouncer-1.0.6.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-12&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;92244 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.6/pgbouncer-1.0.6.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.5/pgbouncer-1.0.5.tgz"&gt;pgbouncer-1.0.5.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;91934 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.5/pgbouncer-1.0.5.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.4/pgbouncer-1.0.4.tgz"&gt;pgbouncer-1.0.4.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;91889 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.4/pgbouncer-1.0.4.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.3/pgbouncer-1.0.3.tgz"&gt;pgbouncer-1.0.3.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-04-11&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;91489 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.3/pgbouncer-1.0.3.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.2/pgbouncer-1.0.2.tgz"&gt;pgbouncer-1.0.2.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-03-28&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;90555 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.2/pgbouncer-1.0.2.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.1/pgbouncer-1.0.1.tgz"&gt;pgbouncer-1.0.1.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-03-15&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;89609 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0.1/pgbouncer-1.0.1.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0/pgbouncer-1.0.tgz"&gt;pgbouncer-1.0.tgz&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;2007-03-13&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;88587 bytes&lt;/td&gt;&#10; &lt;td style="text-align: center"&gt;&lt;a href="https://www.pgbouncer.org/downloads/files/1.0/pgbouncer-1.0.tgz.sha256"&gt;sha256&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;hr&gt;&#10;&lt;h2 id="二进制软件包"&gt;二进制软件包&#10;&lt;/h2&gt;&#10;&lt;p&gt;许多操作系统发行版提供了 PgBouncer 的原生软件包/移植版本，建议首先检查您的系统中是否已有可用的版本。&lt;/p&gt;</description></item><item><title>过期命令（expire）</title><link>https://pig.center/zh/docs/pgbackrest/command/expire/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/expire/</guid><description>&lt;p&gt;pgBackRest 基于保留策略对全量备份进行轮换，策略可按数量或时间段定义。按数量保留时，过期操作只关注需要保留的备份数量，不考虑备份的创建时间。差异备份按数量进行保留，但当其依赖的全量备份过期时，差异备份也会随之过期。增量备份没有独立的保留策略——它们始终随关联的全量备份或差异备份一同过期。详情及示例请参见 &lt;a href="https://pig.center/zh/docs/pgbackrest/user-guide/#%e5%85%a8%e9%87%8f%e5%a4%87%e4%bb%bd%e4%bf%9d%e7%95%99%e7%ad%96%e7%95%a5"&gt;&lt;strong&gt;全量备份保留策略&lt;/strong&gt;&lt;/a&gt;&#10; 和 &lt;a href="https://pig.center/zh/docs/pgbackrest/user-guide/#%e5%b7%ae%e5%bc%82%e5%a4%87%e4%bb%bd%e4%bf%9d%e7%95%99%e7%ad%96%e7%95%a5"&gt;&lt;strong&gt;差异备份保留策略&lt;/strong&gt;&lt;/a&gt;&#10; 章节。&lt;/p&gt;</description></item><item><title>版本发布说明</title><link>https://pig.center/zh/docs/pgbackrest/release/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/release/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="简介"&gt;简介&#10;&lt;/h2&gt;&#10;&lt;p&gt;pgBackRest 的版本号由主版本号和次版本号两部分组成。主版本升级 &lt;strong&gt;可能&lt;/strong&gt; 破坏与上一主版本的兼容性，但 v2 版本与 v1 仓库完全兼容，且接受所有 v1 选项。次版本可包含漏洞修复和新功能，但不会更改仓库格式，并尽量避免修改选项和命名约定。v1 版本的文档可在 &lt;strong&gt;&lt;a href="https://pgbackrest.org/1"&gt;此处&lt;/a&gt;&#10;&lt;/strong&gt; 查阅。版本说明中还可能包含&amp;quot;附加说明&amp;quot;，此部分变更仅涉及文档或测试套件，不直接影响 pgBackRest 代码库。&lt;/p&gt;</description></item><item><title>帮助命令（help）</title><link>https://pig.center/zh/docs/pgbackrest/command/help/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/help/</guid><description>&lt;p&gt;&lt;code&gt;help&lt;/code&gt; 命令提供三个层级的帮助信息：未指定命令时显示通用帮助；指定命令（例如 &lt;code&gt;pgbackrest help backup&lt;/code&gt;）时显示该命令的完整说明及有效选项列表；在命令之外还指定了某个选项（例如 &lt;code&gt;pgbackrest help backup type&lt;/code&gt;）时显示该选项在此命令下的完整说明。&lt;/p&gt;</description></item><item><title>版本变更日志</title><link>https://pig.center/zh/docs/pgbouncer/changelog/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbouncer/changelog/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="pgbouncer-125x"&gt;PgBouncer 1.25.x&#10;&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;2026-05-08 - PgBouncer 1.25.2 - &amp;ldquo;Human touch with fresh twist in title race full of uncertainties（充满不确定性的冠军争夺战中，人情味带来新意）&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>常见问题解答</title><link>https://pig.center/zh/docs/pgbackrest/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/faq/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="简介"&gt;简介&#10;&lt;/h2&gt;&#10;&lt;p&gt;常见问题解答旨在针对一些具体问题提供详细说明，这些问题可能未在用户指南、配置参考或命令参考中涵盖。如果在此处找不到您的问题，pgBackRest 在 GitHub 上的 &lt;a href="https://github.com/pgbackrest/pgbackrest/issues"&gt;&lt;strong&gt;Issues List&lt;/strong&gt;&lt;/a&gt;&#10; 也是一个宝贵的资源。&lt;/p&gt;</description></item><item><title>性能与容量规划</title><link>https://pig.center/zh/docs/haproxy/sizing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/sizing/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;典型 CPU 使用率数据显示，在 TCP 或 HTTP 关闭模式下，HAProxy 占用约 15% 的处理时间，内核占用约 85%；在 HTTP 持久连接模式下，HAProxy 占用约 30%，内核占用约 70%。这表明操作系统及其调优对整体性能有显著影响。&lt;/p&gt;</description></item><item><title>输出格式</title><link>https://pig.center/zh/docs/pgbadger/output-formats/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/output-formats/</guid><description>&lt;p&gt;pgBadger 会根据输出文件扩展名，或 &lt;code&gt;-x&lt;/code&gt; / &lt;code&gt;--extension&lt;/code&gt; 选项选择格式。同一次解析可多次使用 &lt;code&gt;-o&lt;/code&gt; / &lt;code&gt;--outfile&lt;/code&gt;，同时生成多种格式。&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;格式&lt;/th&gt;&#10; &lt;th scope="col"&gt;常用扩展名&lt;/th&gt;&#10; &lt;th scope="col"&gt;最适合&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;HTML&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.html&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;带图表的交互式人类可读报告&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;文本&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.txt&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;终端查看与纯文本归档&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;二进制&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.bin&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;可合并的中间统计数据与报告重建&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;JSON&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;.json&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;与其他软件集成；需要 &lt;code&gt;JSON::XS&lt;/code&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;原始 CSV&lt;/td&gt;&#10; &lt;td&gt;自选输出文件&lt;/td&gt;&#10; &lt;td&gt;使用 &lt;code&gt;--dump-raw-csv&lt;/code&gt; 导出逐行数据&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="html-and-text"&gt;HTML 与文本&#10;&lt;/h2&gt;&#10;&lt;p&gt;默认输出为 &lt;code&gt;out.html&lt;/code&gt;：&lt;/p&gt;</description></item><item><title>Info 命令（info）</title><link>https://pig.center/zh/docs/pgbackrest/command/info/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/info/</guid><description>&lt;p&gt;&lt;code&gt;info&lt;/code&gt; 命令可查询单个 stanza（stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称）或所有 stanza 的信息。默认输出为文本格式，以人类可读的摘要展示所请求 stanza 的备份信息。该格式可能随版本更新而变化。&lt;/p&gt;</description></item><item><title>报告示例</title><link>https://pig.center/zh/docs/pgbadger/sample-reports/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/sample-reports/</guid><description>&lt;p&gt;示例内容由 pgBadger 11.8 于 2022 年 5 月生成。原始示例已与本站一起保存，因此即使无法访问上游服务器，也能继续使用报告导航、图表、样式与脚本。&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;示例&lt;/th&gt;&#10; &lt;th scope="col"&gt;展示内容&lt;/th&gt;&#10; &lt;th scope="col"&gt;本地副本&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;完整报告&lt;/td&gt;&#10; &lt;td&gt;PostgreSQL 活动与 PgBouncer 统计&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/third_party/pgbadger/examples/sample.html"&gt;打开完整报告&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;增量报告&lt;/td&gt;&#10; &lt;td&gt;日历索引、每周累计与每日页面&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/third_party/pgbadger/examples/report/index.html"&gt;打开增量索引&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;错误与事件&lt;/td&gt;&#10; &lt;td&gt;仅包含错误和运行事件的报告&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://pig.center/third_party/pgbadger/examples/errors.html"&gt;打开错误报告&lt;/a&gt;&#10;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="complete-report"&gt;完整报告&#10;&lt;/h2&gt;&#10;&lt;p&gt;完整报告是一份自包含 HTML 文档。可通过顶部导航查看全局统计、查询、会话、连接、临时文件、检查点、自动清理、锁，以及 PgBouncer 专用图表。&lt;/p&gt;</description></item><item><title>常见问题解答</title><link>https://pig.center/zh/docs/pgbouncer/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbouncer/faq/</guid><description>&lt;hr&gt;&#10;&lt;h2 id="如何连接到-pgbouncer"&gt;如何连接到 PgBouncer？&#10;&lt;/h2&gt;&#10;&lt;p&gt;PgBouncer 扮演 PostgreSQL 服务器的角色，只需将客户端指向 PgBouncer 端口即可。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="如何在多个服务器之间实现查询负载均衡"&gt;如何在多个服务器之间实现查询负载均衡？&#10;&lt;/h2&gt;&#10;&lt;p&gt;PgBouncer 没有内置的多主机配置功能，但可以通过外部工具实现：&lt;/p&gt;</description></item><item><title>仓库获取命令（repo-get）</title><link>https://pig.center/zh/docs/pgbackrest/command/repo-get/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/repo-get/</guid><description>&lt;p&gt;&lt;code&gt;repo-get&lt;/code&gt; 命令类似于 Unix 的 &lt;code&gt;cat&lt;/code&gt; 命令，但支持所有仓库类型。使用此命令需要提供完整的文件名，主要用于管理、排查和测试目的，不是常规 pgBackRest 使用流程中的必需命令。&lt;/p&gt;&#10;&lt;p&gt;若仓库已加密，&lt;code&gt;repo-get&lt;/code&gt; 将自动解密文件。文件不会自动解压，但可将输出通过管道传递给相应的解压命令，例如 &lt;code&gt;gzip -d&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>版本历史</title><link>https://pig.center/zh/docs/pgbadger/releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/releases/</guid><description>&lt;p&gt;官网把版本新闻直接堆放在首页，内容停留在 12.4，并且误把 11.1–11.3 用互相冲突的日期重复渲染了一次。本站以固定上游 &lt;code&gt;ChangeLog&lt;/code&gt; 为规范记录，只去除这些重复展示，同时补入后续 13.x 版本。每个系列均保留完整条目，并按从新到旧排序。&lt;/p&gt;</description></item><item><title>仓库列表命令（repo-ls）</title><link>https://pig.center/zh/docs/pgbackrest/command/repo-ls/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/repo-ls/</guid><description>&lt;p&gt;&lt;code&gt;repo-ls&lt;/code&gt; 类似于 Unix 的 &lt;code&gt;ls&lt;/code&gt; 命令，但支持所有 pgBackRest 仓库类型。该命令接受一个路径参数，可以是绝对路径，也可以是相对于 &lt;code&gt;--repo-path&lt;/code&gt; 所定义的仓库根路径的相对路径。此命令主要用于管理、排查和测试场景，并非常规部署的必要命令。&lt;/p&gt;</description></item><item><title>文档与社区</title><link>https://pig.center/zh/docs/haproxy/resources/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/resources/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;h2 id="section-1"&gt;1. 可用文档&#10;&lt;/h2&gt;&#10;&lt;p&gt;HAProxy 的完整文档由以下文件组成。请先查阅与问题相关的文档，以节省时间并获得最准确的答案。如果这些文档已经给出答案，请勿再向邮件列表重复提问。&lt;/p&gt;</description></item><item><title>恢复命令（restore）</title><link>https://pig.center/zh/docs/pgbackrest/command/restore/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/restore/</guid><description>&lt;p&gt;&lt;code&gt;restore&lt;/code&gt; 命令默认从第一个存有备份的仓库中自动选取最新备份（参见 &lt;a href="https://pig.center/zh/docs/pgbackrest/user-guide/#%e6%81%a2%e5%a4%8d%e5%a4%87%e4%bb%bd"&gt;&lt;strong&gt;快速开始 - 恢复备份&lt;/strong&gt;&lt;/a&gt;&#10;）。仓库的检查顺序由 &lt;code&gt;pgbackrest.conf&lt;/code&gt; 决定（例如先检查 repo1，再检查 repo2）。若要从特定仓库恢复，可使用 &lt;code&gt;--repo&lt;/code&gt; 选项（例如 &lt;code&gt;--repo=1&lt;/code&gt;）。若需恢复非最新的备份，可传入 &lt;code&gt;--set&lt;/code&gt; 选项。&lt;/p&gt;</description></item><item><title>许可证与致谢</title><link>https://pig.center/zh/docs/pgbadger/license/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbadger/license/</guid><description>&lt;p&gt;pgBadger 是以 PostgreSQL License 发布的自由开源软件。只要保留版权与许可证声明，就可以免费使用、复制、修改与分发。&lt;/p&gt;&#10;&lt;h2 id="postgresql-license"&gt;PostgreSQL License 原文&#10;&lt;/h2&gt;&#10;&lt;p&gt;Copyright (c) 2012-2026, Gilles Darold&lt;/p&gt;</description></item><item><title>服务器命令（server）</title><link>https://pig.center/zh/docs/pgbackrest/command/server/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/server/</guid><description>&lt;p&gt;pgBackRest 服务器允许在不使用 SSH 协议的情况下访问远程主机。&lt;/p&gt;&#10;&lt;h2 id="命令选项"&gt;命令选项&#10;&lt;/h2&gt;&#10;&lt;h3 id="tls-服务器地址选项--tls-server-address"&gt;TLS 服务器地址选项（&lt;code&gt;--tls-server-address&lt;/code&gt;）&#10;&lt;/h3&gt;&#10;&lt;p&gt;TLS 服务器地址。&lt;/p&gt;</description></item><item><title>2. 配置 HAProxy</title><link>https://pig.center/zh/docs/haproxy/configuration-basics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/configuration-basics/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;h2 id="section-2-1"&gt;2.1. 配置文件格式&#10;&lt;/h2&gt;&#10;&lt;p&gt;HAProxy 的配置过程涉及三个主要参数来源：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;命令行参数，始终具有最高优先级&lt;/li&gt;&#10;&lt;li&gt;配置文件，其格式在此处描述&lt;/li&gt;&#10;&lt;li&gt;运行进程的环境，若显式引用了某些环境变量&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;配置文件采用一种相对简单的分层格式，遵循若干基本规则：&lt;/p&gt;</description></item><item><title>服务器心跳命令（server-ping）</title><link>https://pig.center/zh/docs/pgbackrest/command/server-ping/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/server-ping/</guid><description>&lt;p&gt;向 pgBackRest TLS 服务器发送 ping，确认其正在接受连接。此命令仅作为存活性检查，不进行身份验证。&lt;/p&gt;&#10;&lt;p&gt;若命令行中未指定主机，则使用 &lt;code&gt;tls-server-host&lt;/code&gt; 选项的值。&lt;/p&gt;&#10;&lt;h2 id="命令选项"&gt;命令选项&#10;&lt;/h2&gt;&#10;&lt;h3 id="tls-服务器地址选项--tls-server-address"&gt;TLS 服务器地址选项（&lt;code&gt;--tls-server-address&lt;/code&gt;）&#10;&lt;/h3&gt;&#10;&lt;p&gt;TLS 服务器地址。&lt;/p&gt;</description></item><item><title>3. 全局段</title><link>https://pig.center/zh/docs/haproxy/global/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/global/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;“global” 段中的参数为进程级配置，通常与操作系统相关。这些参数通常只需一次性设置，一旦配置正确便无需再修改。部分参数在命令行中也有对应选项。&lt;/p&gt;</description></item><item><title>Stanza 创建命令（stanza-create）</title><link>https://pig.center/zh/docs/pgbackrest/command/stanza-create/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/stanza-create/</guid><description>&lt;p&gt;&lt;code&gt;stanza-create&lt;/code&gt; 命令须在 &lt;code&gt;pgbackrest.conf&lt;/code&gt; 中完成 stanza 配置后再执行（stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称）。若配置了多个仓库，&lt;code&gt;stanza-create&lt;/code&gt; 会在每个仓库上分别建立 stanza。已创建的 stanza 会被跳过，因此即便新增了仓库，也可以随时安全地重复执行 &lt;code&gt;stanza-create&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>4. 代理</title><link>https://pig.center/zh/docs/haproxy/proxies/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/proxies/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;代理配置可位于一组段中：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;defaults [&lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt;] [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;li&gt;frontend &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;li&gt;backend &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;li&gt;listen &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt; [ from &lt;code&gt;&amp;lt;defaults_name&amp;gt;&lt;/code&gt; ]&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;前端段描述了一组用于接收客户端连接的监听套接字。&lt;/p&gt;&#10;&lt;p&gt;后端段描述了一组代理将连接以转发传入连接的服务器。&lt;/p&gt;</description></item><item><title>Stanza 删除命令（stanza-delete）</title><link>https://pig.center/zh/docs/pgbackrest/command/stanza-delete/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/stanza-delete/</guid><description>&lt;p&gt;&lt;code&gt;stanza-delete&lt;/code&gt; 命令用于删除仓库中与指定 stanza 关联的所有数据。stanza 是 pgBackRest 中用于标识一个 PostgreSQL 集群备份配置的逻辑名称。&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;警告：&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;此命令会永久删除指定 stanza 在 pgBackRest 仓库中的所有备份和归档数据，请谨慎使用。&lt;/p&gt;</description></item><item><title>5. 绑定与服务器选项</title><link>https://pig.center/zh/docs/haproxy/bind-and-server-options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/bind-and-server-options/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;“bind”、“server” 和 “default-server” 关键字支持多种设置，具体取决于构建选项以及 HAProxy 所基于的系统。这些设置通常由一个单词组成，有时后接一个值，与 “bind” 或 “server” 语句位于同一行。所有这些选项均在本节中描述。&lt;/p&gt;</description></item><item><title>Stanza 升级命令（stanza-upgrade）</title><link>https://pig.center/zh/docs/pgbackrest/command/stanza-upgrade/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/stanza-upgrade/</guid><description>&lt;p&gt;将 PostgreSQL 升级到新的主版本后，必须立即将所有 pgBackRest 配置中的 &lt;code&gt;pg-path&lt;/code&gt; 更新为新的数据库位置，然后运行 &lt;code&gt;stanza-upgrade&lt;/code&gt; 命令。若主机上配置了多个仓库，每个仓库都会执行 stanza 升级。若数据库处于离线状态，请使用 &lt;code&gt;--no-online&lt;/code&gt; 选项。&lt;/p&gt;</description></item><item><title>6. 缓存</title><link>https://pig.center/zh/docs/haproxy/cache/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/cache/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy 提供一个缓存，专为小型对象（如 favicon、CSS 等）的缓存而设计。&#10;这是一个极简且低维护成本的缓存，运行于内存中。&lt;/p&gt;&#10;&lt;p&gt;缓存基于所有线程共享的内存区域，并划分为 1kB 的块。&lt;/p&gt;</description></item><item><title>启动命令（start）</title><link>https://pig.center/zh/docs/pgbackrest/command/start/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/start/</guid><description>&lt;p&gt;如果 pgBackRest 进程之前已通过 &lt;code&gt;stop&lt;/code&gt; 命令停止，可使用 &lt;code&gt;start&lt;/code&gt; 命令重新允许它们运行。注意，此命令不会立即启动任何 pgBackRest 进程，只是解除运行限制。详情与示例请参见 &lt;a href="https://pig.center/zh/docs/pgbackrest/user-guide/#%e5%90%af%e5%8a%a8%e4%b8%8e%e5%81%9c%e6%ad%a2"&gt;&lt;strong&gt;启动与停止&lt;/strong&gt;&lt;/a&gt;&#10;。&lt;/p&gt;&#10;&lt;h2 id="通用选项"&gt;通用选项&#10;&lt;/h2&gt;&#10;&lt;h3 id="允许以-root-用户运行选项--allow-root"&gt;允许以 root 用户运行选项（&lt;code&gt;--allow-root&lt;/code&gt;）&#10;&lt;/h3&gt;&#10;&lt;p&gt;允许命令以 root 用户运行。&lt;/p&gt;</description></item><item><title>7. ACL 与样本提取</title><link>https://pig.center/zh/docs/haproxy/acls-and-samples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/acls-and-samples/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy 可从请求或响应流、客户端或服务器信息、表格、环境信息等来源提取数据。提取此类数据的动作称为获取样本。获取后，这些样本可用于多种用途，例如作为粘性表的键，但最常见的用法是将其与称为模式的预定义常量数据进行匹配。&lt;/p&gt;</description></item><item><title>停止命令（stop）</title><link>https://pig.center/zh/docs/pgbackrest/command/stop/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/stop/</guid><description>&lt;p&gt;禁止任何新的 pgBackRest 进程运行。默认情况下，正在运行的进程将被允许正常完成。使用 &lt;code&gt;--force&lt;/code&gt; 选项可强制终止正在运行的进程。&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;stop&lt;/code&gt; 命令执行完成后，此后尝试运行的 pgBackRest 进程将返回错误。详情与示例请参见 &lt;a href="https://pig.center/zh/docs/pgbackrest/user-guide/#%e5%90%af%e5%8a%a8%e4%b8%8e%e5%81%9c%e6%ad%a2"&gt;&lt;strong&gt;启动与停止&lt;/strong&gt;&lt;/a&gt;&#10;。&lt;/p&gt;</description></item><item><title>常见问题</title><link>https://pig.center/zh/docs/patroni/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/faq/</guid><description>&lt;p&gt;&lt;a id="faq"&gt;&lt;/a&gt;&#10;本节收录了关于 Patroni 最常见问题的解答，各子节聚焦于不同类别的问题。&lt;/p&gt;&#10;&lt;p&gt;希望这些内容能帮你解答大多数疑问。如果仍有疑问或遇到意外问题，请参阅 &lt;a href="https://pig.center/zh/docs/patroni/contributing_guidelines/#chatting"&gt;&lt;code&gt;chatting&lt;/code&gt;&lt;/a&gt;&#10; 和 &lt;a href="https://pig.center/zh/docs/patroni/contributing_guidelines/#reporting_bugs"&gt;&lt;code&gt;reporting_bugs&lt;/code&gt;&lt;/a&gt;&#10;，了解如何获取帮助或提交问题报告。&lt;/p&gt;</description></item><item><title>验证命令（verify）</title><link>https://pig.center/zh/docs/pgbackrest/command/verify/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/verify/</guid><description>&lt;p&gt;&lt;code&gt;verify&lt;/code&gt; 用于验证仓库中的备份和归档是否有效。&lt;/p&gt;&#10;&lt;h2 id="命令选项"&gt;命令选项&#10;&lt;/h2&gt;&#10;&lt;h3 id="输出格式选项--output"&gt;输出格式选项（&lt;code&gt;--output&lt;/code&gt;）&#10;&lt;/h3&gt;&#10;&lt;p&gt;输出类型。&lt;/p&gt;&#10;&lt;p&gt;支持以下输出类型：&lt;/p&gt;</description></item><item><title>版本历史</title><link>https://pig.center/zh/docs/patroni/releases/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/patroni/releases/</guid><description>&lt;p&gt;&lt;a id="releases"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="version-415"&gt;Version 4.1.5&#10;&lt;/h2&gt;&#10;&lt;p&gt;发布于 2026-08-12&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;兼容性改进&lt;/strong&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;兼容 PostgreSQL 14.24、15.19、16.15、17.11 与 18.6（Alexander Kukushkin）&lt;/p&gt;</description></item><item><title>9. 支持的过滤器</title><link>https://pig.center/zh/docs/haproxy/filters/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/filters/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;以下是官方支持的过滤器及其所接受的参数列表。根据编译选项的不同，部分过滤器可能不可用。可用过滤器的列表将在 HAProxy -vv. 中报告。&lt;/p&gt;&#10;&lt;p&gt;另请参见：&amp;ldquo;过滤器&amp;rdquo;&lt;/p&gt;</description></item><item><title>版本命令（version）</title><link>https://pig.center/zh/docs/pgbackrest/command/version/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/pgbackrest/command/version/</guid><description>&lt;p&gt;显示已安装的 pgBackRest 版本。&lt;/p&gt;&#10;&lt;h2 id="命令选项"&gt;命令选项&#10;&lt;/h2&gt;&#10;&lt;h3 id="输出格式选项--output"&gt;输出格式选项（&lt;code&gt;--output&lt;/code&gt;）&#10;&lt;/h3&gt;&#10;&lt;p&gt;输出类型。&lt;/p&gt;&#10;&lt;p&gt;支持以下输出类型：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;text&lt;/code&gt; — 以文本形式显示已安装的 pgBackRest 版本。&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;num&lt;/code&gt; — 以整数形式显示已安装的 pgBackRest 版本。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-0bf04ba9-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="yaml" data-td-line-count="2"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-0bf04ba9-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;text&lt;/span&gt;&lt;span class="w"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;--&lt;span class="l"&gt;output=num&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;</description></item><item><title>10. FastCGI 应用程序</title><link>https://pig.center/zh/docs/haproxy/fastcgi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/fastcgi/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;HAProxy 可以向 Responder FastCGI 应用发送 HTTP 请求。此功能自 HAProxy 2.1 版本起引入。为此，必须将服务器配置为使用 FastCGI 协议（在服务器行中使用关键字 &amp;ldquo;proto fcgi&amp;rdquo;），且后端管理这些服务器时，必须配置并使用一个 FastCGI 应用（在代理段中使用关键字 &amp;ldquo;use-fcgi-app&amp;rdquo;）。可以定义多个 FastCGI 应用，但每个后端在同一时间只能使用其中一个。&lt;/p&gt;</description></item><item><title>11. 粘性表与对等节点</title><link>https://pig.center/zh/docs/haproxy/stick-tables-and-peers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/stick-tables-and-peers/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;在 HAProxy 中，stick-table 是一种机制，允许将一定数量的信息和指标与特定类型的键关联，并在最后一次更新后持续一定时间。这可视为表格中的一行多列数据，其中行号由键值决定，各列代表不同的衡量标准。&lt;/p&gt;</description></item><item><title>12. 其他配置段</title><link>https://pig.center/zh/docs/haproxy/other-sections/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/haproxy/other-sections/</guid><description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#10;&lt;p&gt;以下所述段落使用频率较低，通常仅支持少量参数。它们之间不存在隐式关联。所有段均通过单一关键字启动。在 &amp;ldquo;global&amp;rdquo; 段之前禁止出现任何此类段。部分段的支持可能受构建选项限制（例如与 SSL 相关的任何功能）。&lt;/p&gt;</description></item><item><title>功能门控</title><link>https://pig.center/zh/docs/etcd/feature-gates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/feature-gates/</guid><description>&lt;!-- overview --&gt;&#10;&lt;p&gt;本文概述了管理员可在 etcd 中指定的各种功能门控。&lt;/p&gt;&#10;&lt;p&gt;请参阅 &lt;a href="#feature-stages"&gt;feature stages&lt;/a&gt;&#10; 了解功能各阶段的说明。&lt;/p&gt;&#10;&lt;!-- body --&gt;&#10;&lt;h2 id="overview"&gt;概述&#10;&lt;/h2&gt;&#10;&lt;p&gt;功能门控是一组描述 etcd 特性的 key=value 键值对。&#10;可使用 etcd 的 &lt;code&gt;--feature-gates&lt;/code&gt; 命令行标志来开启或关闭这些特性。&lt;/p&gt;</description></item><item><title>常见问题</title><link>https://pig.center/zh/docs/etcd/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/faq/</guid><description>&lt;h2 id="etcd-general"&gt;etcd，通用&#10;&lt;/h2&gt;&#10;&lt;h3 id="what-is-etcd"&gt;etcd 是什么？&#10;&lt;/h3&gt;&#10;&lt;p&gt;etcd 是一个一致性的分布式键值存储。主要用于分布式系统中的独立协调服务，专为存储可完全容纳在内存中的少量数据而设计。&lt;/p&gt;</description></item><item><title>库和工具</title><link>https://pig.center/zh/docs/etcd/integrations/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/integrations/</guid><description>&lt;p&gt;请注意，以下第三方库和工具未托管在 &lt;a href="https://github.com/etcd-io"&gt;https://github.com/etcd-io&lt;/a&gt;&#10; 下，也未经 etcd 团队测试或维护。使用前应自行阅读相关资料并评估其可靠性。&lt;/p&gt;&#10;&lt;h2 id="tools"&gt;工具&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/etcd-io/etcd/tree/main/etcdctl"&gt;etcdctl&lt;/a&gt;&#10; - etcd 的命令行客户端&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://npmjs.org/package/etcd-dump"&gt;etcd-dump&lt;/a&gt;&#10; - 用于导出/恢复 etcd 的命令行工具&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/xetorthio/etcd-fs"&gt;etcd-fs&lt;/a&gt;&#10; - etcd 的 FUSE 文件系统&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/rekby/etcddir"&gt;etcddir&lt;/a&gt;&#10; - 实时同步 etcd 与本地目录的工具，支持 Windows 和 Linux&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/henszey/etcd-browser"&gt;etcd-browser&lt;/a&gt;&#10; - 基于 AngularJS 的 Web 端键值编辑器，用于 etcd&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/datawisesystems/etcd-lock"&gt;etcd-lock&lt;/a&gt;&#10; - 基于 etcd 实现的领导者选举与分布式读写锁，支持 v2 版本&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/matishsiao/etcd-console"&gt;etcd-console&lt;/a&gt;&#10; - 基于 PHP 的 Web 端键值编辑器，用于 etcd&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/nikfoundas/etcd-viewer"&gt;etcd-viewer&lt;/a&gt;&#10; - 使用 Java 编写的 etcd 键值存储编辑器/查看器&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/mickep76/etcdtool"&gt;etcdtool&lt;/a&gt;&#10; - 将 etcd 目录导出/导入/编辑为 JSON/YAML/TOML 格式，并使用 JSON Schema 验证目录&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/sinsharat/etcdloadtest"&gt;etcdloadtest&lt;/a&gt;&#10; - 用于 etcd 3.0 及以上版本的命令行负载测试客户端&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/olamilekan000/etcd-tui"&gt;etcd-tui&lt;/a&gt;&#10; - 用于与 etcd 数据库交互的现代终端用户界面（TUI），可在终端中导航键、查看值、过滤数据，并直接管理 etcd 集群&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://etcdfinder.github.io"&gt;etcdfinder&lt;/a&gt;&#10; - 一款快速、现代的 Web UI，支持 etcd v2 和 v3，具备即时搜索功能&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/ringtail/lucas"&gt;lucas&lt;/a&gt;&#10; - 用于 Kubernetes etcd 3.0+ 集群的 Web 端键值查看器&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://etcdmanager.io"&gt;etcd-manager&lt;/a&gt;&#10; - 一款现代、高效、跨平台且免费的 etcd 3.x 图形界面与客户端工具，支持 Windows、Linux 和 Mac&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/gardener/etcd-backup-restore"&gt;etcd-backup-restore&lt;/a&gt;&#10; - 用于定期且增量备份与恢复 etcd 的工具&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/gardener/etcd-druid"&gt;etcd-druid&lt;/a&gt;&#10; - 用于部署 etcd 集群并管理日常运维操作的 Kubernetes Operator&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/kubernetes-sigs/etcdadm"&gt;etcdadm&lt;/a&gt;&#10; - 用于操作 etcd 集群的命令行工具&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/ahrtr/etcd-defrag"&gt;etcd-defrag&lt;/a&gt;&#10; - 更易用且智能的 etcd 碎片整理工具&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://github.com/tsonglew/intellij-etcdhelper"&gt;etcdhelper&lt;/a&gt;&#10; - 适用于 IntelliJ 平台的 etcd 插件&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="libraries"&gt;库&#10;&lt;/h2&gt;&#10;&lt;p&gt;以下各节按语言列出了 etcd 客户端库。&lt;/p&gt;</description></item><item><title>指标</title><link>https://pig.center/zh/docs/etcd/metrics/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/metrics/</guid><description>&lt;p&gt;etcd 使用 &lt;a href="https://prometheus.io/"&gt;Prometheus&lt;/a&gt;&#10; 进行指标报告。指标可用于实时监控和调试。etcd 不会持久化其指标；若成员重启，指标将被重置。&lt;/p&gt;&#10;&lt;p&gt;查看可用指标最简单的方法是使用 cURL 访问指标端点 &lt;code&gt;/metrics&lt;/code&gt;。其格式详见 &lt;a href="http://prometheus.io/docs/instrumenting/exposition_formats/"&gt;Prometheus 文档&lt;/a&gt;&#10;。&lt;/p&gt;</description></item><item><title>发现服务协议</title><link>https://pig.center/zh/docs/etcd/dev-guide/discovery_protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/discovery_protocol/</guid><description>&lt;p&gt;发现服务协议有助于新 etcd 成员在集群引导阶段通过共享的发现 URL 发现集群中的所有其他成员。&lt;/p&gt;&#10;&lt;p&gt;发现服务协议仅在集群引导阶段使用，不可用于运行时重配置或集群监控。&lt;/p&gt;</description></item><item><title>发现服务协议</title><link>https://pig.center/zh/docs/etcd/dev-internal/discovery_protocol/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-internal/discovery_protocol/</guid><description>&lt;p&gt;发现服务协议有助于新 etcd 成员在集群引导阶段，通过共享的发现令牌和端点列表，发现集群中的所有其他成员。&lt;/p&gt;&#10;&lt;p&gt;发现服务协议仅在集群引导阶段使用，不可用于运行时重配置或集群监控。&lt;/p&gt;</description></item><item><title>日志记录约定</title><link>https://pig.center/zh/docs/etcd/dev-internal/logging/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-internal/logging/</guid><description>&lt;p&gt;etcd 使用 &lt;a href="https://github.com/uber-go/zap"&gt;zap&lt;/a&gt;&#10; 库记录应用程序输出，输出按 &lt;em&gt;级别&lt;/em&gt; 进行分类。日志消息的级别依据以下约定确定：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;DebugLevel 日志通常非常庞大，通常在生产环境中禁用。&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;示例：&#10;&lt;ul&gt;&#10;&lt;li&gt;向远程对等成员发送一条普通消息&lt;/li&gt;&#10;&lt;li&gt;将日志条目写入磁盘&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;InfoLevel 为默认的日志优先级。&lt;/p&gt;</description></item><item><title>Go 模块</title><link>https://pig.center/zh/docs/etcd/dev-internal/modules/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-internal/modules/</guid><description>&lt;p&gt;etcd 项目（自版本 3.5 起）采用多个 &lt;a href="https://golang.org/ref/mod"&gt;golang 模块&lt;/a&gt;&#10;，托管于 &lt;a href="https://golang.org/ref/mod#vcs-dir"&gt;单个仓库&lt;/a&gt;&#10; 中。&lt;/p&gt;&#10;&lt;img class="td-image" src="https://pig.center/docs/etcd/dev-internal/img/modules.svg" alt="模块图" loading="lazy" decoding="async"&gt;&lt;p&gt;以下是各个模块：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;go.etcd.io/etcd/api/v3&lt;/strong&gt; - 包含 API 定义&#10;（如 protos 与 proto 生成的库），定义了 etcd 客户端与服务器之间的通信协议。&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;&lt;strong&gt;go.etcd.io/etcd/pkg/v3&lt;/strong&gt; - etcd 使用的通用工具包集合，不针对 etcd 本身。仅当某个包未来可能被移出至独立仓库时，才应归入此处。请避免在此处添加依赖关系复杂的代码，因为这些依赖会自动成为客户端库的依赖（我们希望客户端库保持轻量）。&lt;/p&gt;</description></item><item><title>术语表</title><link>https://pig.center/zh/docs/etcd/learning/glossary/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/learning/glossary/</guid><description>&lt;p&gt;本文定义了 etcd 文档、命令行和源代码中使用的各种术语。&lt;/p&gt;&#10;&lt;h2 id="alarm"&gt;告警&#10;&lt;/h2&gt;&#10;&lt;p&gt;当集群需要操作员干预以保持可靠性时，etcd 服务器会触发告警。&lt;/p&gt;</description></item><item><title>系统限制</title><link>https://pig.center/zh/docs/etcd/dev-guide/limit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/limit/</guid><description>&lt;h2 id="request-size-limit"&gt;请求大小限制&#10;&lt;/h2&gt;&#10;&lt;p&gt;etcd 专为处理典型的元数据类小规模键值对而设计。虽然较大请求也能正常工作，但可能增加其他请求的延迟。默认情况下，任何请求的最大大小为 1.5 MiB。此限制可通过 etcd 服务器的 &lt;code&gt;--max-request-bytes&lt;/code&gt; 标志进行配置。&lt;/p&gt;</description></item><item><title>etcd 功能</title><link>https://pig.center/zh/docs/etcd/dev-guide/features/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/features/</guid><description>&lt;p&gt;本文概述了 etcd 的各项功能，旨在帮助用户更好地理解这些功能及其相关弃用流程。若想了解 etcd 功能的开发方式，请参阅 &lt;a href="https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/features.md"&gt;开发指南&lt;/a&gt;&#10;。&lt;/p&gt;&#10;&lt;p&gt;etcd 功能分为三个阶段：实验性、稳定和不安全。可通过运行 &lt;code&gt;etcd --help&lt;/code&gt; 获取功能列表。&lt;/p&gt;</description></item><item><title>API 参考</title><link>https://pig.center/zh/docs/etcd/dev-guide/api_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/api_reference_v3/</guid><description>&lt;p&gt;本文 API 参考由命名的 &lt;code&gt;.proto&lt;/code&gt; 文件自动生成。&lt;/p&gt;&#10;&lt;h5 id="service-auth-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Auth&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthEnable&lt;/td&gt;&#10; &lt;td&gt;AuthEnableRequest&lt;/td&gt;&#10; &lt;td&gt;AuthEnableResponse&lt;/td&gt;&#10; &lt;td&gt;AuthEnable 启用身份认证。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthDisable&lt;/td&gt;&#10; &lt;td&gt;AuthDisableRequest&lt;/td&gt;&#10; &lt;td&gt;AuthDisableResponse&lt;/td&gt;&#10; &lt;td&gt;AuthDisable 禁用身份认证。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;AuthStatus&lt;/td&gt;&#10; &lt;td&gt;AuthStatusRequest&lt;/td&gt;&#10; &lt;td&gt;AuthStatusResponse&lt;/td&gt;&#10; &lt;td&gt;AuthStatus 显示身份认证状态。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Authenticate&lt;/td&gt;&#10; &lt;td&gt;AuthenticateRequest&lt;/td&gt;&#10; &lt;td&gt;AuthenticateResponse&lt;/td&gt;&#10; &lt;td&gt;Authenticate 处理身份认证请求。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserAdd&lt;/td&gt;&#10; &lt;td&gt;AuthUserAddRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserAddResponse&lt;/td&gt;&#10; &lt;td&gt;UserAdd 添加新用户。用户名不能为空。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserGet&lt;/td&gt;&#10; &lt;td&gt;AuthUserGetRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserGetResponse&lt;/td&gt;&#10; &lt;td&gt;UserGet 获取用户详细信息。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserList&lt;/td&gt;&#10; &lt;td&gt;AuthUserListRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserListResponse&lt;/td&gt;&#10; &lt;td&gt;UserList 获取所有用户的列表。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserDelete&lt;/td&gt;&#10; &lt;td&gt;AuthUserDeleteRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserDeleteResponse&lt;/td&gt;&#10; &lt;td&gt;UserDelete 删除指定用户。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserChangePassword&lt;/td&gt;&#10; &lt;td&gt;AuthUserChangePasswordRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserChangePasswordResponse&lt;/td&gt;&#10; &lt;td&gt;UserChangePassword 更改指定用户的密码。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserGrantRole&lt;/td&gt;&#10; &lt;td&gt;AuthUserGrantRoleRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserGrantRoleResponse&lt;/td&gt;&#10; &lt;td&gt;UserGrant 为指定用户授予角色。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;UserRevokeRole&lt;/td&gt;&#10; &lt;td&gt;AuthUserRevokeRoleRequest&lt;/td&gt;&#10; &lt;td&gt;AuthUserRevokeRoleResponse&lt;/td&gt;&#10; &lt;td&gt;UserRevokeRole 撤销指定用户的指定角色。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleAdd&lt;/td&gt;&#10; &lt;td&gt;AuthRoleAddRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleAddResponse&lt;/td&gt;&#10; &lt;td&gt;RoleAdd 添加新角色。角色名不能为空。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleGet&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGetRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGetResponse&lt;/td&gt;&#10; &lt;td&gt;RoleGet 获取角色详细信息。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleList&lt;/td&gt;&#10; &lt;td&gt;AuthRoleListRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleListResponse&lt;/td&gt;&#10; &lt;td&gt;RoleList 获取所有角色的列表。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleDelete&lt;/td&gt;&#10; &lt;td&gt;AuthRoleDeleteRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleDeleteResponse&lt;/td&gt;&#10; &lt;td&gt;RoleDelete 删除指定角色。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleGrantPermission&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGrantPermissionRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleGrantPermissionResponse&lt;/td&gt;&#10; &lt;td&gt;RoleGrantPermission 为指定角色授予指定键或范围的权限。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;RoleRevokePermission&lt;/td&gt;&#10; &lt;td&gt;AuthRoleRevokePermissionRequest&lt;/td&gt;&#10; &lt;td&gt;AuthRoleRevokePermissionResponse&lt;/td&gt;&#10; &lt;td&gt;RoleRevokePermission 撤销指定角色的指定键或范围的权限。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-cluster-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Cluster&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberAdd&lt;/td&gt;&#10; &lt;td&gt;MemberAddRequest&lt;/td&gt;&#10; &lt;td&gt;MemberAddResponse&lt;/td&gt;&#10; &lt;td&gt;MemberAdd 将成员添加至集群。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberRemove&lt;/td&gt;&#10; &lt;td&gt;MemberRemoveRequest&lt;/td&gt;&#10; &lt;td&gt;MemberRemoveResponse&lt;/td&gt;&#10; &lt;td&gt;MemberRemove 从集群中移除现有成员。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberUpdate&lt;/td&gt;&#10; &lt;td&gt;MemberUpdateRequest&lt;/td&gt;&#10; &lt;td&gt;MemberUpdateResponse&lt;/td&gt;&#10; &lt;td&gt;MemberUpdate 更新成员配置。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberList&lt;/td&gt;&#10; &lt;td&gt;MemberListRequest&lt;/td&gt;&#10; &lt;td&gt;MemberListResponse&lt;/td&gt;&#10; &lt;td&gt;MemberList 列出集群中的所有成员。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MemberPromote&lt;/td&gt;&#10; &lt;td&gt;MemberPromoteRequest&lt;/td&gt;&#10; &lt;td&gt;MemberPromoteResponse&lt;/td&gt;&#10; &lt;td&gt;MemberPromote 将学习者成员（非投票成员）提升为 Raft 投票成员。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-kv-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;KV&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Range&lt;/td&gt;&#10; &lt;td&gt;RangeRequest&lt;/td&gt;&#10; &lt;td&gt;RangeResponse&lt;/td&gt;&#10; &lt;td&gt;Range 从键值存储中获取指定范围内的键。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Put&lt;/td&gt;&#10; &lt;td&gt;PutRequest&lt;/td&gt;&#10; &lt;td&gt;PutResponse&lt;/td&gt;&#10; &lt;td&gt;Put 将指定键写入键值存储。Put 请求会递增键值存储的修订版本，并在事件历史中生成一个事件。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;DeleteRange&lt;/td&gt;&#10; &lt;td&gt;DeleteRangeRequest&lt;/td&gt;&#10; &lt;td&gt;DeleteRangeResponse&lt;/td&gt;&#10; &lt;td&gt;DeleteRange 从键值存储中删除指定范围内的键。删除请求会递增键值存储的修订版本，并为每个被删除的键在事件历史中生成一个删除事件。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Txn&lt;/td&gt;&#10; &lt;td&gt;TxnRequest&lt;/td&gt;&#10; &lt;td&gt;TxnResponse&lt;/td&gt;&#10; &lt;td&gt;Txn 在单个事务中处理多个请求。事务请求会递增键值存储的修订版本，并为每个完成的请求生成具有相同修订版本的事件。不允许在同一个事务中多次修改同一键。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Compact&lt;/td&gt;&#10; &lt;td&gt;CompactionRequest&lt;/td&gt;&#10; &lt;td&gt;CompactionResponse&lt;/td&gt;&#10; &lt;td&gt;Compact 对 etcd 键值存储中的事件历史进行压缩。键值存储应定期执行压缩，否则事件历史将无限增长。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-lease-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Lease&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseGrant&lt;/td&gt;&#10; &lt;td&gt;LeaseGrantRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseGrantResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseGrant 创建一个租约，若服务器在指定的生存时间（TTL）内未收到保活请求，则该租约将过期。若租约过期，所有关联该租约的键将被过期并删除。每个过期的键都会在事件历史中生成一个删除事件。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseRevoke&lt;/td&gt;&#10; &lt;td&gt;LeaseRevokeRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseRevokeResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseRevoke 撤销一个租约。所有关联该租约的键将过期并被删除。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseKeepAlive&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAliveRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAliveResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseKeepAlive 通过客户端向服务器流式发送保活请求，并从服务器流式接收保活响应，以维持租约的活跃状态。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseTimeToLive&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLiveRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLiveResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseTimeToLive 获取租约信息。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;LeaseLeases&lt;/td&gt;&#10; &lt;td&gt;LeaseLeasesRequest&lt;/td&gt;&#10; &lt;td&gt;LeaseLeasesResponse&lt;/td&gt;&#10; &lt;td&gt;LeaseLeases 列出所有现有的租约。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-maintenance-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Maintenance&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Alarm&lt;/td&gt;&#10; &lt;td&gt;AlarmRequest&lt;/td&gt;&#10; &lt;td&gt;AlarmResponse&lt;/td&gt;&#10; &lt;td&gt;告警用于激活、停用和查询与集群健康状态相关的告警。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Status&lt;/td&gt;&#10; &lt;td&gt;StatusRequest&lt;/td&gt;&#10; &lt;td&gt;StatusResponse&lt;/td&gt;&#10; &lt;td&gt;状态用于获取成员的状态。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Defragment&lt;/td&gt;&#10; &lt;td&gt;DefragmentRequest&lt;/td&gt;&#10; &lt;td&gt;DefragmentResponse&lt;/td&gt;&#10; &lt;td&gt;碎片整理用于对成员的后端数据库进行碎片整理，以恢复存储空间。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Hash&lt;/td&gt;&#10; &lt;td&gt;HashRequest&lt;/td&gt;&#10; &lt;td&gt;HashResponse&lt;/td&gt;&#10; &lt;td&gt;哈希用于计算整个后端键空间的哈希值，包括存储中的键、租约及其他桶。此功能仅用于测试！请勿在存在持续事务的生产环境中依赖此操作，因为哈希操作不持有 MVCC 锁。如需对“键”桶进行一致性检查，请改用“HashKV” API。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;HashKV&lt;/td&gt;&#10; &lt;td&gt;HashKVRequest&lt;/td&gt;&#10; &lt;td&gt;HashKVResponse&lt;/td&gt;&#10; &lt;td&gt;哈希键用于计算指定修订版本之前所有 MVCC 键的哈希值。它仅遍历后端存储中的“键”桶。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Snapshot&lt;/td&gt;&#10; &lt;td&gt;SnapshotRequest&lt;/td&gt;&#10; &lt;td&gt;SnapshotResponse&lt;/td&gt;&#10; &lt;td&gt;快照通过流将成员的整个后端数据发送给客户端。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;MoveLeader&lt;/td&gt;&#10; &lt;td&gt;MoveLeaderRequest&lt;/td&gt;&#10; &lt;td&gt;MoveLeaderResponse&lt;/td&gt;&#10; &lt;td&gt;转移领导者用于请求当前领导者将其领导权转移给指定接收节点。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Downgrade&lt;/td&gt;&#10; &lt;td&gt;DowngradeRequest&lt;/td&gt;&#10; &lt;td&gt;DowngradeResponse&lt;/td&gt;&#10; &lt;td&gt;降级用于请求降级、验证可行性或取消集群版本的降级操作。自 etcd 3.5 起支持。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-watch-apietcdserverpbrpcproto"&gt;服务 &lt;code&gt;Watch&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Watch&lt;/td&gt;&#10; &lt;td&gt;WatchRequest&lt;/td&gt;&#10; &lt;td&gt;WatchResponse&lt;/td&gt;&#10; &lt;td&gt;Watch 用于监听发生的事件或已发生的事件。输入和输出均为流；输入流用于创建和取消监听器，输出流用于发送事件。一个 Watch RPC 可以同时监听多个键范围，一次性流式传输多个监听的事件。可以从最后一次压缩的修订版本开始，监听完整的事件历史。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmmember-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AlarmMember&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;memberID&lt;/td&gt;&#10; &lt;td&gt;memberID 是与触发告警相关的成员的 ID。&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarm&lt;/td&gt;&#10; &lt;td&gt;alarm 是已触发的告警类型。&lt;/td&gt;&#10; &lt;td&gt;AlarmType&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AlarmRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;action&lt;/td&gt;&#10; &lt;td&gt;action 表示要发出的告警请求类型。action 可以是获取告警状态、激活告警，或停用已触发的告警。&lt;/td&gt;&#10; &lt;td&gt;AlarmAction&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;memberID&lt;/td&gt;&#10; &lt;td&gt;memberID 表示与告警关联的成员 ID。如果 memberID 为 0，则该告警请求涵盖所有成员。&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarm&lt;/td&gt;&#10; &lt;td&gt;alarm 表示本次请求所考虑的告警类型。&lt;/td&gt;&#10; &lt;td&gt;AlarmType&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-alarmresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AlarmResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;alarms&lt;/td&gt;&#10; &lt;td&gt;alarms 是与告警请求相关联的告警列表。&lt;/td&gt;&#10; &lt;td&gt;(slice of) AlarmMember&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authdisablerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthDisableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authdisableresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthDisableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenablerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthEnableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenableresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthEnableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroleaddrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要添加到身份认证系统中的角色名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroleaddresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroledeleterequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authroledeleteresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegetrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegetresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;perm&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(切片) authpb.Permission&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegrantpermissionrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGrantPermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是将被授予权限的角色名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;perm&lt;/td&gt;&#10; &lt;td&gt;perm 是要授予角色的权限。&lt;/td&gt;&#10; &lt;td&gt;authpb.Permission&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolegrantpermissionresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleGrantPermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolelistrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolelistresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;roles&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolerevokepermissionrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleRevokePermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;range_end&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authrolerevokepermissionresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthRoleRevokePermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authstatusrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthStatusRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authstatusresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthStatusResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;enabled&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;bool&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;authRevision&lt;/td&gt;&#10; &lt;td&gt;authRevision 是认证存储系统的当前修订版本&lt;/td&gt;&#10; &lt;td&gt;uint64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuseraddrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;options&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;authpb.UserAddOptions&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;hashedPassword&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuseraddresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserchangepasswordrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserChangePasswordRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要更改密码的用户的名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;password 是用户的新密码。请注意，该字段将在 API 层被移除。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;hashedPassword&lt;/td&gt;&#10; &lt;td&gt;hashedPassword 是用户的新的哈希密码。请注意，该字段将在 API 层被初始化。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserchangepasswordresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserChangePasswordResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserdeleterequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要删除的用户名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserdeleteresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergetrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergetresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;roles&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergrantrolerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGrantRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;user&lt;/td&gt;&#10; &lt;td&gt;user 是应被授予指定角色的用户名。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;role 是应授予用户的角色名称。&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authusergrantroleresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserGrantRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserlistrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserlistresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;users&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;(slice of) string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserrevokerolerequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserRevokeRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;role&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authuserrevokeroleresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthUserRevokeRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenticaterequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthenticateRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;password&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-authenticateresponse-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;AuthenticateResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;option&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;token&lt;/td&gt;&#10; &lt;td&gt;token 是可用于后续 RPC 的授权令牌&lt;/td&gt;&#10; &lt;td&gt;string&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-compactionrequest-apietcdserverpbrpcproto"&gt;消息 &lt;code&gt;CompactionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;CompactionRequest 对键值存储执行压缩，直至指定的修订版本。所有修订版本小于压缩修订版本的已覆盖键将被移除。&lt;/p&gt;</description></item><item><title>API 参考：并发</title><link>https://pig.center/zh/docs/etcd/dev-guide/api_concurrency_reference_v3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/dev-guide/api_concurrency_reference_v3/</guid><description>&lt;p&gt;本文 API 参考由命名的 &lt;code&gt;.proto&lt;/code&gt; 文件自动生成。&lt;/p&gt;&#10;&lt;h5 id="service-lock-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;服务 &lt;code&gt;Lock&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;锁服务将客户端锁功能以 gRPC 接口的形式暴露。&lt;/p&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;方法&lt;/th&gt;&#10; &lt;th scope="col"&gt;请求类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;响应类型&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Lock&lt;/td&gt;&#10; &lt;td&gt;LockRequest&lt;/td&gt;&#10; &lt;td&gt;LockResponse&lt;/td&gt;&#10; &lt;td&gt;Lock 在指定名称的锁上获取分布式共享锁。成功时，将返回一个唯一键，该键在调用方持有锁期间持续存在。该键可与事务配合使用，以确保对 etcd 的更新仅在持有锁所有权时发生。锁将持续持有，直至对键调用 Unlock，或与所有者关联的租约到期。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;Unlock&lt;/td&gt;&#10; &lt;td&gt;UnlockRequest&lt;/td&gt;&#10; &lt;td&gt;UnlockResponse&lt;/td&gt;&#10; &lt;td&gt;Unlock 接收 Lock 返回的键，并释放对锁的持有。等待获取锁的下一个 Lock 调用者将被唤醒，并获得锁的所有权。&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-lockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;LockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;name&lt;/td&gt;&#10; &lt;td&gt;name 是要获取的分布式共享锁的标识符。&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;lease&lt;/td&gt;&#10; &lt;td&gt;lease 是将附加到锁所有权的租约 ID。如果该租约到期或被撤销且当前持有锁，则锁会自动释放。使用相同租约调用 Lock 将被视为一次获取；使用相同租约两次锁定为无操作。&lt;/td&gt;&#10; &lt;td&gt;int64&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-lockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;LockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;键是在锁持有者持有锁期间存在于 etcd 中的键。用户不应修改此键，否则锁可能表现出未定义行为。&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-unlockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;UnlockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;key&lt;/td&gt;&#10; &lt;td&gt;key 是由 Lock 分配的锁所有权键。&lt;/td&gt;&#10; &lt;td&gt;bytes&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="message-unlockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto"&gt;消息 &lt;code&gt;UnlockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#10;&lt;/h5&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;字段&lt;/th&gt;&#10; &lt;th scope="col"&gt;描述&lt;/th&gt;&#10; &lt;th scope="col"&gt;类型&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;header&lt;/td&gt;&#10; &lt;td&gt;&lt;/td&gt;&#10; &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h5 id="service-election-serveretcdserverapiv3electionv3electionpbv3electionproto"&gt;服务 &lt;code&gt;Election&lt;/code&gt; (server/etcdserver/api/v3election/v3electionpb/v3election.proto)&#10;&lt;/h5&gt;&#10;&lt;p&gt;选举服务通过 gRPC 接口向客户端暴露选举功能。&lt;/p&gt;</description></item><item><title>配置选项</title><link>https://pig.center/zh/docs/etcd/op-guide/configuration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/op-guide/configuration/</guid><description>&lt;p&gt;可以通过以下方式配置 etcd：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="#command-line-flags"&gt;命令行标志&lt;/a&gt;&#10;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;环境变量&lt;/strong&gt;：每个标志都有一个对应的环境变量，其名称与标志相同，但前缀为 &lt;code&gt;ETCD_&lt;/code&gt;，并以全大写和 [蛇形命名法][] 格式化。例如，&lt;code&gt;--some-flag&lt;/code&gt; 对应 &lt;code&gt;ETCD_SOME_FLAG&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;a href="#configuration-file"&gt;配置文件&lt;/a&gt;&#10;&lt;/strong&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="td-callout td-callout--warning" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-triangle-exclamation" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;警告&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;&lt;strong&gt;请注意&lt;/strong&gt;：如果混合使用配置选项，则以下规则适用。&lt;/p&gt;</description></item><item><title>硬件推荐</title><link>https://pig.center/zh/docs/etcd/op-guide/hardware/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/op-guide/hardware/</guid><description>&lt;p&gt;etcd 在资源有限的开发或测试环境中通常运行良好；在笔记本电脑或廉价云主机上开发 etcd 是常见做法。然而，在生产环境中运行 etcd 集群时，遵循一些硬件建议有助于实现有效的系统管理。这些建议并非硬性规定，而是构建稳健生产部署的良好起点。和往常一样，部署前应使用模拟工作负载进行测试。&lt;/p&gt;</description></item><item><title>支持的平台</title><link>https://pig.center/zh/docs/etcd/op-guide/supported-platform/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/op-guide/supported-platform/</guid><description>&lt;h2 id="support-tiers"&gt;支持层级&#10;&lt;/h2&gt;&#10;&lt;p&gt;etcd 可在不同平台上运行，但其提供的保证取决于平台的支持级别：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Tier 1&lt;/strong&gt;：由 [etcd 维护者][] 完全支持；etcd 保证通过所有测试，包括功能测试和健壮性测试。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tier 2&lt;/strong&gt;：etcd 保证通过集成测试和端到端测试，但不保证通过功能测试或健壮性测试。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tier 3&lt;/strong&gt;：etcd 保证可构建，可能仅进行轻度测试（或未测试），因此应视为 &lt;em&gt;不稳定&lt;/em&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="current-support"&gt;当前支持&#10;&lt;/h2&gt;&#10;&lt;p&gt;下表列出了当前支持的平台及其对应的 etcd 支持级别：&lt;/p&gt;</description></item><item><title>基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/</guid><description>&lt;h2 id="benchmarks"&gt;基准测试&#10;&lt;/h2&gt;&#10;&lt;p&gt;etcd 性能基准测试结果将定期发布，并在以下各版本中持续追踪：&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/zh/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/"&gt;etcd v2.1.0-alpha&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/zh/docs/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/"&gt;etcd v2.2.0-rc&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://pig.center/zh/docs/etcd/benchmarks/etcd-3-demo-benchmarks/"&gt;etcd v3 演示&lt;/a&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="memory-usage-benchmarks"&gt;内存使用基准&#10;&lt;/h2&gt;&#10;&lt;p&gt;它记录了在不同场景下的预期内存使用情况。&lt;/p&gt;</description></item><item><title>存储内存使用量基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/etcd-storage-memory-benchmark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/etcd-storage-memory-benchmark/</guid><description>&lt;!---todo: link storage to storage design doc--&gt;&#10;&lt;p&gt;etcd 存储的两个组件会占用物理内存。etcd 进程分配了一个 &lt;em&gt;内存索引&lt;/em&gt;，用于加速键的查找。进程的 &lt;em&gt;页缓存&lt;/em&gt; 由操作系统管理，用于存储从磁盘读取的最近访问数据，以便快速重用。&lt;/p&gt;</description></item><item><title>监听内存使用量基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/etcd-3-watch-memory-benchmark/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/etcd-3-watch-memory-benchmark/</guid><description>&lt;div class="td-callout td-callout--note" role="note"&gt;&#10; &lt;div class="td-callout__title"&gt;&lt;i class="td-callout__icon fa-solid fa-circle-info" aria-hidden="true"&gt;&lt;/i&gt;&lt;span class="td-callout__label"&gt;说明&lt;/span&gt;&lt;/div&gt;&#10; &lt;div class="td-callout__body"&gt;&#10;&lt;p&gt;监听功能正处于积极开发中，其内存使用量可能随开发进展而变化。我们预计其内存使用量不会显著超过以下所述数值。&lt;/p&gt;&#10; &lt;/div&gt;&#10;&lt;/div&gt;&lt;p&gt;etcd 的一个核心目标是支持大量客户端执行海量监听操作。etcd 旨在支持 O(10k) 个客户端、O(100K) 个监听流（每个客户端约 O(10) 个监听流）以及 O(10M) 个总监听操作（每个监听流约 O(100) 个监听）。每个单独监听操作所消耗的内存占 etcd 整体内存使用量的最大部分，因此成为当前及未来优化的重点。&lt;/p&gt;</description></item><item><title>etcd v3 基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/etcd-3-demo-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/etcd-3-demo-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;物理机&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 机器类型&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1x 专用本地 SSD，挂载于 /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1x 专用慢速磁盘，用于操作系统&lt;/li&gt;&#10;&lt;li&gt;1.8 GB 内存&lt;/li&gt;&#10;&lt;li&gt;2x CPU&lt;/li&gt;&#10;&lt;li&gt;etcd 版本 2.2.0&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd 集群&#10;&lt;/h2&gt;&#10;&lt;p&gt;1 以 v3 演示模式运行的 etcd 成员&lt;/p&gt;</description></item><item><title>etcd v2.2.0-rc 内存基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</guid><description>&lt;h2 id="physical-machine"&gt;物理机&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-standard-2 机器类型&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1 个专用本地 SSD，挂载于 /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1 个专用慢速磁盘，用于操作系统&lt;/li&gt;&#10;&lt;li&gt;7.5 GB 内存&lt;/li&gt;&#10;&lt;li&gt;2 个 CPU&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd"&gt;etcd&#10;&lt;/h2&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-eb862a60-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="" data-td-line-count="4"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-eb862a60-fence-0-viewport" data-td-code-viewport&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;etcd Version: 2.2.0-rc.0+git&#10;Git SHA: 103cb5c&#10;Go Version: go1.5&#10;Go OS/Arch: linux/amd64&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="testing"&gt;测试&#10;&lt;/h2&gt;&#10;&lt;p&gt;启动一个由 3 个成员组成的 etcd 集群，每个成员使用 2 个核心。&lt;/p&gt;</description></item><item><title>etcd v2.2.0-rc 基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/</guid><description>&lt;h2 id="physical-machine"&gt;物理机&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 机器类型&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1 个专用本地 SSD，挂载于 /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1 个专用慢速磁盘，用于操作系统&lt;/li&gt;&#10;&lt;li&gt;1.8 GB 内存&lt;/li&gt;&#10;&lt;li&gt;2 个 CPU&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd 集群&#10;&lt;/h2&gt;&#10;&lt;p&gt;3 etcd 2.2.0-rc 成员，每个成员运行在单台机器上。&lt;/p&gt;</description></item><item><title>etcd v2.2.0 基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-2-0-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-2-0-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;物理机&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 机器类型&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1 块专用本地 SSD，挂载为 etcd 数据目录&lt;/li&gt;&#10;&lt;li&gt;1 块专用慢速磁盘，用于操作系统&lt;/li&gt;&#10;&lt;li&gt;1.8 GB 内存&lt;/li&gt;&#10;&lt;li&gt;2 个 CPU&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd 集群&#10;&lt;/h2&gt;&#10;&lt;p&gt;3 etcd 2.2.0 成员，每个成员运行在单台机器上。&lt;/p&gt;</description></item><item><title>etcd v2.1.0 基准测试</title><link>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://pig.center/zh/docs/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/</guid><description>&lt;h2 id="physical-machines"&gt;物理机&#10;&lt;/h2&gt;&#10;&lt;p&gt;GCE n1-highcpu-2 机器类型&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;1 块专用本地 SSD，挂载于 /var/lib/etcd&lt;/li&gt;&#10;&lt;li&gt;1 块专用慢速磁盘，用于操作系统&lt;/li&gt;&#10;&lt;li&gt;1.8 GB 内存&lt;/li&gt;&#10;&lt;li&gt;2 个 CPU&lt;/li&gt;&#10;&lt;li&gt;etcd 版本 2.1.0 alpha&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="etcd-cluster"&gt;etcd 集群&#10;&lt;/h2&gt;&#10;&lt;p&gt;3 个 etcd 成员，每个成员运行在单台机器上&lt;/p&gt;</description></item></channel></rss>