<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>PostgreSQL Community Components on PGSQL.CC</title>
    <link>https://pgsql.cc/</link>
    <description>Recent content in PostgreSQL Community Components on PGSQL.CC</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Sat, 22 Aug 2026 07:33:30 +0800</lastBuildDate>
    
    
      <atom:link href="https://pgsql.cc/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>pgBadger 13.x Release Notes</title>
        <link>https://pgsql.cc/pgbadger/releases/13/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/releases/13/</guid>
        <description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 13.x, newest first.&lt;/p&gt;&#xA;&lt;h2 id=&#34;v13-2&#34;&gt;v13.2 · 2025-12-29&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues and applied patches&#xA;reported by users since last release.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fix normalization that was not handling properly balanced single-quoted&#xA;strings along with escaped quotes inside. Thanks to Bertrand Bourgier for&#xA;the report.&lt;/li&gt;&#xA;&lt;li&gt;Fix placeholder requirements in the doc.&lt;/li&gt;&#xA;&lt;li&gt;Fix case where no error sample log entries was reported. Thanks to john doe&#xA;for the report.&lt;/li&gt;&#xA;&lt;li&gt;Fix possible precedence problem between ! and %s. Thanks to Luca Santarelli&#xA;and Philipp Trulson for the report.&lt;/li&gt;&#xA;&lt;li&gt;Update pgFormatter code to v5.9&lt;/li&gt;&#xA;&lt;li&gt;Add github CI action for testing on commit push.&lt;/li&gt;&#xA;&lt;li&gt;Fix parsing of %r placeholder in log_line_prefix. Thanks to nike7o0 for the&#xA;report.&lt;/li&gt;&#xA;&lt;li&gt;Fix uninitialized value warning. Thanks to Ales Zeleny for the report.&lt;/li&gt;&#xA;&lt;li&gt;Enhance docs of ssh-options for postgres log parsing with examples. Thanks&#xA;to Ulrich Konrad for the patch.&lt;/li&gt;&#xA;&lt;li&gt;Add command &amp;ndash;ssh-sudo to run commands over ssh as sudo. Thanks to Andrew&#xA;Jackson for the patch.&lt;/li&gt;&#xA;&lt;li&gt;Fix possible precedence problem between ! and string eq. Thanks to Adrien&#xA;Nayrat for the report.&lt;/li&gt;&#xA;&lt;li&gt;Fix parsing of pgbouncer stats. Thanks to mrgtt for the report.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;v13-1&#34;&gt;v13.1 · 2025-03-16&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues reported by&#xA;users since last release and adds some new features:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Annotate Command (annotate)</title>
        <link>https://pgsql.cc/pgbackrest/command/annotate/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/annotate/</guid>
        <description>&lt;p&gt;Annotations included with the &lt;code&gt;backup&lt;/code&gt; command can be added, modified, or removed afterwards using the &lt;code&gt;annotate&lt;/code&gt; command.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;backup-annotation-option---annotation&#34;&gt;Backup Annotation Option (&lt;code&gt;--annotation&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Annotate backup with user-defined key/value pairs.&lt;/p&gt;&#xA;&lt;p&gt;Users can attach informative key/value pairs to the backup. This option may be used multiple times to attach multiple annotations.&lt;/p&gt;&#xA;&lt;p&gt;Annotations are output by the &lt;code&gt;info&lt;/code&gt; command text output when a backup is specified with &lt;code&gt;--set&lt;/code&gt; and always appear in the JSON output.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Dynamic Configuration Settings</title>
        <link>https://pgsql.cc/patroni/config/dynamic/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/config/dynamic/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;dynamic&#34;&gt;&lt;/a&gt;&#xA;Dynamic configuration is stored in the DCS (Distributed Configuration Store) and applied on all cluster nodes.&lt;/p&gt;&#xA;&lt;p&gt;In order to change the dynamic configuration you can use either &lt;a href=&#34;https://pgsql.cc/patroni/patronictl/#patronictl_edit_config&#34;&gt;patronictl_edit_config&lt;/a&gt; tool or Patroni &lt;a href=&#34;https://pgsql.cc/patroni/rest_api/#rest_api&#34;&gt;REST API&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;loop_wait&lt;/strong&gt;: the number of seconds the loop will sleep. Default value: 10, minimum possible value: 1&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;ttl&lt;/strong&gt;: the TTL to acquire the leader lock (in seconds). Think of it as the length of time before initiation of the automatic failover process. Default value: 30, minimum possible value: 20&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;retry_timeout&lt;/strong&gt;: timeout for DCS and PostgreSQL operation retries (in seconds). DCS or network issues shorter than this will not cause Patroni to demote the leader. Default value: 10, minimum possible value: 3&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;when changing values of &lt;strong&gt;loop_wait&lt;/strong&gt;, &lt;strong&gt;retry_timeout&lt;/strong&gt;, or &lt;strong&gt;ttl&lt;/strong&gt; you have to follow the rule:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Features</title>
        <link>https://pgsql.cc/pgbouncer/features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/features/</guid>
        <description>&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Several levels of brutality when rotating connections:&lt;/p&gt;&#xA;&lt;dl&gt;&#xA;&lt;dt&gt;&lt;strong&gt;Session pooling&lt;/strong&gt;&lt;/dt&gt;&#xA;&lt;dd&gt;Most polite method. When a client connects, a server connection will be assigned to it for the whole duration it stays connected. When the client disconnects, the server connection will be put back into pool. This mode supports all PostgreSQL features.&lt;/dd&gt;&#xA;&lt;dt&gt;&lt;strong&gt;Transaction pooling&lt;/strong&gt;&lt;/dt&gt;&#xA;&lt;dd&gt;A server connection is assigned to a client only during a transaction. When PgBouncer notices that the transaction is over, the server will be put back into the pool. This mode breaks a few session-based features of PostgreSQL. You can use it only when the application cooperates by not using features that break. See the table below for incompatible features.&lt;/dd&gt;&#xA;&lt;dt&gt;&lt;strong&gt;Statement pooling&lt;/strong&gt;&lt;/dt&gt;&#xA;&lt;dd&gt;Most aggressive method. This is transaction pooling with a twist: Multi-statement transactions are disallowed. This is meant to enforce &amp;ldquo;autocommit&amp;rdquo; mode on the client, mostly targeted at PL/Proxy.&lt;/dd&gt;&#xA;&lt;/dl&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Low memory requirements (2 kB per connection by default). This is because PgBouncer does not need to see full packets at once.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Introduction</title>
        <link>https://pgsql.cc/patroni/readme/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/readme/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;readme&#34;&gt;&lt;/a&gt;&#xA;Patroni is a template for high availability (HA) PostgreSQL solutions using Python. Patroni originated as a fork of &lt;a href=&#34;https://github.com/compose/governor&#34;&gt;Governor&lt;/a&gt;, the project from Compose. It includes plenty of new features.&lt;/p&gt;&#xA;&lt;p&gt;For additional background info, see:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.youtube.com/watch?v=iruaCgeG7qs&#34;&gt;PostgreSQL HA with Kubernetes and Patroni&lt;/a&gt;, talk by Josh Berkus at KubeCon 2016 (video)&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://engineering.zalando.com/posts/2016/02/zalandos-patroni-a-template-for-high-availability-postgresql.html&#34;&gt;Feb. 2016 Zalando Tech blog post&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;development-status&#34;&gt;Development Status&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Patroni is in active development and accepts contributions. See our &lt;a href=&#34;https://pgsql.cc/patroni/contributing_guidelines/#contributing_guidelines&#34;&gt;Contributing&lt;/a&gt; section below for more details.&lt;/p&gt;</description>
      </item>
    <item>
        <title>News</title>
        <link>https://pgsql.cc/pgbackrest/news/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/news/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;distribution-tarball&#34;&gt;New Distribution Tarball&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;July 20, 2026&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Starting with pgBackRest 2.59.0, every release includes a distribution tarball that makes building from source simpler. Unlike a checkout of the git repository, the tarball ships the generated source and the rendered documentation pre-built, so pgBackRest builds and installs without the code generation or documentation tooling that a repository checkout requires.&lt;/p&gt;&#xA;&lt;p&gt;The tarball contains the pgBackRest source with the pre-generated code, the command reference man page, the HTML documentation, and a smoke test to verify the build. It builds with meson and ninja using only the usual pgBackRest libraries.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Starter Guide</title>
        <link></link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid></guid>
        <description></description>
      </item>
    <item>
        <title>YAML Configuration Settings</title>
        <link>https://pgsql.cc/patroni/config/yaml/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/config/yaml/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;yaml&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;globaluniversal&#34;&gt;Global/Universal&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;thread_pool_size&lt;/strong&gt;: size of thread pool used by Patroni to execute asynchronous tasks and communicate via REST API with other members during leader race or failsafe checks. Minimal value is &lt;code&gt;5&lt;/code&gt;, default value is &lt;code&gt;5&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;thread_stack_size&lt;/strong&gt;: specifies the stack size to be used for threads started by Patroni. Value must be aligned by &lt;code&gt;64kB&lt;/code&gt;. Minimal value is &lt;code&gt;64kB&lt;/code&gt;, default value (set by Patroni) is &lt;code&gt;512kB&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;name&lt;/strong&gt;: the name of the host. Must be unique for the cluster. The value &lt;code&gt;__patroni_strict_sync_replica_placeholder__&lt;/code&gt; is reserved for internal use by Patroni and cannot be used as a node name.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;namespace&lt;/strong&gt;: path within the configuration store where Patroni will keep information about the cluster. Default value: &amp;ldquo;/service&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;scope&lt;/strong&gt;: cluster name&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;a id=&#34;log_settings&#34;&gt;&lt;/a&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgBadger 12.x Release Notes</title>
        <link>https://pgsql.cc/pgbadger/releases/12/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/releases/12/</guid>
        <description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 12.x, newest first.&lt;/p&gt;&#xA;&lt;h2 id=&#34;v12-4&#34;&gt;v12.4 · 2023-12-25&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues reported by&#xA;users since last release.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fix pgbouncer report with version 1.21. Thanks to Ales Zeleny for the patch.&lt;/li&gt;&#xA;&lt;li&gt;Prevent parallelism perl file to be higher than the number of files. Thanks&#xA;to maliangzhu for the report.&lt;/li&gt;&#xA;&lt;li&gt;Fix regression test broken since v12.3. Thanks to ieshin for the report.&lt;/li&gt;&#xA;&lt;li&gt;Fix cases where LOG entries where counted as ERROR log level entries. Thanks&#xA;to Matti Linnanvuori for the report.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;v12-3&#34;&gt;v12.3 · 2023-11-27&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This is a maintenance release of pgBadger that fixes issues reported by&#xA;users since last release. It also adds some new features:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Archive Get Command (archive-get)</title>
        <link>https://pgsql.cc/pgbackrest/command/archive-get/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/archive-get/</guid>
        <description>&lt;p&gt;This command is used by PostgreSQL to restore a backup, perform PITR, or as an alternative to streaming for keeping a replica up to date. WAL segments are required for PostgreSQL recovery or to maintain a replica.&lt;/p&gt;&#xA;&lt;p&gt;When multiple repositories are configured, WAL will be fetched from the repositories in priority order (e.g. &lt;code&gt;repo1&lt;/code&gt;, &lt;code&gt;repo2&lt;/code&gt;, etc.). In general it is better if faster/cheaper storage has higher priority. If a repository is specified with the &lt;code&gt;--repo&lt;/code&gt; option then only that repository will be searched.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration: pgbouncer.ini</title>
        <link>https://pgsql.cc/pgbouncer/config/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/config/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;description&#34;&gt;Description&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The configuration file is in &amp;ldquo;ini&amp;rdquo; format. Section names are between &lt;code&gt;[&lt;/code&gt; and &lt;code&gt;]&lt;/code&gt;. Lines starting with &lt;code&gt;;&lt;/code&gt; or &lt;code&gt;#&lt;/code&gt; are taken as comments and ignored. The characters &lt;code&gt;;&lt;/code&gt; and &lt;code&gt;#&lt;/code&gt; are not recognized as special when they appear later in the line.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;generic-settings&#34;&gt;Generic settings&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;logfile&#34;&gt;logfile&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Specifies the log file. For daemonization (&lt;code&gt;-d&lt;/code&gt;), either this or &lt;code&gt;syslog&lt;/code&gt; need to be set.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Download and Installation</title>
        <link>https://pgsql.cc/pgbadger/download/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/download/</guid>
        <description>&lt;h2 id=&#34;distribution-channels&#34;&gt;Choose a distribution channel&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Channel&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Use it for&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Location&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Official release&lt;/td&gt;&#xA;      &lt;td&gt;Source tarballs and release notes&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://github.com/darold/pgbadger/releases&#34;&gt;GitHub Releases&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RPM package&lt;/td&gt;&#xA;      &lt;td&gt;RPM-based Linux distributions&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://yum.postgresql.org/packages/&#34;&gt;PostgreSQL Yum Repository&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Debian/Ubuntu package&lt;/td&gt;&#xA;      &lt;td&gt;APT-based Linux distributions&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://wiki.postgresql.org/wiki/Apt&#34;&gt;PostgreSQL Apt Repository&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Development source&lt;/td&gt;&#xA;      &lt;td&gt;Current unreleased code&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://github.com/darold/pgbadger&#34;&gt;darold/pgbadger&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The documentation snapshot in this site is based on the 13.2 source tree. Always check the release page before downloading: the local snapshot is intentionally fixed, while upstream releases continue to change.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Installation</title>
        <link>https://pgsql.cc/patroni/installation/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/installation/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;installation&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pre-requirements-for-mac-os&#34;&gt;Pre-requirements for Mac OS&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To install requirements on a Mac, run the following:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0696baec-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0696baec-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;brew install postgresql etcd haproxy libyaml python&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;a id=&#34;psycopg2_install_options&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;psycopg&#34;&gt;Psycopg&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Starting from &lt;a href=&#34;https://www.psycopg.org/articles/2019/04/04/psycopg-28-released/&#34;&gt;psycopg2-2.8&lt;/a&gt; the binary version of psycopg2 will no longer be installed by default. Installing it from the source code requires C compiler and postgres+python dev packages. Since in the python world it is not possible to specify dependency as &lt;code&gt;psycopg2 OR psycopg2-binary&lt;/code&gt; you will have to decide how to install it.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Load Balancing Fundamentals</title>
        <link>https://pgsql.cc/haproxy/load-balancing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/load-balancing/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This document is an introduction to HAProxy for all those who don&amp;rsquo;t know it, as well as for those&#xA;who want to re-discover it when they know older versions. Its primary focus is to provide users with&#xA;all the elements to decide if HAProxy is the product they&amp;rsquo;re looking for or not. Advanced users may&#xA;find here some parts of solutions to some ideas they had just because they were not aware of a given&#xA;new feature. Some sizing information is also provided, the product&amp;rsquo;s lifecycle is explained, and&#xA;comparisons with partially overlapping products are provided.&lt;/p&gt;</description>
      </item>
    <item>
        <title>User Guide (Debian/Ubuntu)</title>
        <link>https://pgsql.cc/pgbackrest/user-guide/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/user-guide/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This user guide is intended to be followed sequentially from beginning to end — each section depends on the last. For example, the &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#restore-1&#34;&gt;Restore&lt;/a&gt; section relies on setup that is performed in the &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#quick-start&#34;&gt;Quick Start&lt;/a&gt; section. Once pgBackRest is up and running then skipping around is possible but following the user guide in order is recommended the first time through.&lt;/p&gt;&#xA;&lt;p&gt;Although the examples in this guide are targeted at Debian/Ubuntu and PostgreSQL 17, it should be fairly easy to apply the examples to any Unix distribution and PostgreSQL version. The only OS-specific commands are those to create, start, stop, and drop PostgreSQL clusters. The pgBackRest commands will be the same on any Unix system though the location of the executable may vary. While pgBackRest strives to operate consistently across versions of PostgreSQL, there are subtle differences between versions of PostgreSQL that may show up in this guide when illustrating certain examples, e.g. PostgreSQL path/file names and settings.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgBadger 11.x Release Notes</title>
        <link>https://pgsql.cc/pgbadger/releases/11/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/releases/11/</guid>
        <description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 11.x, newest first.&lt;/p&gt;&#xA;&lt;h2 id=&#34;v11-8&#34;&gt;v11.8 · 2022-04-08&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This release of pgBadger fix some issues reported by users since past&#xA;three months and especially two fixes on new log entries detection in&#xA;incremental mode.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fix detection of new log entries with timestamp when millisecond (%m) or&#xA;epoch (%n) was used in log_line_prefix.&lt;/li&gt;&#xA;&lt;li&gt;Fix detection of new log entries in local file when multiprocess was not&#xA;used.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Here is the complete list of changes and acknowledgments:&lt;/p&gt;</description>
      </item>
    <item>
        <title>What HAProxy Is and How It Works</title>
        <link>https://pgsql.cc/haproxy/architecture/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/architecture/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is written as &amp;ldquo;HAProxy&amp;rdquo; to designate the product, and as &amp;ldquo;haproxy&amp;rdquo; to designate the&#xA;executable program, software package or a process. However, both are commonly used for both&#xA;purposes, and are pronounced H-A-Proxy. Very early, &amp;ldquo;haproxy&amp;rdquo; used to stand for &amp;ldquo;high availability&#xA;proxy&amp;rdquo; and the name was written in two separate words, though by now it means nothing else than&#xA;&amp;ldquo;HAProxy&amp;rdquo;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Archive Push Command (archive-push)</title>
        <link>https://pgsql.cc/pgbackrest/command/archive-push/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/archive-push/</guid>
        <description>&lt;p&gt;Accepts a WAL segment from PostgreSQL and archives it in each repository defined by the indexed &lt;code&gt;repo-path&lt;/code&gt; option (see the &lt;a href=&#34;https://pgsql.cc/pgbackrest/configuration/#repository-options&#34;&gt;Repository&lt;/a&gt; section for information on configuring repositories). The WAL segment may be pushed immediately to the archive or stored locally depending on the value of &lt;code&gt;archive-async&lt;/code&gt;. With multiple repositories configured, &lt;code&gt;archive-push&lt;/code&gt; will attempt to push to as many repositories as possible.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;archive-push&lt;/code&gt; is intended to be configured and called by PostgreSQL. See &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#configure-archiving&#34;&gt;Configure Archiving&lt;/a&gt; for an example.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Command-Line Reference</title>
        <link>https://pgsql.cc/pgbadger/command-line/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/command-line/</guid>
        <description>&lt;p&gt;This page preserves the command reference generated from the pinned upstream source. Option names and help text remain verbatim so they can be compared directly with &lt;code&gt;pgbadger --help&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;usage-and-options&#34;&gt;Usage and options&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Usage: pgbadger [options] logfile [&amp;hellip;]&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-bda906ad-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-bda906ad-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PostgreSQL log analyzer with fully detailed reports and graphs.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Arguments:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-bda906ad-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-bda906ad-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;logfile can be a single log file, a list of files, or a shell command&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;returning a list of files. If you want to pass log content from stdin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;use - as filename. Note that input from stdin will not work with csvlog.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Options:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Environment Configuration Settings</title>
        <link>https://pgsql.cc/patroni/config/env/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/config/env/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;env&#34;&gt;&lt;/a&gt;&#xA;It is possible to override some of the configuration parameters defined in the Patroni configuration file using the system environment variables. This document lists all environment variables handled by Patroni. The values set via those variables always take precedence over the ones set in the Patroni configuration file.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;globaluniversal&#34;&gt;Global/Universal&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_CONFIGURATION&lt;/strong&gt;: it is possible to set the entire configuration for the Patroni via &lt;a href=&#34;https://pgsql.cc/patroni/config/#config&#34;&gt;PATRONI_CONFIGURATION&lt;/a&gt; environment variable. In this case any other environment variables will not be considered!&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_THREAD_POOL_SIZE&lt;/strong&gt;: size of thread pool used by Patroni to execute asynchronous tasks and communicate via REST API with other members during leader race or failsafe checks. Minimal value is &lt;code&gt;5&lt;/code&gt;, default value is &lt;code&gt;5&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_THREAD_STACK_SIZE&lt;/strong&gt;: specifies the stack size to be used for threads started by Patroni. Value must be aligned by &lt;code&gt;64kB&lt;/code&gt;. Minimal value is &lt;code&gt;64kB&lt;/code&gt;, default value (set by Patroni) is &lt;code&gt;512kB&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_NAME&lt;/strong&gt;: name of the node where the current instance of Patroni is running. Must be unique for the cluster. The value &lt;code&gt;__patroni_strict_sync_replica_placeholder__&lt;/code&gt; is reserved for internal use by Patroni and cannot be used as a node name.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_NAMESPACE&lt;/strong&gt;: path within the configuration store where Patroni will keep information about the cluster. Default value: &amp;ldquo;/service&amp;rdquo;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_SCOPE&lt;/strong&gt;: cluster name&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PG_MALLOC_ARENA_MAX&lt;/strong&gt;: custom value for &lt;code&gt;MALLOC_ARENA_MAX&lt;/code&gt; environment variable for &lt;code&gt;postmaster&lt;/code&gt; process. If not set, &lt;code&gt;postmaster&lt;/code&gt; will inherit &lt;code&gt;MALLOC_ARENA_MAX&lt;/code&gt; value.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;log&#34;&gt;Log&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_TYPE&lt;/strong&gt;: sets the format of logs. Can be either &lt;strong&gt;plain&lt;/strong&gt; or &lt;strong&gt;json&lt;/strong&gt;. To use &lt;strong&gt;json&lt;/strong&gt; format, you must have the &lt;a href=&#34;https://pgsql.cc/patroni/installation/#extras&#34;&gt;jsonlogger&lt;/a&gt; installed. The default value is &lt;strong&gt;plain&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_LEVEL&lt;/strong&gt;: sets the general logging level. Default value is &lt;strong&gt;INFO&lt;/strong&gt; (see &lt;a href=&#34;https://docs.python.org/3.6/library/logging.html#levels&#34;&gt;the docs for Python logging&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_TRACEBACK_LEVEL&lt;/strong&gt;: sets the level where tracebacks will be visible. Default value is &lt;strong&gt;ERROR&lt;/strong&gt;. Set it to &lt;strong&gt;DEBUG&lt;/strong&gt; if you want to see tracebacks only if you enable &lt;strong&gt;PATRONI_LOG_LEVEL=DEBUG&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_FORMAT&lt;/strong&gt;: sets the log formatting string. If the log type is &lt;strong&gt;plain&lt;/strong&gt;, the log format should be a string. Refer to &lt;a href=&#34;https://docs.python.org/3.6/library/logging.html#logrecord-attributes&#34;&gt;the LogRecord attributes&lt;/a&gt; for available attributes. If the log type is &lt;strong&gt;json&lt;/strong&gt;, the log format can be a list in addition to a string. Each list item should correspond to LogRecord attributes. Be cautious that only the field name is required, and the &lt;strong&gt;%(&lt;/strong&gt; and &lt;strong&gt;)&lt;/strong&gt; should be omitted. If you wish to print a log field with a different key name, use a dictionary where the dictionary key is the log field, and the value is the name of the field you want to be printed in the log. Default value is &lt;strong&gt;%(asctime)s %(levelname)s: %(message)s&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_DATEFORMAT&lt;/strong&gt;: sets the datetime formatting string. (see the &lt;a href=&#34;https://docs.python.org/3.6/library/logging.html#logging.Formatter.formatTime&#34;&gt;formatTime() documentation&lt;/a&gt;)&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_STATIC_FIELDS&lt;/strong&gt;: add additional fields to the log. This option is only available when the log type is set to &lt;strong&gt;json&lt;/strong&gt;. Example &lt;code&gt;PATRONI_LOG_STATIC_FIELDS=&amp;quot;{app: patroni}&amp;quot;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_MAX_QUEUE_SIZE&lt;/strong&gt;: Patroni is using two-step logging. Log records are written into the in-memory queue and there is a separate thread which pulls them from the queue and writes to stderr or file. The maximum size of the internal queue is limited by default by &lt;strong&gt;1000&lt;/strong&gt; records, which is enough to keep logs for the past 1h20m.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_DIR&lt;/strong&gt;: Directory to write application logs to. The directory must exist and be writable by the user executing Patroni. If you set this env variable, the application will retain 4 25MB logs by default. You can tune those retention values with &lt;code&gt;PATRONI_LOG_FILE_NUM&lt;/code&gt; and &lt;code&gt;PATRONI_LOG_FILE_SIZE&lt;/code&gt; (see below).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_MODE&lt;/strong&gt;: Permissions for log files (for example, &lt;code&gt;0644&lt;/code&gt;). If not specified, permissions will be set based on the current umask value.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_FILE_NUM&lt;/strong&gt;: The number of application logs to retain.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_FILE_SIZE&lt;/strong&gt;: Size of patroni.log file (in bytes) that triggers a log rolling.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_LOGGERS&lt;/strong&gt;: Redefine logging level per python module. Example &lt;code&gt;PATRONI_LOG_LOGGERS=&amp;quot;{patroni.postmaster: WARNING, urllib3: DEBUG}&amp;quot;&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;PATRONI_LOG_DEDUPLICATE_HEARTBEAT_LOGS&lt;/strong&gt;: If set to &lt;code&gt;true&lt;/code&gt;, successive heartbeat logs that are identical shall not be output. Default value is &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;The time the HA loop executes at can be very valuable information in diagnosing failovers due to resource exhaustion and similar problems. When &lt;code&gt;PATRONI_LOG_DEDUPLICATE_HEARTBEAT_LOGS&lt;/code&gt; is set to &lt;code&gt;true&lt;/code&gt; there will be no log generated for the HA loop execution (unless the leader changes) and hence this potentially useful information will not be available from the logs.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Usage: pgbouncer command</title>
        <link>https://pgsql.cc/pgbouncer/usage/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/usage/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;synopsis&#34;&gt;Synopsis&#xA;&lt;/h2&gt;&#xA;&lt;pre&gt;&lt;code&gt;pgbouncer [-d][-R][-v][-u user] &amp;lt;pgbouncer.ini&amp;gt;&#xA;pgbouncer -V|-h&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;On Windows, the options are:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;pgbouncer.exe [-v][-u user] &amp;lt;pgbouncer.ini&amp;gt;&#xA;pgbouncer.exe -V|-h&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Additional options for setting up a Windows service:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;pgbouncer.exe --regservice   &amp;lt;pgbouncer.ini&amp;gt;&#xA;pgbouncer.exe --unregservice &amp;lt;pgbouncer.ini&amp;gt;&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;description&#34;&gt;Description&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;pgbouncer&lt;/strong&gt; is a PostgreSQL connection pooler. Any target application&#xA;can be connected to &lt;strong&gt;pgbouncer&lt;/strong&gt; as if it were a PostgreSQL server,&#xA;and &lt;strong&gt;pgbouncer&lt;/strong&gt; will create a connection to the actual server, or it&#xA;will reuse one of its existing connections.&lt;/p&gt;</description>
      </item>
    <item>
        <title>User Guide (RHEL)</title>
        <link>https://pgsql.cc/pgbackrest/user-guide-rhel/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/user-guide-rhel/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This user guide is intended to be followed sequentially from beginning to end — each section depends on the last. For example, the &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide-rhel/#restore-1&#34;&gt;Restore&lt;/a&gt; section relies on setup that is performed in the &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide-rhel/#quick-start&#34;&gt;Quick Start&lt;/a&gt; section. Once pgBackRest is up and running then skipping around is possible but following the user guide in order is recommended the first time through.&lt;/p&gt;&#xA;&lt;p&gt;Although the examples in this guide are targeted at RHEL and PostgreSQL 14, it should be fairly easy to apply the examples to any Unix distribution and PostgreSQL version. The only OS-specific commands are those to create, start, stop, and drop PostgreSQL clusters. The pgBackRest commands will be the same on any Unix system though the location of the executable may vary. While pgBackRest strives to operate consistently across versions of PostgreSQL, there are subtle differences between versions of PostgreSQL that may show up in this guide when illustrating certain examples, e.g. PostgreSQL path/file names and settings.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgBadger 10.x Release Notes</title>
        <link>https://pgsql.cc/pgbadger/releases/10/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/releases/10/</guid>
        <description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 10.x, newest first.&lt;/p&gt;&#xA;&lt;h2 id=&#34;v10-3&#34;&gt;v10.3 · 2019-02-14&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This release of pgBadger is a maintenance release that fixes some&#xA;log format autodetection issues another pgBouncer log parsing issue&#xA;reported by users. There is also a new feature:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;The -o | --outfile option can now be used multiple time to dump&#xA;output in several format in a single command. For example:&#xA;    pgbadger -o out.html -o out.json /log/pgsql-11.log&#xA;will create two reports in html and json format saved in the&#xA;two corresponding files.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;There&amp;rsquo;s also some bugs fixes and features enhancements.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Backup Command (backup)</title>
        <link>https://pgsql.cc/pgbackrest/command/backup/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/backup/</guid>
        <description>&lt;p&gt;When multiple repositories are configured, pgBackRest will backup to the highest priority repository (e.g. &lt;code&gt;repo1&lt;/code&gt;) unless the &lt;code&gt;--repo&lt;/code&gt; option is specified.&lt;/p&gt;&#xA;&lt;p&gt;pgBackRest does not have a built-in scheduler so it&amp;rsquo;s best to run it from cron or some other scheduling mechanism.&lt;/p&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#perform-a-backup&#34;&gt;Perform a Backup&lt;/a&gt; for more details and examples.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;backup-annotation-option---annotation&#34;&gt;Backup Annotation Option (&lt;code&gt;--annotation&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Annotate backup with user-defined key/value pairs.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Basic Features</title>
        <link>https://pgsql.cc/haproxy/basic-features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/basic-features/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This section will enumerate a number of features that HAProxy implements, some of which are&#xA;generally expected from any modern load balancer, and some of which are a direct benefit of&#xA;HAProxy&amp;rsquo;s architecture. More advanced features will be detailed in the next section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-3-3-1&#34;&gt;3.3.1. Basic features : Proxying&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Proxying is the action of transferring data between a client and a server over two independent&#xA;connections. The following basic features are supported by HAProxy regarding proxying and connection&#xA;management:&lt;/p&gt;</description>
      </item>
    <item>
        <title>PgBouncer compilation and installation</title>
        <link>https://pgsql.cc/pgbouncer/install/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/install/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;building&#34;&gt;Building&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PgBouncer depends on few things to get compiled:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.gnu.org/software/make/&#34;&gt;GNU Make&lt;/a&gt; 3.81+&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://libevent.org/&#34;&gt;Libevent&lt;/a&gt; 2.0+&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.freedesktop.org/wiki/Software/pkg-config/&#34;&gt;pkg-config&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.openssl.org/&#34;&gt;OpenSSL&lt;/a&gt; 1.0.1+ for TLS support&lt;/li&gt;&#xA;&lt;li&gt;(optional) &lt;a href=&#34;http://c-ares.haxx.se/&#34;&gt;c-ares&lt;/a&gt; as alternative to Libevent&amp;rsquo;s evdns&lt;/li&gt;&#xA;&lt;li&gt;(optional) LDAP libraries&lt;/li&gt;&#xA;&lt;li&gt;(optional) PAM libraries&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;When dependencies are installed just run:&lt;/p&gt;&#xA;&lt;pre&gt;&lt;code&gt;$ ./configure --prefix=/usr/local&#xA;$ make&#xA;$ make install&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;If you are building from Git, or are building for Windows, please see&#xA;separate build instructions below.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;dns-lookup-support&#34;&gt;DNS lookup support&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PgBouncer does host name lookups at connect time instead of just once&#xA;at configuration load time.  This requires an asynchronous DNS&#xA;implementation.  The following table shows supported backends and&#xA;their probing order:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Patroni REST API</title>
        <link>https://pgsql.cc/patroni/rest_api/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/rest_api/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;rest_api&#34;&gt;&lt;/a&gt;&#xA;Patroni has a rich REST API, which is used by Patroni itself during the leader race, by the &lt;a href=&#34;https://pgsql.cc/patroni/patronictl/#patronictl&#34;&gt;patronictl&lt;/a&gt; tool in order to perform failovers/switchovers/reinitialize/restarts/reloads, by HAProxy or any other kind of load balancer to perform HTTP health checks, and of course could also be used for monitoring. Below you will find the list of Patroni REST API endpoints.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;health-check-endpoints&#34;&gt;Health check endpoints&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;For all health check &lt;code&gt;GET&lt;/code&gt; requests Patroni returns a JSON document with the status of the node, along with the HTTP status code. If you don&amp;rsquo;t want or don&amp;rsquo;t need the JSON document, you might consider using the &lt;code&gt;HEAD&lt;/code&gt; or &lt;code&gt;OPTIONS&lt;/code&gt; method instead of &lt;code&gt;GET&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PostgreSQL Logging Configuration</title>
        <link>https://pgsql.cc/pgbadger/postgresql-logging/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/postgresql-logging/</guid>
        <description>&lt;p&gt;pgBadger can only report information that PostgreSQL writes to the log. Start with a parseable prefix and a deliberate statement-logging policy, then add the operational events you want to analyze.&lt;/p&gt;&#xA;&lt;h2 id=&#34;minimum-query-logging&#34;&gt;Minimum query logging&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To include query text and duration, enable duration-based statement logging:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-49804231-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;postgresql&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-49804231-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-postgresql&#34; data-lang=&#34;postgresql&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;log_min_duration_statement&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;=&lt;/span&gt; &lt;span class=&#34;mf&#34;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;0&lt;/code&gt; logs every completed statement. On a busy server, choose a higher threshold in milliseconds to control log volume. Measure the overhead and storage growth before enabling a low threshold in production.&lt;/p&gt;</description>
      </item>
    <item>
        <title>pgBadger 9.x Release Notes</title>
        <link>https://pgsql.cc/pgbadger/releases/9/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/releases/9/</guid>
        <description>&lt;p&gt;These entries preserve the complete upstream change record for pgBadger 9.x, newest first.&lt;/p&gt;&#xA;&lt;h2 id=&#34;v9-2&#34;&gt;v9.2 · 2017-07-27&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This release of pgBadger is a maintenance release that adds some new&#xA;features.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Add report of checkpoint distance and estimate.&lt;/li&gt;&#xA;&lt;li&gt;Add support of AWS Redshift keywords to SQL code beautifier.&lt;/li&gt;&#xA;&lt;li&gt;Add autodetection of log format in remote mode to allow remote&#xA;parsing of pgbouncer log file together with PostgreSQL log file.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;There&amp;rsquo;s also some bugs fixes and features enhancements.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Check Command (check)</title>
        <link>https://pgsql.cc/pgbackrest/command/check/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/check/</guid>
        <description>&lt;p&gt;The &lt;code&gt;check&lt;/code&gt; command validates that pgBackRest and the archive_command setting are configured correctly for archiving and backups for the specified stanza. It will attempt to check all repositories and databases that are configured for the host on which the command is run. It detects misconfigurations, particularly in archiving, that result in incomplete backups because required WAL segments did not reach the archive. The command can be run on the PostgreSQL or repository host. The command may also be run on the standby host, however, since &lt;code&gt;pg_switch_xlog()&lt;/code&gt;/&lt;code&gt;pg_switch_wal()&lt;/code&gt; cannot be performed on the standby, the command will only test the repository configuration.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration Reference</title>
        <link>https://pgsql.cc/pgbackrest/configuration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/configuration/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;pgBackRest can be used entirely with command-line parameters but a configuration file is more practical for installations that are complex or set a lot of options. The default location for the configuration file is &lt;code&gt;/etc/pgbackrest/pgbackrest.conf&lt;/code&gt;. If no file exists in that location then the old default of &lt;code&gt;/etc/pgbackrest.conf&lt;/code&gt; will be checked.&lt;/p&gt;&#xA;&lt;p&gt;The following option types are used:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;String&lt;/strong&gt;: A text string, commonly an identifier, password, etc.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Source Releases Download</title>
        <link>https://pgsql.cc/pgbouncer/download/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/download/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-125&#34;&gt;PgBouncer 1.25&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.25.2/pgbouncer-1.25.2.tar.gz&#34;&gt;pgbouncer-1.25.2.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2026-05-08&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;865371 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.25.2/pgbouncer-1.25.2.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.25.1/pgbouncer-1.25.1.tar.gz&#34;&gt;pgbouncer-1.25.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2025-12-03&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;864801 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.25.1/pgbouncer-1.25.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.25.0/pgbouncer-1.25.0.tar.gz&#34;&gt;pgbouncer-1.25.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2025-11-09&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;863322 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.25.0/pgbouncer-1.25.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-124&#34;&gt;PgBouncer 1.24&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.24.1/pgbouncer-1.24.1.tar.gz&#34;&gt;pgbouncer-1.24.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2025-04-16&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;717796 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.24.1/pgbouncer-1.24.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.24.0/pgbouncer-1.24.0.tar.gz&#34;&gt;pgbouncer-1.24.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2025-01-10&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;706573 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.24.0/pgbouncer-1.24.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-123&#34;&gt;PgBouncer 1.23&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.23.1/pgbouncer-1.23.1.tar.gz&#34;&gt;pgbouncer-1.23.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2024-08-02&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;700025 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.23.1/pgbouncer-1.23.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.23.0/pgbouncer-1.23.0.tar.gz&#34;&gt;pgbouncer-1.23.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2024-07-03&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;694845 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.23.0/pgbouncer-1.23.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-122&#34;&gt;PgBouncer 1.22&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.22.1/pgbouncer-1.22.1.tar.gz&#34;&gt;pgbouncer-1.22.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2024-03-04&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;677351 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.22.1/pgbouncer-1.22.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.22.0/pgbouncer-1.22.0.tar.gz&#34;&gt;pgbouncer-1.22.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2024-01-31&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;670589 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.22.0/pgbouncer-1.22.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-121&#34;&gt;PgBouncer 1.21&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.21.0/pgbouncer-1.21.0.tar.gz&#34;&gt;pgbouncer-1.21.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2023-10-16&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;668211 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.21.0/pgbouncer-1.21.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-120&#34;&gt;PgBouncer 1.20&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.20.1/pgbouncer-1.20.1.tar.gz&#34;&gt;pgbouncer-1.20.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2023-08-09&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;638844 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.20.1/pgbouncer-1.20.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz&#34;&gt;pgbouncer-1.20.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2023-07-20&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;638020 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.20.0/pgbouncer-1.20.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-119&#34;&gt;PgBouncer 1.19&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.19.1/pgbouncer-1.19.1.tar.gz&#34;&gt;pgbouncer-1.19.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2023-05-31&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;623569 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.19.1/pgbouncer-1.19.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.19.0/pgbouncer-1.19.0.tar.gz&#34;&gt;pgbouncer-1.19.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2023-05-04&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;616947 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.19.0/pgbouncer-1.19.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-118&#34;&gt;PgBouncer 1.18&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.18.0/pgbouncer-1.18.0.tar.gz&#34;&gt;pgbouncer-1.18.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2022-12-12&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;600825 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.18.0/pgbouncer-1.18.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-117&#34;&gt;PgBouncer 1.17&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.17.0/pgbouncer-1.17.0.tar.gz&#34;&gt;pgbouncer-1.17.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2022-03-23&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;598294 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.17.0/pgbouncer-1.17.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-116&#34;&gt;PgBouncer 1.16&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.16.1/pgbouncer-1.16.1.tar.gz&#34;&gt;pgbouncer-1.16.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2021-11-11&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;591450 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.16.1/pgbouncer-1.16.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.16.0/pgbouncer-1.16.0.tar.gz&#34;&gt;pgbouncer-1.16.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2021-08-09&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;592136 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.16.0/pgbouncer-1.16.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-115&#34;&gt;PgBouncer 1.15&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.15.0/pgbouncer-1.15.0.tar.gz&#34;&gt;pgbouncer-1.15.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2020-11-19&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;588042 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.15.0/pgbouncer-1.15.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-114&#34;&gt;PgBouncer 1.14&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.14.0/pgbouncer-1.14.0.tar.gz&#34;&gt;pgbouncer-1.14.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2020-06-11&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;578955 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.14.0/pgbouncer-1.14.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-113&#34;&gt;PgBouncer 1.13&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.13.0/pgbouncer-1.13.0.tar.gz&#34;&gt;pgbouncer-1.13.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2020-04-27&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;574955 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.13.0/pgbouncer-1.13.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-112&#34;&gt;PgBouncer 1.12&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.12.0/pgbouncer-1.12.0.tar.gz&#34;&gt;pgbouncer-1.12.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2019-10-17&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;567465 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.12.0/pgbouncer-1.12.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-111&#34;&gt;PgBouncer 1.11&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.11.0/pgbouncer-1.11.0.tar.gz&#34;&gt;pgbouncer-1.11.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2019-08-27&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;571414 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.11.0/pgbouncer-1.11.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-110&#34;&gt;PgBouncer 1.10&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.10.0/pgbouncer-1.10.0.tar.gz&#34;&gt;pgbouncer-1.10.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2019-07-01&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;480571 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.10.0/pgbouncer-1.10.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-19&#34;&gt;PgBouncer 1.9&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.9.0/pgbouncer-1.9.0.tar.gz&#34;&gt;pgbouncer-1.9.0.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2018-08-13&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;469300 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.9.0/pgbouncer-1.9.0.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-18&#34;&gt;PgBouncer 1.8&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.8.1/pgbouncer-1.8.1.tar.gz&#34;&gt;pgbouncer-1.8.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2017-12-20&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;465930 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.8.1/pgbouncer-1.8.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.8/pgbouncer-1.8.tar.gz&#34;&gt;pgbouncer-1.8.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2017-12-19&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;465612 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.8/pgbouncer-1.8.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-17&#34;&gt;PgBouncer 1.7&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.7.2/pgbouncer-1.7.2.tar.gz&#34;&gt;pgbouncer-1.7.2.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2016-02-26&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;462374 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.7.2/pgbouncer-1.7.2.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.7.1/pgbouncer-1.7.1.tar.gz&#34;&gt;pgbouncer-1.7.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2016-02-18&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;461903 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.7.1/pgbouncer-1.7.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.7/pgbouncer-1.7.tar.gz&#34;&gt;pgbouncer-1.7.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2015-12-18&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;459080 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.7/pgbouncer-1.7.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-16&#34;&gt;PgBouncer 1.6&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.6.1/pgbouncer-1.6.1.tar.gz&#34;&gt;pgbouncer-1.6.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2015-09-03&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;431076 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.6.1/pgbouncer-1.6.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.6/pgbouncer-1.6.tar.gz&#34;&gt;pgbouncer-1.6.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2015-08-01&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;412700 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.6/pgbouncer-1.6.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-15&#34;&gt;PgBouncer 1.5&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.5/pgbouncer-1.5.5.tar.gz&#34;&gt;pgbouncer-1.5.5.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2015-04-09&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;336145 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.5/pgbouncer-1.5.5.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.4/pgbouncer-1.5.4.tar.gz&#34;&gt;pgbouncer-1.5.4.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2012-11-28&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;339610 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.4/pgbouncer-1.5.4.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.3/pgbouncer-1.5.3.tar.gz&#34;&gt;pgbouncer-1.5.3.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2012-09-12&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;339013 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.3/pgbouncer-1.5.3.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.2/pgbouncer-1.5.2.tar.gz&#34;&gt;pgbouncer-1.5.2.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2012-05-29&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;335338 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.2/pgbouncer-1.5.2.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.1/pgbouncer-1.5.1.tar.gz&#34;&gt;pgbouncer-1.5.1.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2012-04-17&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;334413 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5.1/pgbouncer-1.5.1.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5/pgbouncer-1.5.tar.gz&#34;&gt;pgbouncer-1.5.tar.gz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2012-01-05&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;411488 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.5/pgbouncer-1.5.tar.gz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-14&#34;&gt;PgBouncer 1.4&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.4.2/pgbouncer-1.4.2.tgz&#34;&gt;pgbouncer-1.4.2.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2011-06-16&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;283204 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.4.2/pgbouncer-1.4.2.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.4.1/pgbouncer-1.4.1.tgz&#34;&gt;pgbouncer-1.4.1.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2011-04-01&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;282728 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.4.1/pgbouncer-1.4.1.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.4/pgbouncer-1.4.tgz&#34;&gt;pgbouncer-1.4.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2011-01-11&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;231691 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.4/pgbouncer-1.4.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-13&#34;&gt;PgBouncer 1.3&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.4/pgbouncer-1.3.4.tgz&#34;&gt;pgbouncer-1.3.4.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2010-09-09&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;167957 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.4/pgbouncer-1.3.4.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.3/pgbouncer-1.3.3.tgz&#34;&gt;pgbouncer-1.3.3.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2010-05-10&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;167476 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.3/pgbouncer-1.3.3.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.2/pgbouncer-1.3.2.tgz&#34;&gt;pgbouncer-1.3.2.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2010-03-15&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;166756 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.2/pgbouncer-1.3.2.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.1/pgbouncer-1.3.1.tgz&#34;&gt;pgbouncer-1.3.1.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2009-07-06&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;161518 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3.1/pgbouncer-1.3.1.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3/pgbouncer-1.3.tgz&#34;&gt;pgbouncer-1.3.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2009-02-18&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;160154 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.3/pgbouncer-1.3.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-12&#34;&gt;PgBouncer 1.2&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2.3/pgbouncer-1.2.3.tgz&#34;&gt;pgbouncer-1.2.3.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2008-08-08&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;145372 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2.3/pgbouncer-1.2.3.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2.2/pgbouncer-1.2.2.tgz&#34;&gt;pgbouncer-1.2.2.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2008-08-06&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;145017 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2.2/pgbouncer-1.2.2.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2.1/pgbouncer-1.2.1.tgz&#34;&gt;pgbouncer-1.2.1.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2008-08-04&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;144903 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2.1/pgbouncer-1.2.1.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2/pgbouncer-1.2.tgz&#34;&gt;pgbouncer-1.2.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2008-07-29&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;143915 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.2/pgbouncer-1.2.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-11&#34;&gt;PgBouncer 1.1&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: right&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.1.2/pgbouncer-1.1.2.tgz&#34;&gt;pgbouncer-1.1.2.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;2007-12-10&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;122054 bytes&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.1.2/pgbouncer-1.1.2.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.1.1/pgbouncer-1.1.1.tgz&#34;&gt;pgbouncer-1.1.1.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;2007-10-26&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;121042 bytes&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.1.1/pgbouncer-1.1.1.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.1/pgbouncer-1.1.tgz&#34;&gt;pgbouncer-1.1.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;2007-10-09&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: right&#34;&gt;120462 bytes&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.1/pgbouncer-1.1.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-10&#34;&gt;PgBouncer 1.0&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;File&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Date&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;Size&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34; style=&#34;text-align: center&#34;&gt;SHA256&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.8/pgbouncer-1.0.8.tgz&#34;&gt;pgbouncer-1.0.8.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-06-18&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;93636 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.8/pgbouncer-1.0.8.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.7/pgbouncer-1.0.7.tgz&#34;&gt;pgbouncer-1.0.7.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-04-19&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;93086 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.7/pgbouncer-1.0.7.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.6/pgbouncer-1.0.6.tgz&#34;&gt;pgbouncer-1.0.6.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-04-12&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;92244 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.6/pgbouncer-1.0.6.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.5/pgbouncer-1.0.5.tgz&#34;&gt;pgbouncer-1.0.5.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-04-11&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;91934 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.5/pgbouncer-1.0.5.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.4/pgbouncer-1.0.4.tgz&#34;&gt;pgbouncer-1.0.4.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-04-11&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;91889 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.4/pgbouncer-1.0.4.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.3/pgbouncer-1.0.3.tgz&#34;&gt;pgbouncer-1.0.3.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-04-11&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;91489 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.3/pgbouncer-1.0.3.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.2/pgbouncer-1.0.2.tgz&#34;&gt;pgbouncer-1.0.2.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-03-28&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;90555 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.2/pgbouncer-1.0.2.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.1/pgbouncer-1.0.1.tgz&#34;&gt;pgbouncer-1.0.1.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-03-15&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;89609 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0.1/pgbouncer-1.0.1.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0/pgbouncer-1.0.tgz&#34;&gt;pgbouncer-1.0.tgz&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;2007-03-13&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;88587 bytes&lt;/td&gt;&#xA;      &lt;td style=&#34;text-align: center&#34;&gt;&lt;a href=&#34;https://www.pgbouncer.org/downloads/files/1.0/pgbouncer-1.0.tgz.sha256&#34;&gt;sha256&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;binary-packages&#34;&gt;Binary Packages&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Various OS distributions have their native package/port of PgBouncer. So it might be good to first check if it is already available on your OS.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Parallel Processing</title>
        <link>https://pgsql.cc/pgbadger/parallel-processing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/parallel-processing/</guid>
        <description>&lt;p&gt;pgBadger has two complementary multiprocessing modes. Choose according to the shape of the input, not simply the number of CPUs.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Option&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Parallel unit&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Best fit&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Main constraint&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;-j N&lt;/code&gt; / &lt;code&gt;--jobs N&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;chunks of one log file&lt;/td&gt;&#xA;      &lt;td&gt;one large, seekable log&lt;/td&gt;&#xA;      &lt;td&gt;chunk boundaries can duplicate or omit a small number of queries&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;-J N&lt;/code&gt; / &lt;code&gt;--Jobs N&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;whole log files&lt;/td&gt;&#xA;      &lt;td&gt;many independent logs&lt;/td&gt;&#xA;      &lt;td&gt;useful only when enough files are available to keep workers busy&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;single-file-jobs&#34;&gt;Split one large file with &lt;code&gt;-j&lt;/code&gt;&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c9abdcc6-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;console&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c9abdcc6-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; pgbadger -j &lt;span class=&#34;m&#34;&gt;8&lt;/span&gt; /var/log/postgresql/postgresql.log&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;The upstream algorithm divides each file into &lt;code&gt;N&lt;/code&gt; byte ranges, forks one parser per range, writes temporary binary statistics, then merges those statistics into the final report.&lt;/p&gt;</description>
      </item>
    <item>
        <title>patronictl</title>
        <link>https://pgsql.cc/patroni/patronictl/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/patronictl/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;patronictl_version_description&#34;&gt;&lt;/a&gt;&#xA;&lt;a id=&#34;patronictl_version_parameters&#34;&gt;&lt;/a&gt;&#xA;&lt;a id=&#34;patronictl_version_examples&#34;&gt;&lt;/a&gt;&#xA;&lt;a id=&#34;patronictl&#34;&gt;&lt;/a&gt;&#xA;Patroni has a command-line interface named &lt;a href=&#34;https://pgsql.cc/patroni/patronictl/#patronictl&#34;&gt;patronictl&lt;/a&gt;, which is used basically to interact with Patroni&amp;rsquo;s REST API and with the DCS. It is intended to make it easier to perform operations in the cluster, and can easily be used by humans or scripts.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;patronictl_configuration&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;configuration&#34;&gt;Configuration&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsql.cc/patroni/patronictl/#patronictl&#34;&gt;patronictl&lt;/a&gt; uses 3 sections of the configuration:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;ctl&lt;/strong&gt;: how to authenticate against the Patroni REST API, and how to validate the server identity. Refer to &lt;a href=&#34;https://pgsql.cc/patroni/config/yaml/#patronictl_settings&#34;&gt;ctl settings&lt;/a&gt; for more details;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;restapi&lt;/strong&gt;: how to authenticate against the Patroni REST API, and how to validate the server identity. Only used if &lt;code&gt;ctl&lt;/code&gt; configuration is not enough. &lt;a href=&#34;https://pgsql.cc/patroni/patronictl/#patronictl&#34;&gt;patronictl&lt;/a&gt; is mainly interested in &lt;code&gt;restapi.authentication&lt;/code&gt; section (in case &lt;code&gt;ctl.authentication&lt;/code&gt; is missing) and &lt;code&gt;restapi.cafile&lt;/code&gt; setting (in case &lt;code&gt;ctl.cacert&lt;/code&gt; is missing). Refer to &lt;a href=&#34;https://pgsql.cc/patroni/config/yaml/#restapi_settings&#34;&gt;REST API settings&lt;/a&gt; for more details;&lt;/li&gt;&#xA;&lt;li&gt;DCS (e.g. &lt;strong&gt;etcd&lt;/strong&gt;): how to contact and authenticate against the DCS used by Patroni.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Those configuration options can come either from environment variables or from a configuration file. Look for the above sections in &lt;a href=&#34;https://pgsql.cc/patroni/config/env/#env&#34;&gt;Environment Configuration Settings&lt;/a&gt; or &lt;a href=&#34;https://pgsql.cc/patroni/config/yaml/#yaml&#34;&gt;YAML Configuration Settings&lt;/a&gt; to understand how you can set the options for them through environment variables or through a configuration file.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Standard Features</title>
        <link>https://pgsql.cc/haproxy/standard-features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/standard-features/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;In this section, some features that are very commonly used in HAProxy but are not necessarily&#xA;present on other load balancers are enumerated.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-3-4-1&#34;&gt;3.4.1. Standard features : Sampling and converting information&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;HAProxy supports information sampling using a wide set of &amp;ldquo;sample fetch functions&amp;rdquo;. The principle is&#xA;to extract pieces of information known as samples, for immediate use. This is used for stickiness,&#xA;to build conditions, to produce information in logs or to enrich HTTP headers.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Advanced Features</title>
        <link>https://pgsql.cc/haproxy/advanced-features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/advanced-features/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;h2 id=&#34;section-3-5-1&#34;&gt;3.5.1. Advanced features : Management&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;HAProxy is designed to remain extremely stable and safe to manage in a regular production&#xA;environment. It is provided as a single executable file which doesn&amp;rsquo;t require any installation&#xA;process. Multiple versions can easily coexist, meaning that it&amp;rsquo;s possible (and recommended) to&#xA;upgrade instances progressively by order of importance instead of migrating all of them at once.&#xA;Configuration files are easily versioned. Configuration checking is done off-line so it doesn&amp;rsquo;t&#xA;require to restart a service that will possibly fail. During configuration checks, a number of&#xA;advanced mistakes may be detected (e.g. a rule hiding another one, or stickiness that will not work)&#xA;and detailed warnings and configuration hints are proposed to fix them. Backwards configuration file&#xA;compatibility goes very far away in time, with version 1.5 still fully supporting configurations for&#xA;versions 1.1 written 13 years before, and 1.6 only dropping support for almost unused, obsolete&#xA;keywords that can be done differently. The configuration and software upgrade mechanism is smooth&#xA;and non disruptive in that it allows old and new processes to coexist on the system, each handling&#xA;its own connections. System status, build options, and library compatibility are reported on&#xA;startup.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Expire Command (expire)</title>
        <link>https://pgsql.cc/pgbackrest/command/expire/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/expire/</guid>
        <description>&lt;p&gt;pgBackRest does full backup rotation based on the retention type which can be a count or a time period. When a count is specified, then expiration is not concerned with when the backups were created but with how many must be retained. Differential backups are count-based but will always be expired when the full backup they depend on is expired. Incremental backups are not expired by retention independently — they are always expired with their related full or differential backup. See sections &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#full-backup-retention&#34;&gt;Full Backup Retention&lt;/a&gt; and &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#differential-backup-retention&#34;&gt;Differential Backup Retention&lt;/a&gt; for details and examples.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Incremental Reports</title>
        <link>https://pgsql.cc/pgbadger/incremental-reports/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/incremental-reports/</guid>
        <description>&lt;p&gt;Incremental mode stores parsed statistics in binary form, then builds one HTML report per day, a cumulative report per week, and a calendar-style index linking them together. It is intended for repeated processing of rotated logs without counting the same entries again.&lt;/p&gt;&#xA;&lt;h2 id=&#34;daily-and-weekly&#34;&gt;Build daily and weekly reports&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Run pgBadger after the daily log rotation and provide a persistent output directory:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--titled&#34; id=&#34;td-code-f84f3c93-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;cron&#34; data-td-line-count=&#34;1&#34; role=&#34;group&#34; aria-labelledby=&#34;td-code-f84f3c93-fence-0-title&#34;&gt;&#xA;  &lt;div class=&#34;td-code__header&#34;&gt;&#xA;    &lt;span class=&#34;td-code__filename&#34; id=&#34;td-code-f84f3c93-fence-0-title&#34; title=&#34;crontab&#34;&gt;crontab&lt;/span&gt;&#xA;  &lt;/div&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f84f3c93-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code class=&#34;language-cron&#34; data-lang=&#34;cron&#34;&gt;0 4 * * * /usr/bin/pgbadger -I -q /var/log/postgresql/postgresql.log.1 -O /var/www/pg_reports/&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;&lt;code&gt;-I&lt;/code&gt; enables incremental mode and &lt;code&gt;-O&lt;/code&gt; selects the directory that holds the binary state, calendar index, and generated reports. pgBadger maintains its own incremental state in that directory, so &lt;code&gt;--last-parsed&lt;/code&gt; is unnecessary unless you deliberately want the state file elsewhere.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Release Notes</title>
        <link>https://pgsql.cc/pgbackrest/release/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/release/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;pgBackRest release numbers consist of two parts, major and minor. A major release &lt;em&gt;may&lt;/em&gt; break compatibility with the prior major release, but v2 releases are fully compatible with v1 repositories and will accept all v1 options. Minor releases can include bug fixes and features but do not change the repository format and strive to avoid changing options and naming. Documentation for the v1 release can be found &lt;a href=&#34;https://pgbackrest.org/1&#34;&gt;here&lt;/a&gt;. The notes for a release may also contain &amp;ldquo;Additional Notes&amp;rdquo; but changes in this section are only to documentation or the test suite and have no direct impact on the pgBackRest codebase.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Replica imaging and bootstrap</title>
        <link>https://pgsql.cc/patroni/replica_bootstrap/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/replica_bootstrap/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;replica_imaging_and_bootstrap&#34;&gt;&lt;/a&gt;&#xA;Patroni allows customizing creation of a new replica. It also supports defining what happens when the new empty cluster is being bootstrapped. The distinction between two is well defined: Patroni creates replicas only if the &lt;code&gt;initialize&lt;/code&gt; key is present in DCS for the cluster. If there is no &lt;code&gt;initialize&lt;/code&gt; key - Patroni calls bootstrap exclusively on the first node that takes the initialize key lock.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;custom_bootstrap&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;bootstrap&#34;&gt;Bootstrap&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PostgreSQL provides &lt;code&gt;initdb&lt;/code&gt; command to initialize a new cluster and Patroni calls it by default. In certain cases, particularly when creating a new cluster as a copy of an existing one, it is necessary to replace a built-in method with custom actions. Patroni supports executing user-defined scripts to bootstrap new clusters, supplying some required arguments to them, i.e. the name of the cluster and the path to the data directory. This is configured in the &lt;code&gt;bootstrap&lt;/code&gt; section of the Patroni configuration. For example:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Changelog</title>
        <link>https://pgsql.cc/pgbouncer/changelog/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/changelog/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;pgbouncer-125x&#34;&gt;PgBouncer 1.25.x&#xA;&lt;/h2&gt;&#xA;&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;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Security&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Fix CVE-2026-6664: An integer overflow in network packet parsing code in PgBouncer before 1.25.2 bypasses a boundary check and can lead to a crash. An unauthenticated remote attacker can crash PgBouncer with a malformed SCRAM authentication packet.&lt;/li&gt;&#xA;&lt;li&gt;Fix CVE-2026-6665: The SCRAM code in PgBouncer before 1.25.2 did not check the return value of &lt;code&gt;strlcat()&lt;/code&gt; correctly when building the contents of the SCRAM client-final-message. A malicious backend that sends a SCRAM server-final-message with a long nonce can trigger a stack overflow.&lt;/li&gt;&#xA;&lt;li&gt;Fix CVE-2026-6666: A possible null pointer reference in PgBouncer before 1.25.2 could lead to a crash if a server sends an error response without an SQLSTATE field.&lt;/li&gt;&#xA;&lt;li&gt;Fix CVE-2026-6667: PgBouncer before 1.25.2 did not perform an appropriate authorization check for the &lt;code&gt;KILL_CLIENT&lt;/code&gt; admin command. All users with access to the administration console, which itself requires authorization, could run this command. It should only be allowed for users listed in the &lt;code&gt;admin_users&lt;/code&gt; parameter.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Fixes&lt;/p&gt;</description>
      </item>
    <item>
        <title>Frequently Asked Questions</title>
        <link>https://pgsql.cc/pgbackrest/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/faq/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Frequently Asked Questions are intended to provide details for specific questions that may or may not be covered in the User Guide, Configuration, or Command reference. If you are unable to find details for your specific issue here, remember that the pgBackRest &lt;a href=&#34;https://github.com/pgbackrest/pgbackrest/issues&#34;&gt;Issues List in GitHub&lt;/a&gt; is also a valuable resource.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;what-if-i-get-the-could-not-find-wal-segment-error&#34;&gt;What if I get the &amp;ldquo;could not find WAL segment&amp;rdquo; error?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The cause of this error can be a result of many different issues, some of which may be:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Help Command (help)</title>
        <link>https://pgsql.cc/pgbackrest/command/help/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/help/</guid>
        <description>&lt;p&gt;Three levels of help are provided. If no command is specified then general help will be displayed. If a command is specified (e.g. &lt;code&gt;pgbackrest help backup&lt;/code&gt;) then a full description of the command will be displayed along with a list of valid options. If an option is specified in addition to a command (e.g. &lt;code&gt;pgbackrest help backup type&lt;/code&gt;) then a full description of the option as it applies to the command will be displayed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Output Formats</title>
        <link>https://pgsql.cc/pgbadger/output-formats/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/output-formats/</guid>
        <description>&lt;p&gt;pgBadger selects output from the filename extension or from &lt;code&gt;-x&lt;/code&gt; / &lt;code&gt;--extension&lt;/code&gt;. Use &lt;code&gt;-o&lt;/code&gt; / &lt;code&gt;--outfile&lt;/code&gt; more than once to create multiple formats from the same parse.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Format&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Typical extension&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Best use&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;HTML&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;.html&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;interactive, human-readable report with charts&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Text&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;.txt&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;terminal review and plain archival output&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Binary&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;.bin&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;mergeable intermediate statistics and report rebuilds&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;JSON&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;.json&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;integration with other software; requires &lt;code&gt;JSON::XS&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Raw CSV&lt;/td&gt;&#xA;      &lt;td&gt;chosen output file&lt;/td&gt;&#xA;      &lt;td&gt;row-oriented extraction with &lt;code&gt;--dump-raw-csv&lt;/code&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;html-and-text&#34;&gt;HTML and text&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The default output is &lt;code&gt;out.html&lt;/code&gt;:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Replication modes</title>
        <link>https://pgsql.cc/patroni/replication_modes/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/replication_modes/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;replication_modes&#34;&gt;&lt;/a&gt;&#xA;Patroni uses PostgreSQL streaming replication. For more information about streaming replication, see the &lt;a href=&#34;http://www.postgresql.org/docs/current/static/warm-standby.html#STREAMING-REPLICATION&#34;&gt;Postgres documentation&lt;/a&gt;. By default Patroni configures PostgreSQL for asynchronous replication. Choosing your replication schema is dependent on your business considerations. Investigate both async and sync replication, as well as other HA solutions, to determine which solution is best for you.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;asynchronous-mode-durability&#34;&gt;Asynchronous mode durability&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In asynchronous mode the cluster is allowed to lose some committed transactions to ensure availability. When the primary server fails or becomes unavailable for any other reason Patroni will automatically promote a sufficiently healthy standby to primary. Any transactions that have not been replicated to that standby remain in a &amp;ldquo;forked timeline&amp;rdquo; on the primary, and are effectively unrecoverable&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Sizing and Performance</title>
        <link>https://pgsql.cc/haproxy/sizing/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/sizing/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Typical CPU usage figures show 15% of the processing time spent in HAProxy versus 85% in the kernel&#xA;in TCP or HTTP close mode, and about 30% for HAProxy versus 70% for the kernel in HTTP keep-alive&#xA;mode. This means that the operating system and its tuning have a strong impact on the global&#xA;performance.&lt;/p&gt;&#xA;&lt;p&gt;Usages vary a lot between users, some focus on bandwidth, other ones on request rate, others on&#xA;connection concurrency, others on SSL performance. This section aims at providing a few elements to&#xA;help with this task.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Community</title>
        <link>https://pgsql.cc/pgbouncer/community/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/community/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;tutorials&#34;&gt;Tutorials&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://get.enterprisedb.com/docs/Tutorial_All_PPSS_pgBouncer.pdf&#34;&gt;How to Set Up PgBouncer for Postgres Plus Standard Server&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Good overview of PgBouncer concepts.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://www.depesz.com/2012/12/02/what-is-the-point-of-bouncing/&#34;&gt;What is the point of bouncing?&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Discusses differences between pooling modes.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;support&#34;&gt;Support&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/pgbouncer/pgbouncer&#34;&gt;Project page&lt;/a&gt; at GitHub&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/pgbouncer/pgbouncer/issues&#34;&gt;Issue tracker&lt;/a&gt; at GitHub&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://stackoverflow.com/questions/tagged/pgbouncer&#34;&gt;PgBouncer section&lt;/a&gt; at Stack Overflow&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/pgbouncer/pgbouncer/discussions&#34;&gt;Community discussions&lt;/a&gt; at GitHub&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Info Command (info)</title>
        <link>https://pgsql.cc/pgbackrest/command/info/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/info/</guid>
        <description>&lt;p&gt;The &lt;code&gt;info&lt;/code&gt; command operates on a single stanza or all stanzas. Text output is the default and gives a human-readable summary of backups for the stanza(s) requested. This format is subject to change with any release.&lt;/p&gt;&#xA;&lt;p&gt;For machine-readable output use &lt;code&gt;--output=json&lt;/code&gt;. The JSON output contains far more information than the text output and is kept stable unless a bug is found.&lt;/p&gt;&#xA;&lt;p&gt;To speed up execution, limit the output to only progress information by specifying &lt;code&gt;--detail-level=progress&lt;/code&gt;. Note that this skips all checks except for availability of the stanza.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Project Metrics</title>
        <link>https://pgsql.cc/pgbackrest/metric/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/metric/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;code-coverage&#34;&gt;Code Coverage&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;pgBackRest aims to have complete function/branch/line coverage for the core C code in &lt;code&gt;/src&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Function/line coverage is complete with no exceptions.&lt;/p&gt;&#xA;&lt;p&gt;Branch coverage excludes branches inside macros and &lt;code&gt;assert()&lt;/code&gt; calls. Macros have their own unit tests so they do not need to be tested everywhere they appear. Asserts are not expected to have complete branch coverage since they test cases that should always be true.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Releases, Packages, and Upgrades</title>
        <link>https://pgsql.cc/haproxy/releases-and-upgrades/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/releases-and-upgrades/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is an open source project covered by the GPLv2 license, meaning that everyone is allowed to&#xA;redistribute it provided that access to the sources is also provided upon request, especially if any&#xA;modifications were made.&lt;/p&gt;&#xA;&lt;p&gt;HAProxy evolves as a main development branch called &amp;ldquo;master&amp;rdquo; or &amp;ldquo;mainline&amp;rdquo;, from which new branches&#xA;are derived once the code is considered stable. A lot of web sites run some development branches in&#xA;production on a voluntarily basis, either to participate to the project or because they need a&#xA;bleeding edge feature, and their feedback is highly valuable to fix bugs and judge the overall&#xA;quality and stability of the version being developed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Sample Reports</title>
        <link>https://pgsql.cc/pgbadger/sample-reports/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/sample-reports/</guid>
        <description>&lt;p&gt;The example content was generated by pgBadger 11.8 in May 2022. The original examples are stored with this site, so report navigation, charts, styles, and scripts remain available without reaching the upstream server.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Example&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;What it demonstrates&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Local copy&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Complete report&lt;/td&gt;&#xA;      &lt;td&gt;PostgreSQL activity together with PgBouncer statistics&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsql.cc/third_party/pgbadger/examples/sample.html&#34;&gt;Open the complete report&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Incremental report&lt;/td&gt;&#xA;      &lt;td&gt;Calendar index, weekly aggregation, and daily pages&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsql.cc/third_party/pgbadger/examples/report/index.html&#34;&gt;Open the incremental index&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Errors and events&lt;/td&gt;&#xA;      &lt;td&gt;A report restricted to errors and operational events&lt;/td&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://pgsql.cc/third_party/pgbadger/examples/errors.html&#34;&gt;Open the error report&lt;/a&gt;&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;complete-report&#34;&gt;Complete report&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The complete report is a self-contained HTML document. Use its top navigation to inspect global statistics, queries, sessions, connections, temporary files, checkpoints, autovacuum activity, locks, and PgBouncer-specific charts.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Standby cluster</title>
        <link>https://pgsql.cc/patroni/standby_cluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/standby_cluster/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;standby_cluster&#34;&gt;&lt;/a&gt;&#xA;Patroni also support running cascading replication to a remote datacenter (region) using a feature that is called &amp;ldquo;standby cluster&amp;rdquo;. This type of clusters has:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&amp;ldquo;standby leader&amp;rdquo;, that behaves pretty much like a regular cluster leader, except it replicates from a remote node.&lt;/li&gt;&#xA;&lt;li&gt;cascade replicas, that are replicating from standby leader.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Standby leader holds and updates a leader lock in DCS. If the leader lock expires, cascade replicas will perform an election to choose another leader from the standbys.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Companion Products and Alternatives</title>
        <link>https://pgsql.cc/haproxy/ecosystem/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/ecosystem/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy integrates fairly well with certain products listed below, which is why they are mentioned&#xA;here even if not directly related to HAProxy.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-4-1&#34;&gt;4.1. Apache HTTP server&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Apache is the de-facto standard HTTP server. It&amp;rsquo;s a very complete and modular project supporting&#xA;both file serving and dynamic contents. It can serve as a frontend for some application servers. It&#xA;can even proxy requests and cache responses. In all of these use cases, a front load balancer is&#xA;commonly needed. Apache can work in various modes, some being heavier than others. Certain modules&#xA;still require the heavier pre-forked model and will prevent Apache from scaling well with a high&#xA;number of connections. In this case HAProxy can provide a tremendous help by enforcing the&#xA;per-server connection limits to a safe value and will significantly speed up the server and preserve&#xA;its resources that will be better used by the application.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Frequently Asked Questions</title>
        <link>https://pgsql.cc/pgbouncer/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbouncer/faq/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;how-to-connect-to-pgbouncer&#34;&gt;How to connect to PgBouncer?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PgBouncer acts as a Postgres server, so simply point your client to the&#xA;PgBouncer port.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;how-to-load-balance-queries-between-several-servers&#34;&gt;How to load-balance queries between several servers?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PgBouncer does not have an internal multi-host configuration.&#xA;It is possible via external tools:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;DNS round-robin. Use several IPs behind one DNS name. PgBouncer does&#xA;not look up DNS each time a new connection is launched. Instead, it&#xA;caches all IPs and does round-robin internally. Note: if there are&#xA;more than 8 IPs behind one name, the DNS backend must support the EDNS0&#xA;protocol. See README for details.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Repository Get Command (repo-get)</title>
        <link>https://pgsql.cc/pgbackrest/command/repo-get/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/repo-get/</guid>
        <description>&lt;p&gt;Similar to the unix &lt;code&gt;cat&lt;/code&gt; command but works on any supported repository type. This command requires a fully qualified file name and is primarily for administration, investigation, and testing. It is not a required part of a normal pgBackRest setup.&lt;/p&gt;&#xA;&lt;p&gt;If the repository is encrypted then &lt;code&gt;repo-get&lt;/code&gt; will automatically decrypt the file. Files are not automatically decompressed but the output can be piped through the appropriate decompression command, e.g. &lt;code&gt;gzip -d&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Watchdog support</title>
        <link>https://pgsql.cc/patroni/watchdog/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/watchdog/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;watchdog&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Having multiple PostgreSQL servers running as primary can result in transactions lost due to diverging timelines. This situation is also called a split-brain problem. To avoid split-brain Patroni needs to ensure PostgreSQL will not accept any transaction commits after leader key expires in the DCS. Under normal circumstances Patroni will try to achieve this by stopping PostgreSQL when leader lock update fails for any reason. However, this may fail to happen due to various reasons:&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to Set Up a Demo etcd Cluster</title>
        <link>https://pgsql.cc/etcd/tasks/operator/how-to-setup-cluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/operator/how-to-setup-cluster/</guid>
        <description>&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/tasks/img/setup-cluster.gif&#34; alt=&#34;01_etcd_clustering_2016050601&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;On each etcd node, specify the cluster members:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4ba105cb-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;9&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4ba105cb-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;token-01&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NAME_1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;machine-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NAME_2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;machine-2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NAME_3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;machine-3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HOST_1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10.240.0.17&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HOST_2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10.240.0.18&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HOST_3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10.240.0.19&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380,&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380,&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Run this on each machine:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4ba105cb-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;26&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4ba105cb-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For machine 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcd --data-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;data.etcd --name &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-advertise-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 --listen-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--advertise-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 --listen-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-state &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --initial-cluster-token &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For machine 2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcd --data-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;data.etcd --name &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-advertise-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 --listen-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--advertise-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 --listen-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-state &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --initial-cluster-token &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For machine 3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcd --data-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;data.etcd --name &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-advertise-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 --listen-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--advertise-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 --listen-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-state &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --initial-cluster-token &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Or use our public discovery service:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Pause/Resume mode for the cluster</title>
        <link>https://pgsql.cc/patroni/pause/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/pause/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;pause&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;the-goal&#34;&gt;The goal&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Under certain circumstances Patroni needs to temporarily step down from managing the cluster, while still retaining the cluster state in DCS. Possible use cases are uncommon activities on the cluster, such as major version upgrades or corruption recovery. During those activities nodes are often started and stopped for reasons unknown to Patroni, some nodes can be even temporarily promoted, violating the assumption of running only one primary. Therefore, Patroni needs to be able to &amp;ldquo;detach&amp;rdquo; from the running cluster, implementing an equivalent of the maintenance mode in Pacemaker.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Repository List Command (repo-ls)</title>
        <link>https://pgsql.cc/pgbackrest/command/repo-ls/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/repo-ls/</guid>
        <description>&lt;p&gt;Similar to the unix &lt;code&gt;ls&lt;/code&gt; command but works on any supported repository type. This command accepts a path, absolute or relative to the repository path defined by the &lt;code&gt;--repo-path&lt;/code&gt; option, and is primarily for administration, investigation, and testing. It is not a required part of a normal pgBackRest setup.&lt;/p&gt;&#xA;&lt;p&gt;The default text output prints one file name per line. JSON output is available by specifying &lt;code&gt;--output=json&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;If more than one repository is configured, the command will default to the highest priority repository (e.g. &lt;code&gt;repo1&lt;/code&gt;) unless the &lt;code&gt;--repo&lt;/code&gt; option is specified.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Documentation and Community</title>
        <link>https://pgsql.cc/haproxy/resources/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/resources/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;h2 id=&#34;section-1&#34;&gt;1. Available documentation&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The complete HAProxy documentation is contained in the following documents. Please ensure to consult&#xA;the relevant documentation to save time and to get the most accurate response to your needs. Also&#xA;please refrain from sending questions to the mailing list whose responses are present in these&#xA;documents.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://pgsql.cc/haproxy/load-balancing/&#34;&gt;&lt;code&gt;intro.txt&lt;/code&gt;&lt;/a&gt; (this document): it presents the basics of load balancing, HAProxy as a product, what it&#xA;does, what it doesn&amp;rsquo;t do, some known traps to avoid, some OS-specific limitations, how to get it,&#xA;how it evolves, how to ensure you&amp;rsquo;re running with all known fixes, how to update it, complements&#xA;and alternatives.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Support and Contributing</title>
        <link>https://pgsql.cc/pgbadger/support/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/support/</guid>
        <description>&lt;p&gt;pgBadger is maintained as an open project. Bug reports, feature proposals, documentation fixes, and patches are handled through the upstream GitHub repository.&lt;/p&gt;&#xA;&lt;h2 id=&#34;bugs-and-features&#34;&gt;Bugs and feature requests&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Upgrade to the newest released version and confirm the behavior still occurs.&lt;/li&gt;&#xA;&lt;li&gt;Search &lt;a href=&#34;https://github.com/darold/pgbadger/issues&#34;&gt;open issues&lt;/a&gt; and &lt;a href=&#34;https://github.com/darold/pgbadger/issues?q=is%3Aissue&amp;#43;is%3Aclosed&#34;&gt;closed issues&lt;/a&gt; for an existing answer.&lt;/li&gt;&#xA;&lt;li&gt;Reduce the problem to the smallest safe log sample and command line that still reproduces it.&lt;/li&gt;&#xA;&lt;li&gt;Remove credentials, sensitive SQL, bind values, host names, addresses, and business data.&lt;/li&gt;&#xA;&lt;li&gt;Open a &lt;a href=&#34;https://github.com/darold/pgbadger/issues/new&#34;&gt;new issue&lt;/a&gt; with the pgBadger version, operating system, input format, exact options, observed result, and expected result.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;For crashes or parser mistakes, include only the minimum sanitized log lines needed to reproduce the boundary. A complete production log or generated report is rarely appropriate for a public issue.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration Manual</title>
        <link></link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid></guid>
        <description></description>
      </item>
    <item>
        <title>DCS Failsafe Mode</title>
        <link>https://pgsql.cc/patroni/dcs_failsafe_mode/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/dcs_failsafe_mode/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;dcs_failsafe_mode&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;the-problem&#34;&gt;The problem&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Patroni is heavily relying on Distributed Configuration Store (DCS) to solve the task of leader elections and detect network partitioning. That is, the node is allowed to run Postgres as the primary only if it can update the leader lock in DCS. In case the update of the leader lock fails, Postgres is immediately demoted and started as read-only. Depending on which DCS is used, the chances of hitting the &amp;ldquo;problem&amp;rdquo; differ. For example, with Etcd which is only used for Patroni, chances are close to zero, while with K8s API (backed by Etcd) it could be observed more frequently.&lt;/p&gt;</description>
      </item>
    <item>
        <title>License and Credits</title>
        <link>https://pgsql.cc/pgbadger/license/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbadger/license/</guid>
        <description>&lt;p&gt;pgBadger is free and open-source software distributed under the PostgreSQL License. It may be used, copied, modified, and distributed without a fee, subject to retaining the copyright and license notices.&lt;/p&gt;&#xA;&lt;h2 id=&#34;postgresql-license&#34;&gt;PostgreSQL License&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Copyright (c) 2012-2026, Gilles Darold&lt;/p&gt;&#xA;&lt;p&gt;Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Restore Command (restore)</title>
        <link>https://pgsql.cc/pgbackrest/command/restore/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/restore/</guid>
        <description>&lt;p&gt;The restore command automatically defaults to selecting the latest backup from the first repository where backups exist (see &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#restore-a-backup&#34;&gt;Quick Start - Restore a Backup&lt;/a&gt;). The order in which the repositories are checked is dictated by the &lt;code&gt;pgbackrest.conf&lt;/code&gt; (e.g. repo1 will be checked before repo2). To select from a specific repository, the &lt;code&gt;--repo&lt;/code&gt; option can be passed (e.g. &lt;code&gt;--repo=1&lt;/code&gt;). The &lt;code&gt;--set&lt;/code&gt; option can be passed if a backup other than the latest is desired.&lt;/p&gt;</description>
      </item>
    <item>
        <title>1. Quick Reminder About HTTP</title>
        <link>https://pgsql.cc/haproxy/http-fundamentals/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/http-fundamentals/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This document covers the configuration language as implemented in the version specified above. It&#xA;does not provide any hints, examples, or advice. For such documentation, please refer to the&#xA;Reference Manual or the Architecture Manual. The numbered chapters are ordered in the flat HAProxy sidebar for direct navigation.&lt;/p&gt;&#xA;&lt;p&gt;When HAProxy is running in HTTP mode, both the request and the response are fully analyzed and&#xA;indexed, thus it becomes possible to build matching criteria on almost anything found in the&#xA;contents.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Server Command (server)</title>
        <link>https://pgsql.cc/pgbackrest/command/server/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/server/</guid>
        <description>&lt;p&gt;The pgBackRest server allows access to remote hosts without using the SSH protocol.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;tls-server-address-option---tls-server-address&#34;&gt;TLS Server Address Option (&lt;code&gt;--tls-server-address&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;TLS server address.&lt;/p&gt;&#xA;&lt;p&gt;IP address the server will listen on for client requests.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d2bfbb1a-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d2bfbb1a-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;localhost&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;example&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;--&lt;span class=&#34;l&#34;&gt;tls-server-address=*&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;tls-server-authorized-clients-option---tls-server-auth&#34;&gt;TLS Server Authorized Clients Option (&lt;code&gt;--tls-server-auth&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;TLS server authorized clients.&lt;/p&gt;&#xA;&lt;p&gt;Clients are authorized on the server by verifying their certificate and checking their certificate CN (Common Name) against a list on the server configured with the &lt;code&gt;tls-server-auth&lt;/code&gt; option.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Using Patroni with Kubernetes</title>
        <link>https://pgsql.cc/patroni/kubernetes/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/kubernetes/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;kubernetes&#34;&gt;&lt;/a&gt;&#xA;Patroni can use Kubernetes objects in order to store the state of the cluster and manage the leader key. That makes it capable of operating Postgres in Kubernetes environment without any consistency store, namely, one doesn&amp;rsquo;t need to run an extra Etcd deployment. There are two different type of Kubernetes objects Patroni can use to store the leader and the configuration keys, they are configured with the &lt;code&gt;kubernetes.use_endpoints&lt;/code&gt; or &lt;code&gt;PATRONI_KUBERNETES_USE_ENDPOINTS&lt;/code&gt; environment variable.&lt;/p&gt;</description>
      </item>
    <item>
        <title>2. Configuring HAProxy</title>
        <link>https://pgsql.cc/haproxy/configuration-basics/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/configuration-basics/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;h2 id=&#34;section-2-1&#34;&gt;2.1. Configuration file format&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;HAProxy&amp;rsquo;s configuration process involves 3 major sources of parameters:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;the arguments from the command-line, which always take precedence&lt;/li&gt;&#xA;&lt;li&gt;the configuration file(s), whose format is described here&lt;/li&gt;&#xA;&lt;li&gt;the running process&amp;rsquo;s environment, in case some environment variables are explicitly referenced&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The configuration file follows a fairly simple hierarchical format which obey a few basic rules:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Citus support</title>
        <link>https://pgsql.cc/patroni/citus/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/citus/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;citus&#34;&gt;&lt;/a&gt;&#xA;Patroni makes it extremely simple to deploy &lt;a href=&#34;https://docs.citusdata.com/en/stable/installation/multi_node.html&#34;&gt;Multi-Node Citus&lt;/a&gt; clusters.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;tldr&#34;&gt;TL;DR&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;There are only a few simple rules you need to follow:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/citusdata/citus&#34;&gt;Citus&lt;/a&gt; database extension to PostgreSQL must be available on all nodes. Absolute minimum supported Citus version is 10.0, but, to take all benefits from transparent switchovers and restarts of workers we recommend using at least Citus 11.2.&lt;/li&gt;&#xA;&lt;li&gt;Cluster name (&lt;code&gt;scope&lt;/code&gt;) must be the same for all Citus nodes!&lt;/li&gt;&#xA;&lt;li&gt;Superuser credentials must be the same on coordinator and all worker nodes, and &lt;code&gt;pg_hba.conf&lt;/code&gt; should allow superuser access between all nodes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/patroni/config/yaml/#restapi_settings&#34;&gt;REST API&lt;/a&gt; access should be allowed from worker nodes to the coordinator. E.g., credentials should be the same and if configured, client certificates from worker nodes must be accepted by the coordinator.&lt;/li&gt;&#xA;&lt;li&gt;Add the following section to the &lt;code&gt;patroni.yaml&lt;/code&gt;:&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fd2d1ba3-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fd2d1ba3-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;citus&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;group&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;X &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# 0 for coordinator and 1, 2, 3, etc for workers&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;  &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;database&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;citus &lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;c&#34;&gt;# must be the same on all nodes&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;After that you just need to start Patroni and it will handle the rest:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Server Ping Command (server-ping)</title>
        <link>https://pgsql.cc/pgbackrest/command/server-ping/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/server-ping/</guid>
        <description>&lt;p&gt;Ping a pgBackRest TLS server to ensure it is accepting connections. This serves as an aliveness check only since no authentication is attempted.&lt;/p&gt;&#xA;&lt;p&gt;If no host is specified on the command-line then the &lt;code&gt;tls-server-host&lt;/code&gt; option will be used.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;tls-server-address-option---tls-server-address&#34;&gt;TLS Server Address Option (&lt;code&gt;--tls-server-address&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;TLS server address.&lt;/p&gt;&#xA;&lt;p&gt;IP address the server will listen on for client requests.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-24683deb-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-24683deb-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;localhost&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;example&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;--&lt;span class=&#34;l&#34;&gt;tls-server-address=*&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;tls-server-port-option---tls-server-port&#34;&gt;TLS Server Port Option (&lt;code&gt;--tls-server-port&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;TLS server port.&lt;/p&gt;</description>
      </item>
    <item>
        <title>3. Global Section</title>
        <link>https://pgsql.cc/haproxy/global/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/global/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Parameters in the &amp;ldquo;global&amp;rdquo; section are process-wide and often OS-specific. They are generally set&#xA;once for all and do not need being changed once correct. Some of them have command-line equivalents.&lt;/p&gt;&#xA;&lt;p&gt;The following keywords are supported in the &amp;ldquo;global&amp;rdquo; section:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Process management and security&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;51degrees-allow-unmatched&lt;/li&gt;&#xA;&lt;li&gt;51degrees-cache-size&lt;/li&gt;&#xA;&lt;li&gt;51degrees-data-file&lt;/li&gt;&#xA;&lt;li&gt;51degrees-difference&lt;/li&gt;&#xA;&lt;li&gt;51degrees-drift&lt;/li&gt;&#xA;&lt;li&gt;51degrees-property-name-list&lt;/li&gt;&#xA;&lt;li&gt;51degrees-property-separator&lt;/li&gt;&#xA;&lt;li&gt;51degrees-use-performance-graph&lt;/li&gt;&#xA;&lt;li&gt;51degrees-use-predictive-graph&lt;/li&gt;&#xA;&lt;li&gt;ca-base&lt;/li&gt;&#xA;&lt;li&gt;chroot&lt;/li&gt;&#xA;&lt;li&gt;cluster-secret&lt;/li&gt;&#xA;&lt;li&gt;cpu-affinity&lt;/li&gt;&#xA;&lt;li&gt;cpu-map&lt;/li&gt;&#xA;&lt;li&gt;cpu-policy&lt;/li&gt;&#xA;&lt;li&gt;cpu-set&lt;/li&gt;&#xA;&lt;li&gt;crt-base&lt;/li&gt;&#xA;&lt;li&gt;daemon&lt;/li&gt;&#xA;&lt;li&gt;default-path&lt;/li&gt;&#xA;&lt;li&gt;description&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-json-file&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-log-level&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-properties-cookie&lt;/li&gt;&#xA;&lt;li&gt;deviceatlas-separator&lt;/li&gt;&#xA;&lt;li&gt;dns-accept-family&lt;/li&gt;&#xA;&lt;li&gt;expose-deprecated-directives&lt;/li&gt;&#xA;&lt;li&gt;expose-experimental-directives&lt;/li&gt;&#xA;&lt;li&gt;external-check&lt;/li&gt;&#xA;&lt;li&gt;fd-hard-limit&lt;/li&gt;&#xA;&lt;li&gt;gid&lt;/li&gt;&#xA;&lt;li&gt;grace&lt;/li&gt;&#xA;&lt;li&gt;group&lt;/li&gt;&#xA;&lt;li&gt;h1-accept-payload-with-any-method&lt;/li&gt;&#xA;&lt;li&gt;h1-case-adjust&lt;/li&gt;&#xA;&lt;li&gt;h1-case-adjust-file&lt;/li&gt;&#xA;&lt;li&gt;h1-do-not-close-on-insecure-transfer-encoding&lt;/li&gt;&#xA;&lt;li&gt;h2-workaround-bogus-websocket-clients&lt;/li&gt;&#xA;&lt;li&gt;hard-stop-after&lt;/li&gt;&#xA;&lt;li&gt;harden.reject-privileged-ports.tcp&lt;/li&gt;&#xA;&lt;li&gt;harden.reject-privileged-ports.quic&lt;/li&gt;&#xA;&lt;li&gt;insecure-fork-wanted&lt;/li&gt;&#xA;&lt;li&gt;insecure-setuid-wanted&lt;/li&gt;&#xA;&lt;li&gt;issuers-chain-path&lt;/li&gt;&#xA;&lt;li&gt;jwt.decrypt_alg_list&lt;/li&gt;&#xA;&lt;li&gt;jwt.decrypt_enc_list&lt;/li&gt;&#xA;&lt;li&gt;key-base&lt;/li&gt;&#xA;&lt;li&gt;limited-quic&lt;/li&gt;&#xA;&lt;li&gt;localpeer&lt;/li&gt;&#xA;&lt;li&gt;log&lt;/li&gt;&#xA;&lt;li&gt;log-send-hostname&lt;/li&gt;&#xA;&lt;li&gt;log-tag&lt;/li&gt;&#xA;&lt;li&gt;lua-load&lt;/li&gt;&#xA;&lt;li&gt;lua-load-per-thread&lt;/li&gt;&#xA;&lt;li&gt;lua-prepend-path&lt;/li&gt;&#xA;&lt;li&gt;max-threads-per-group&lt;/li&gt;&#xA;&lt;li&gt;mworker-max-reloads&lt;/li&gt;&#xA;&lt;li&gt;nbthread&lt;/li&gt;&#xA;&lt;li&gt;node&lt;/li&gt;&#xA;&lt;li&gt;numa-cpu-mapping&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.disable&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.maxdelay&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.mindelay&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.httpproxy&lt;/li&gt;&#xA;&lt;li&gt;ocsp-update.mode&lt;/li&gt;&#xA;&lt;li&gt;pidfile&lt;/li&gt;&#xA;&lt;li&gt;pp2-never-send-local&lt;/li&gt;&#xA;&lt;li&gt;presetenv&lt;/li&gt;&#xA;&lt;li&gt;prealloc-fd&lt;/li&gt;&#xA;&lt;li&gt;resetenv&lt;/li&gt;&#xA;&lt;li&gt;set-dumpable&lt;/li&gt;&#xA;&lt;li&gt;set-var&lt;/li&gt;&#xA;&lt;li&gt;setenv&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-ciphers&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-ciphersuites&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-client-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-curves&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-options&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-bind-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-ciphers&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-ciphersuites&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-client-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-curves&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-options&lt;/li&gt;&#xA;&lt;li&gt;ssl-default-server-sigalgs&lt;/li&gt;&#xA;&lt;li&gt;ssl-dh-param-file&lt;/li&gt;&#xA;&lt;li&gt;ssl-propquery&lt;/li&gt;&#xA;&lt;li&gt;ssl-provider&lt;/li&gt;&#xA;&lt;li&gt;ssl-provider-path&lt;/li&gt;&#xA;&lt;li&gt;ssl-security-level&lt;/li&gt;&#xA;&lt;li&gt;ssl-server-verify&lt;/li&gt;&#xA;&lt;li&gt;ssl-skip-self-issued-ca&lt;/li&gt;&#xA;&lt;li&gt;stats&lt;/li&gt;&#xA;&lt;li&gt;stats-file&lt;/li&gt;&#xA;&lt;li&gt;strict-limits&lt;/li&gt;&#xA;&lt;li&gt;uid&lt;/li&gt;&#xA;&lt;li&gt;ulimit-n&lt;/li&gt;&#xA;&lt;li&gt;unix-bind&lt;/li&gt;&#xA;&lt;li&gt;unsetenv&lt;/li&gt;&#xA;&lt;li&gt;user&lt;/li&gt;&#xA;&lt;li&gt;wurfl-cache-size&lt;/li&gt;&#xA;&lt;li&gt;wurfl-data-file&lt;/li&gt;&#xA;&lt;li&gt;wurfl-information-list&lt;/li&gt;&#xA;&lt;li&gt;wurfl-information-list-separator&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Performance tuning&lt;/p&gt;</description>
      </item>
    <item>
        <title>Convert a Standalone to a Patroni Cluster</title>
        <link>https://pgsql.cc/patroni/existing_data/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/existing_data/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;existing_data&#34;&gt;&lt;/a&gt;&#xA;This section describes the process for converting a standalone PostgreSQL instance into a Patroni cluster.&lt;/p&gt;&#xA;&lt;p&gt;To deploy a Patroni cluster without using a pre-existing PostgreSQL instance, see &lt;a href=&#34;https://pgsql.cc/patroni/readme/#running_configuring&#34;&gt;Running and Configuring&lt;/a&gt; instead.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;procedure&#34;&gt;Procedure&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;You can find below an overview of steps for converting an existing Postgres cluster to a Patroni managed cluster. In the steps we assume all nodes that are part of the existing cluster are currently up and running, and that you &lt;em&gt;do not&lt;/em&gt; intend to change Postgres configuration while the migration is ongoing. The steps:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Stanza Create Command (stanza-create)</title>
        <link>https://pgsql.cc/pgbackrest/command/stanza-create/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/stanza-create/</guid>
        <description>&lt;p&gt;The &lt;code&gt;stanza-create&lt;/code&gt; command must be run after the stanza has been configured in &lt;code&gt;pgbackrest.conf&lt;/code&gt;. If there is more than one repository configured, the stanza will be created on each. Stanzas that have already been created will be skipped so it is always safe to run &lt;code&gt;stanza-create&lt;/code&gt;, even when a new repository has been configured.&lt;/p&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#create-the-stanza&#34;&gt;Create the Stanza&lt;/a&gt; for more information and an example.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;online-option---online&#34;&gt;Online Option (&lt;code&gt;--online&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Create on an online cluster.&lt;/p&gt;</description>
      </item>
    <item>
        <title>4. Proxies</title>
        <link>https://pgsql.cc/haproxy/proxies/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/proxies/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Proxy configuration can be located in a set of sections:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&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;&#xA;&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;&#xA;&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;&#xA;&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;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;A &amp;ldquo;frontend&amp;rdquo; section describes a set of listening sockets accepting client connections.&lt;/p&gt;&#xA;&lt;p&gt;A &amp;ldquo;backend&amp;rdquo; section describes a set of servers to which the proxy will connect to forward incoming&#xA;connections.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Stanza Delete Command (stanza-delete)</title>
        <link>https://pgsql.cc/pgbackrest/command/stanza-delete/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/stanza-delete/</guid>
        <description>&lt;p&gt;The &lt;code&gt;stanza-delete&lt;/code&gt; command removes data in the repository associated with a stanza.&lt;/p&gt;&#xA;&lt;p&gt;WARNING:&lt;/p&gt;&#xA;&lt;p&gt;Use this command with caution — it will permanently remove all backups and archives from the pgBackRest repository for the specified stanza.&lt;/p&gt;&#xA;&lt;p&gt;To delete a stanza:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Shut down the PostgreSQL cluster associated with the stanza (or use &amp;ndash;force to override).&lt;/li&gt;&#xA;&lt;li&gt;Run the &lt;code&gt;stop&lt;/code&gt; command on the host where the &lt;code&gt;stanza-delete&lt;/code&gt; command will be run.&lt;/li&gt;&#xA;&lt;li&gt;Run the &lt;code&gt;stanza-delete&lt;/code&gt; command.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Once the command successfully completes, it is the responsibility of the user to remove the stanza from all pgBackRest configuration files and/or environment variables.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Integration with other tools</title>
        <link>https://pgsql.cc/patroni/tools_integration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/tools_integration/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;tools_integration&#34;&gt;&lt;/a&gt;&#xA;Patroni is able to integrate with other tools in your stack. In this section you will find a list of examples, which although not an exhaustive list, might provide you with ideas on how Patroni can integrate with other tools.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;barman&#34;&gt;Barman&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Patroni delivers an application named &lt;code&gt;patroni_barman&lt;/code&gt; which has logic to communicate with &lt;code&gt;pg-backup-api&lt;/code&gt;, so you are able to perform Barman operations remotely.&lt;/p&gt;&#xA;&lt;p&gt;This application currently has a couple of sub-commands: &lt;code&gt;recover&lt;/code&gt; and &lt;code&gt;config-switch&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>5. Bind and Server Options</title>
        <link>https://pgsql.cc/haproxy/bind-and-server-options/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/bind-and-server-options/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;The &amp;ldquo;bind&amp;rdquo;, &amp;ldquo;server&amp;rdquo; and &amp;ldquo;default-server&amp;rdquo; keywords support a number of settings depending on some&#xA;build options and on the system HAProxy was built on. These settings generally each consist in one&#xA;word sometimes followed by a value, written on the same line as the &amp;ldquo;bind&amp;rdquo; or &amp;ldquo;server&amp;rdquo; line. All&#xA;these options are described in this section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-5-1&#34;&gt;5.1. Bind options&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The &amp;ldquo;bind&amp;rdquo; keyword supports a certain number of settings which are all passed as arguments on the&#xA;same line. The order in which those arguments appear makes no importance, provided that they appear&#xA;after the bind address. All of these parameters are optional. Some of them consist in a single words&#xA;(booleans), while other ones expect a value after them. In this case, the value must be provided&#xA;immediately after the setting name.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Security Considerations</title>
        <link>https://pgsql.cc/patroni/security/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/security/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;security&#34;&gt;&lt;/a&gt;&#xA;A Patroni cluster has two interfaces to be protected from unauthorized access: the distributed configuration storage (DCS) and the Patroni REST API.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;protecting-dcs&#34;&gt;Protecting DCS&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Patroni and &lt;a href=&#34;https://pgsql.cc/patroni/patronictl/#patronictl&#34;&gt;patronictl&lt;/a&gt; both store and retrieve data to/from the DCS.&lt;/p&gt;&#xA;&lt;p&gt;Despite DCS doesn&amp;rsquo;t contain any sensitive information, it allows changing some of Patroni/Postgres configuration. Therefore the very first thing that should be protected is DCS itself.&lt;/p&gt;&#xA;&lt;p&gt;The details of protection depend on the type of DCS used. The authentication and encryption parameters (tokens/basic-auth/client certificates) for the supported types of DCS are covered in &lt;a href=&#34;https://pgsql.cc/patroni/config/yaml/#yaml&#34;&gt;settings&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Stanza Upgrade Command (stanza-upgrade)</title>
        <link>https://pgsql.cc/pgbackrest/command/stanza-upgrade/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/stanza-upgrade/</guid>
        <description>&lt;p&gt;Immediately after upgrading PostgreSQL to a newer major version, the &lt;code&gt;pg-path&lt;/code&gt; for all pgBackRest configurations must be set to the new database location and the &lt;code&gt;stanza-upgrade&lt;/code&gt; command run. If there is more than one repository configured on the host, the stanza will be upgraded on each. If the database is offline use the &lt;code&gt;--no-online&lt;/code&gt; option.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;online-option---online&#34;&gt;Online Option (&lt;code&gt;--online&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Update an online cluster.&lt;/p&gt;</description>
      </item>
    <item>
        <title>6. Cache</title>
        <link>https://pgsql.cc/haproxy/cache/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/cache/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy provides a cache, which was designed to perform cache on small objects (favicon, css&amp;hellip;).&#xA;This is a minimalist low-maintenance cache which runs in RAM.&lt;/p&gt;&#xA;&lt;p&gt;The cache is based on a memory area shared between all threads, and split in 1kB blocks.&lt;/p&gt;&#xA;&lt;p&gt;If an object is not used anymore, it can be deleted to store a new object independently of its&#xA;expiration date. The oldest objects are deleted first when we try to allocate a new one.&lt;/p&gt;</description>
      </item>
    <item>
        <title>HA multi datacenter</title>
        <link>https://pgsql.cc/patroni/ha_multi_dc/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/ha_multi_dc/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;ha_multi_dc&#34;&gt;&lt;/a&gt;&#xA;The high availability of a PostgreSQL cluster deployed in multiple data centers is based on replication, which can be synchronous or asynchronous (see &lt;a href=&#34;https://pgsql.cc/patroni/replication_modes/#replication_modes&#34;&gt;replication modes&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;In both cases, it is important to be clear about the following concepts:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Postgres can run as primary or standby leader only when it owns the leading key and can update the leading key.&lt;/li&gt;&#xA;&lt;li&gt;You should run the odd number of etcd, ZooKeeper or Consul nodes: 3 or 5!&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;synchronous-replication&#34;&gt;Synchronous Replication&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To have a multi DC cluster that can automatically tolerate a zone drop, a minimum of 3 is required.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Start Command (start)</title>
        <link>https://pgsql.cc/pgbackrest/command/start/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/start/</guid>
        <description>&lt;p&gt;If the pgBackRest processes were previously stopped using the &lt;code&gt;stop&lt;/code&gt; command then they can be started again using the &lt;code&gt;start&lt;/code&gt; command. Note that this will not immediately start up any pgBackRest processes but they are allowed to run. See &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#starting-and-stopping&#34;&gt;Starting and Stopping&lt;/a&gt; for more information and examples.&lt;/p&gt;&#xA;&lt;h2 id=&#34;general-options&#34;&gt;General Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;allow-run-as-root-option---allow-root&#34;&gt;Allow Run as Root Option (&lt;code&gt;--allow-root&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Allow the command to run as the root user.&lt;/p&gt;</description>
      </item>
    <item>
        <title>7. ACLs and Sample Fetching</title>
        <link>https://pgsql.cc/haproxy/acls-and-samples/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/acls-and-samples/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is capable of extracting data from request or response streams, from client or server&#xA;information, from tables, environmental information etc&amp;hellip; The action of extracting such data is&#xA;called fetching a sample. Once retrieved, these samples may be used for various purposes such as a&#xA;key to a stick-table, but most common usages consist in matching them against predefined constant&#xA;data called patterns.&lt;/p&gt;</description>
      </item>
    <item>
        <title>FAQ</title>
        <link>https://pgsql.cc/patroni/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/faq/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;faq&#34;&gt;&lt;/a&gt;&#xA;In this section you will find answers for the most frequently asked questions about Patroni. Each sub-section attempts to focus on different kinds of questions.&lt;/p&gt;&#xA;&lt;p&gt;We hope that this helps you to clarify most of your questions. If you still have further concerns or find yourself facing an unexpected issue, please refer to &lt;a href=&#34;https://pgsql.cc/patroni/contributing_guidelines/#chatting&#34;&gt;chatting&lt;/a&gt; and &lt;a href=&#34;https://pgsql.cc/patroni/contributing_guidelines/#reporting_bugs&#34;&gt;reporting_bugs&lt;/a&gt; for instructions on how to get help or report issues.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;comparison-with-other-ha-solutions&#34;&gt;Comparison with other HA solutions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Why does Patroni require a separate cluster of DCS nodes while other solutions like &lt;code&gt;repmgr&lt;/code&gt; do not?&lt;br&gt;&#xA;There are different ways of implementing HA solutions, each of them with their pros and cons.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Stop Command (stop)</title>
        <link>https://pgsql.cc/pgbackrest/command/stop/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/stop/</guid>
        <description>&lt;p&gt;Does not allow any new pgBackRest processes to run. By default running processes will be allowed to complete successfully. Use the &lt;code&gt;--force&lt;/code&gt; option to terminate running processes.&lt;/p&gt;&#xA;&lt;p&gt;pgBackRest processes will return an error if they are run after the stop command completes. See &lt;a href=&#34;https://pgsql.cc/pgbackrest/user-guide/#starting-and-stopping&#34;&gt;Starting and Stopping&lt;/a&gt; for more information and examples.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;force-option---force&#34;&gt;Force Option (&lt;code&gt;--force&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Force all pgBackRest processes to stop.&lt;/p&gt;</description>
      </item>
    <item>
        <title>8. Logging</title>
        <link>https://pgsql.cc/haproxy/configuration-logging/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/configuration-logging/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;One of HAProxy&amp;rsquo;s strong points certainly lies is its precise logs. It probably provides the finest&#xA;level of information available for such a product, which is very important for troubleshooting&#xA;complex environments. Standard information provided in logs include client ports, TCP/HTTP state&#xA;timers, precise stream state at termination and precise termination cause, information about&#xA;decisions to direct traffic to a server, and of course the ability to capture arbitrary headers.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Release notes</title>
        <link>https://pgsql.cc/patroni/releases/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/releases/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;releases&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;version-415&#34;&gt;Version 4.1.5&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Released 2026-08-12&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Compatibility improvements&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Compatibility with PostgreSQL 14.24, 15.19, 16.15, 17.11, 18.6 (Alexander Kukushkin)&lt;/p&gt;&#xA;&lt;p&gt;Add the new &lt;code&gt;output_plugin_libraries&lt;/code&gt; GUC, which restricts logical decoding output plugins.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Improvements&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Log REST API connection resets at &lt;code&gt;DEBUG&lt;/code&gt; instead of &lt;code&gt;WARNING&lt;/code&gt; (Kyle McLaren)&lt;/p&gt;&#xA;&lt;p&gt;Ensure the common &amp;ldquo;client went away mid-write&amp;rdquo; variants are silenced without affecting the handling of genuine (non-connection) errors.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;Bugfixes&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Fix &lt;code&gt;thread_stack_size&lt;/code&gt; validation alignment (Sundong Kim)&lt;/p&gt;</description>
      </item>
    <item>
        <title>Verify Command (verify)</title>
        <link>https://pgsql.cc/pgbackrest/command/verify/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/verify/</guid>
        <description>&lt;p&gt;Verify determines if the backups and archives in a repository are valid.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;output-option---output&#34;&gt;Output Option (&lt;code&gt;--output&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Output type.&lt;/p&gt;&#xA;&lt;p&gt;The following output types are supported:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;none&lt;/code&gt; - No verify output.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;text&lt;/code&gt; - Output verify information to stdout.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1388f206-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1388f206-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;none&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;example&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;--&lt;span class=&#34;l&#34;&gt;output=text&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;set-option---set&#34;&gt;Set Option (&lt;code&gt;--set&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Backup set to verify.&lt;/p&gt;&#xA;&lt;p&gt;Verify all database and archive files associated with the specified backup set.&lt;/p&gt;</description>
      </item>
    <item>
        <title>9. Supported Filters</title>
        <link>https://pgsql.cc/haproxy/filters/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/filters/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Here are listed officially supported filters with the list of parameters they accept. Depending on&#xA;compile options, some of these filters might be unavailable. The list of available filters is&#xA;reported in haproxy -vv.&lt;/p&gt;&#xA;&lt;p&gt;See also: &amp;ldquo;filter&amp;rdquo;&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-9-1&#34;&gt;9.1. Trace&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;filter trace [name &lt;code&gt;&amp;lt;name&amp;gt;&lt;/code&gt;] [random-forwarding] [max-fwd &lt;code&gt;&amp;lt;max&amp;gt;&lt;/code&gt;] [hexdump]&lt;/p&gt;&#xA;&lt;p&gt;Arguments:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-0a0f0076-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;text&#34; data-td-line-count=&#34;16&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-0a0f0076-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;name&amp;gt;               is an arbitrary name that will be reported in&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     messages. If no name is provided, &amp;#34;TRACE&amp;#34; is used.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;quiet&amp;gt;              inhibits trace messages.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;random-forwarding&amp;gt;  enables the random forwarding of parsed data. By&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     default, this filter forwards all previously parsed&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     data. With this parameter, it only forwards a random&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     amount of the parsed data.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;max&amp;gt;                is the maximum amount of data that can be forwarded at&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     a time. &amp;#34;max-fwd&amp;#34; option can be combined with the&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     random forwarding. &amp;lt;max&amp;gt; must be an positive integer.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                     0 means there is no limit.&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;lt;hexdump&amp;gt;             dumps all forwarded data to the server and the client.&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;This filter can be used as a base to develop new filters. It defines all callbacks and print a&#xA;message on the standard error stream (stderr) with useful information for all of them. It may be&#xA;useful to debug the activity of other filters or, quite simply, HAProxy&amp;rsquo;s activity.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Contributing guidelines</title>
        <link>https://pgsql.cc/patroni/contributing_guidelines/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/patroni/contributing_guidelines/</guid>
        <description>&lt;p&gt;&lt;a id=&#34;contributing_guidelines&#34;&gt;&lt;/a&gt;&#xA;&lt;a id=&#34;chatting&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;chatting&#34;&gt;Chatting&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;If you have a question, looking for an interactive troubleshooting help or want to chat with other Patroni users, join us on channel &lt;a href=&#34;https://postgresteam.slack.com/archives/C9XPYG92A&#34;&gt;#patroni&lt;/a&gt; in the &lt;a href=&#34;https://pgtreats.info/slack-invite&#34;&gt;PostgreSQL Slack&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a id=&#34;reporting_bugs&#34;&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;reporting-bugs&#34;&gt;Reporting bugs&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Before reporting a bug please make sure to &lt;strong&gt;reproduce it with the latest Patroni version&lt;/strong&gt;! Also please double check if the issue already exists in our &lt;a href=&#34;https://github.com/patroni/patroni/issues&#34;&gt;Issues Tracker&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;running-tests&#34;&gt;Running tests&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Requirements for running behave tests:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Reading from etcd</title>
        <link>https://pgsql.cc/etcd/tasks/developer/reading-from-etcd/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/reading-from-etcd/</guid>
        <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;code&gt;etcdctl&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;procedure&#34;&gt;Procedure&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use the &lt;code&gt;get&lt;/code&gt; subcommand to read from etcd:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e4099bc3-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e4099bc3-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; get foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Hello World!&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;where:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;foo&lt;/code&gt; is the requested key&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;Hello World!&lt;/code&gt; is the retrieved value&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Or, for formatted output:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e4099bc3-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e4099bc3-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ etcdctl --endpoints=$ENDPOINTS --write-out=&amp;#34;json&amp;#34; get foo&#xA;{&amp;#34;header&amp;#34;:{&amp;#34;cluster_id&amp;#34;:289318470931837780,&amp;#34;member_id&amp;#34;:14947050114012957595,&amp;#34;revision&amp;#34;:3,&amp;#34;raft_term&amp;#34;:4,&#xA;&amp;#34;kvs&amp;#34;:[{&amp;#34;key&amp;#34;:&amp;#34;Zm9v&amp;#34;,&amp;#34;create_revision&amp;#34;:2,&amp;#34;mod_revision&amp;#34;:3,&amp;#34;version&amp;#34;:2,&amp;#34;value&amp;#34;:&amp;#34;SGVsbG8gV29ybGQh&amp;#34;}]}}&#xA;$&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;where &lt;code&gt;write-out=&amp;quot;json&amp;quot;&lt;/code&gt; causes the value to be output in JSON format (note that the key is not returned).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Version Command (version)</title>
        <link>https://pgsql.cc/pgbackrest/command/version/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/pgbackrest/command/version/</guid>
        <description>&lt;p&gt;Displays installed pgBackRest version.&lt;/p&gt;&#xA;&lt;h2 id=&#34;command-options&#34;&gt;Command Options&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;output-option---output&#34;&gt;Output Option (&lt;code&gt;--output&lt;/code&gt;)&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Output type.&lt;/p&gt;&#xA;&lt;p&gt;The following output types are supported:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;text&lt;/code&gt; - Display the installed pgBackRest version as text.&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;num&lt;/code&gt; - Display the installed pgBackRest version as an integer.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c413c31f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c413c31f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;default&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;l&#34;&gt;text&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nt&#34;&gt;example&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;--&lt;span class=&#34;l&#34;&gt;output=num&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>10. FastCGI Applications</title>
        <link>https://pgsql.cc/haproxy/fastcgi/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/fastcgi/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is able to send HTTP requests to Responder FastCGI applications. This feature was added in&#xA;HAProxy 2.1. To do so, servers must be configured to use the FastCGI protocol (using the keyword&#xA;&amp;ldquo;proto fcgi&amp;rdquo; on the server line) and a FastCGI application must be configured and used by the&#xA;backend managing these servers (using the keyword &amp;ldquo;use-fcgi-app&amp;rdquo; into the proxy section). Several&#xA;FastCGI applications may be defined, but only one can be used at a time by a backend.&lt;/p&gt;</description>
      </item>
    <item>
        <title>11. Stick Tables and Peers</title>
        <link>https://pgsql.cc/haproxy/stick-tables-and-peers/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/stick-tables-and-peers/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Stick-tables in HAProxy are a mechanism which permits to associate a certain number of information&#xA;and metrics with a key of a certain type, and this for a certain duration after the last update.&#xA;This can be seen as a multicolumn line in a table, where the line number is defined by the key&#xA;value, and the columns all represent distinct criteria.&lt;/p&gt;</description>
      </item>
    <item>
        <title>12. Other Sections</title>
        <link>https://pgsql.cc/haproxy/other-sections/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/other-sections/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;The sections described below are less commonly used and usually support only a few parameters. There&#xA;is no implicit relation between any of them. They&amp;rsquo;re all started using a single keyword. None of&#xA;them is permitted before a &amp;ldquo;global&amp;rdquo; section. The support for some of them might be conditioned by&#xA;build options (e.g. anything SSL-related).&lt;/p&gt;&#xA;&lt;h2 id=&#34;section-12-1&#34;&gt;12.1. Traces&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;For debugging purpose, it is possible to activate traces on an HAProxy&amp;rsquo;s subsystem. This will dump&#xA;debug messages about a specific subsystem. It is a very powerful tool to diagnose issues. Traces can&#xA;be dynamically configured via the CLI. It is also possible to predefined some settings in the&#xA;configuration file, in dedicated &amp;ldquo;traces&amp;rdquo; sections. More details about traces can be found in the&#xA;management guide. It remains a developer tools used during complex debugging sessions. It is pretty&#xA;verbose and have a cost, so use it with caution. And because it is a developer tool, there is no&#xA;warranty about the backward compatibility of this section.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Management Guide</title>
        <link></link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid></guid>
        <description></description>
      </item>
    <item>
        <title>1. Prerequisites</title>
        <link>https://pgsql.cc/haproxy/prerequisites/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/prerequisites/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;This document describes how to start, stop, manage, and troubleshoot HAProxy, as well as some known&#xA;limitations and traps to avoid. It does not describe how to configure it (for this please read&#xA;&lt;a href=&#34;https://pgsql.cc/haproxy/http-fundamentals/&#34;&gt;&lt;code&gt;configuration.txt&lt;/code&gt;&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;p&gt;In this document it is assumed that the reader has sufficient administration skills on a UNIX-like&#xA;operating system, uses the shell on a daily basis and is familiar with troubleshooting utilities&#xA;such as strace and tcpdump.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Writing to etcd</title>
        <link>https://pgsql.cc/etcd/tasks/developer/writing-to-etcd/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/writing-to-etcd/</guid>
        <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;code&gt;etcdctl&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;procedure&#34;&gt;Procedure&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use the &lt;code&gt;put&lt;/code&gt; subcommand to write a key-value pair:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c634c266-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c634c266-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put foo &lt;span class=&#34;s2&#34;&gt;&amp;#34;Hello World!&amp;#34;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;where:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;foo&lt;/code&gt; is the key name&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;&amp;quot;Hello World!&amp;quot;&lt;/code&gt; is the quote-delimited value&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>2. HAProxy Architecture</title>
        <link>https://pgsql.cc/haproxy/management-architecture/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/management-architecture/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is a multi-threaded, event-driven, non-blocking daemon. This means it uses event&#xA;multiplexing to schedule all of its activities instead of relying on the system to schedule between&#xA;multiple activities. Most of the time it runs as a single process, so the output of &amp;ldquo;ps aux&amp;rdquo; on a&#xA;system will report only one &amp;ldquo;haproxy&amp;rdquo; process, unless a soft reload is in progress and an older&#xA;process is finishing its job in parallel to the new one. It is thus always easy to trace its&#xA;activity using the strace utility. In order to scale with the number of available processors, by&#xA;default haproxy will start one worker thread per processor it is allowed to run on. Unless&#xA;explicitly configured differently, the incoming traffic is spread over all these threads, all&#xA;running the same event loop. A great care is taken to limit inter-thread dependencies to the strict&#xA;minimum, so as to try to achieve near-linear scalability. This has some impacts such as the fact&#xA;that a given connection is served by a single thread. Thus in order to use all available processing&#xA;capacity, it is needed to have at least as many connections as there are threads, which is almost&#xA;always granted.&lt;/p&gt;</description>
      </item>
    <item>
        <title>3. Starting HAProxy</title>
        <link>https://pgsql.cc/haproxy/starting/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/starting/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is started by invoking the &amp;ldquo;haproxy&amp;rdquo; program with a number of arguments passed on the&#xA;command line. The actual syntax is:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-58525e9d-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-58525e9d-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ haproxy &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&amp;lt;options&amp;gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;*&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;where [&lt;code&gt;&amp;lt;options&amp;gt;&lt;/code&gt;]* is any number of options. An option always starts with &amp;lsquo;-&amp;rsquo; followed by one&#xA;of more letters, and possibly followed by one or multiple extra arguments. Without any option,&#xA;HAProxy displays the help page with a reminder about supported options. Available options may vary&#xA;slightly based on the operating system. A fair number of these options overlap with an equivalent&#xA;one in the &amp;ldquo;global&amp;rdquo; section. In this case, the command line always has precedence over the&#xA;configuration file, so that the command line can be used to quickly enforce some settings without&#xA;touching the configuration files. The current list of options is:&lt;/p&gt;</description>
      </item>
    <item>
        <title>4. Stopping and Restarting HAProxy</title>
        <link>https://pgsql.cc/haproxy/stopping-and-restarting/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/stopping-and-restarting/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy supports a graceful and a hard stop. The hard stop is simple, when the SIGTERM signal is&#xA;sent to the haproxy process, it immediately quits and all established connections are closed. The&#xA;graceful stop is triggered when the SIGUSR1 signal is sent to the haproxy process. It consists in&#xA;only unbinding from listening ports, but continue to process existing connections until they close.&#xA;Once the last connection is closed, the process leaves.&lt;/p&gt;</description>
      </item>
    <item>
        <title>5. File-Descriptor Limitations</title>
        <link>https://pgsql.cc/haproxy/file-descriptors/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/file-descriptors/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;In order to ensure that all incoming connections will successfully be served, HAProxy computes at&#xA;load time the total number of file descriptors that will be needed during the process&amp;rsquo;s life. A&#xA;regular Unix process is generally granted 1024 file descriptors by default, and a privileged process&#xA;can raise this limit itself. This is one reason for starting HAProxy as root and letting it adjust&#xA;the limit. The default limit of 1024 file descriptors roughly allow about 500 concurrent connections&#xA;to be processed. The computation is based on the global maxconn parameter which limits the total&#xA;number of connections per process, the number of listeners, the number of servers which have a&#xA;health check enabled, the agent checks, the peers, the loggers and possibly a few other technical&#xA;requirements. A simple rough estimate of this number consists in simply doubling the maxconn value&#xA;and adding a few tens to get the approximate number of file descriptors needed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>6. Memory Management</title>
        <link>https://pgsql.cc/haproxy/memory/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/memory/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy uses a simple and fast pool-based memory management. Since it relies on a small number of&#xA;different object types, it&amp;rsquo;s much more efficient to pick new objects from a pool which already&#xA;contains objects of the appropriate size than to call malloc() for each different size. The pools&#xA;are organized as a stack or LIFO, so that newly allocated objects are taken from recently released&#xA;objects still hot in the CPU caches. Pools of similar sizes are merged together, in order to limit&#xA;memory fragmentation.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to get keys by prefix</title>
        <link>https://pgsql.cc/etcd/tasks/developer/how-to-get-key-by-prefix/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/how-to-get-key-by-prefix/</guid>
        <description>&lt;h2 id=&#34;pre-requisites&#34;&gt;Pre-requisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;Install etcdctl&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/dev-guide/local_cluster/&#34;&gt;Setup a local cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;get-keys-by-prefix&#34;&gt;Get keys by prefix&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1b537a1d-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1b537a1d-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; get PREFIX --prefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;global-options&#34;&gt;Global Options&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1b537a1d-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1b537a1d-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--endpoints&lt;span class=&#34;o&#34;&gt;=[&lt;/span&gt;127.0.0.1:2379&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, gRPC endpoints&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options&#34;&gt;Options&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1b537a1d-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1b537a1d-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--prefix, get a range of keys with matching prefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;example&#34;&gt;Example&#xA;&lt;/h3&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/tasks/img/get-by-prefix.gif&#34; alt=&#34;03_etcdctl_get_by_prefix_2016050501&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-1b537a1d-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-1b537a1d-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put web1 value1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put web2 value2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put web3 value3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; get web --prefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>7. CPU Usage</title>
        <link>https://pgsql.cc/haproxy/cpu/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/cpu/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy normally spends most of its time in the system and a smaller part in userland. A finely&#xA;tuned 3.5 GHz CPU can sustain a rate about 80000 end-to-end connection setups and closes per second&#xA;at 100% CPU on a single core. When one core is saturated, typical figures are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;95% system, 5% user for long TCP connections or large HTTP objects&lt;/li&gt;&#xA;&lt;li&gt;85% system and 15% user for short TCP connections or small HTTP objects in close mode&lt;/li&gt;&#xA;&lt;li&gt;70% system and 30% user for small HTTP objects in keep-alive mode&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The amount of rules processing and regular expressions will increase the user land part. The&#xA;presence of firewall rules, connection tracking, complex routing tables in the system will instead&#xA;increase the system part.&lt;/p&gt;</description>
      </item>
    <item>
        <title>8. Logging</title>
        <link>https://pgsql.cc/haproxy/management-logging/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/management-logging/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;For logging, HAProxy always relies on a syslog server since it does not perform any file-system&#xA;access. The standard way of using it is to send logs over UDP to the log server (by default on port&#xA;514). Very commonly this is configured to 127.0.0.1 where the local syslog daemon is running, but&#xA;it&amp;rsquo;s also used over the network to log to a central server. The central server provides additional&#xA;benefits especially in active-active scenarios where it is desirable to keep the logs merged in&#xA;arrival order. HAProxy may also make use of a UNIX socket to send its logs to the local syslog&#xA;daemon, but it is not recommended at all, because if the syslog server is restarted while haproxy&#xA;runs, the socket will be replaced and new logs will be lost. Since HAProxy will be isolated inside a&#xA;chroot jail, it will not have the ability to reconnect to the new socket. It has also been observed&#xA;in field that the log buffers in use on UNIX sockets are very small and lead to lost messages even&#xA;at very light loads. But this can be fine for testing however.&lt;/p&gt;</description>
      </item>
    <item>
        <title>9. Statistics and Monitoring</title>
        <link>https://pgsql.cc/haproxy/statistics-and-monitoring/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/statistics-and-monitoring/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;It is possible to query HAProxy about its status. The most commonly used mechanism is the HTTP&#xA;statistics page. This page also exposes an alternative CSV output format for monitoring tools. The&#xA;same format is provided on the Unix socket.&lt;/p&gt;&#xA;&lt;p&gt;Statistics are regroup in categories labelled as domains, corresponding to the multiple components&#xA;of HAProxy. There are two domains available: proxy and resolvers. If not specified, the proxy domain&#xA;is selected. Note that only the proxy statistics are printed on the HTTP page.&lt;/p&gt;</description>
      </item>
    <item>
        <title>10. Easier Configuration Management</title>
        <link>https://pgsql.cc/haproxy/configuration-management/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/configuration-management/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;It is very common that two HAProxy nodes constituting a cluster share exactly the same configuration&#xA;modulo a few addresses. Instead of having to maintain a duplicate configuration for each node, which&#xA;will inevitably diverge, it is possible to include environment variables in the configuration. Thus&#xA;multiple configuration may share the exact same file with only a few different system wide&#xA;environment variables. This started in version 1.5 where only addresses were allowed to include&#xA;environment variables, and 1.6 goes further by supporting environment variables everywhere. The&#xA;syntax is the same as in the UNIX shell, a variable starts with a dollar sign (&amp;rsquo;$&amp;rsquo;), followed by an&#xA;opening curly brace (&amp;rsquo;{&amp;rsquo;), then the variable name followed by the closing brace (&amp;rsquo;}&amp;rsquo;). Except for&#xA;addresses, environment variables are only interpreted in arguments surrounded with double quotes&#xA;(this was necessary not to break existing setups using regular expressions involving the dollar&#xA;symbol).&lt;/p&gt;</description>
      </item>
    <item>
        <title>11. Well-Known Traps to Avoid</title>
        <link>https://pgsql.cc/haproxy/traps/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/traps/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;Once in a while, someone reports that after a system reboot, the haproxy service wasn&amp;rsquo;t started, and&#xA;that once they start it by hand it works. Most often, these people are running a clustered IP&#xA;address mechanism such as keepalived, to assign the service IP address to the master node only, and&#xA;while it used to work when they used to bind haproxy to address 0.0.0.0, it stopped working after&#xA;they bound it to the virtual IP address. What happens here is that when the service starts, the&#xA;virtual IP address is not yet owned by the local node, so when HAProxy wants to bind to it, the&#xA;system rejects this because it is not a local IP address. The fix doesn&amp;rsquo;t consist in delaying the&#xA;haproxy service startup (since it wouldn&amp;rsquo;t stand a restart), but instead to properly configure the&#xA;system to allow binding to non-local addresses. This is easily done on Linux by setting the&#xA;net.ipv4.ip_nonlocal_bind sysctl to 1. This is also needed in order to transparently intercept the&#xA;IP traffic that passes through HAProxy for a specific target address.&lt;/p&gt;</description>
      </item>
    <item>
        <title>12. Debugging and Performance Issues</title>
        <link>https://pgsql.cc/haproxy/debugging-and-performance/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/debugging-and-performance/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;When HAProxy is started with the &amp;ldquo;-d&amp;rdquo; option, it will stay in the foreground and will print one line&#xA;per event, such as an incoming connection, the end of a connection, and for each request or response&#xA;header line seen. This debug output is emitted before the contents are processed, so they don&amp;rsquo;t&#xA;consider the local modifications. The main use is to show the request and response without having to&#xA;run a network sniffer. The output is less readable when multiple connections are handled in&#xA;parallel, though the &amp;ldquo;debug2ansi&amp;rdquo; and &amp;ldquo;debug2html&amp;rdquo; scripts found in the examples/ directory&#xA;definitely help here by coloring the output.&lt;/p&gt;</description>
      </item>
    <item>
        <title>13. Security Considerations</title>
        <link>https://pgsql.cc/haproxy/security/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/haproxy/security/</guid>
        <description>&lt;!-- Generated by scripts/generate-haproxy-docs.py from pinned upstream text. --&gt;&#xA;&lt;p&gt;HAProxy is designed to run with very limited privileges. The standard way to use it is to isolate it&#xA;into a chroot jail and to drop its privileges to a non-root user without any permissions inside this&#xA;jail so that if any future vulnerability were to be discovered, its compromise would not affect the&#xA;rest of the system.&lt;/p&gt;&#xA;&lt;p&gt;In order to perform a chroot, it first needs to be started as a root user. It is pointless to build&#xA;hand-made chroots to start the process there, these ones are painful to build, are never properly&#xA;maintained and always contain way more bugs than the main file-system. And in case of compromise,&#xA;the intruder can use the purposely built file-system. Unfortunately many administrators confuse&#xA;&amp;ldquo;start as root&amp;rdquo; and &amp;ldquo;run as root&amp;rdquo;, resulting in the uid change to be done prior to starting haproxy,&#xA;and reducing the effective security restrictions.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to delete keys</title>
        <link>https://pgsql.cc/etcd/tasks/developer/how-to-delete-keys/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/how-to-delete-keys/</guid>
        <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;&lt;code&gt;etcd&lt;/code&gt; and &lt;code&gt;etcdctl&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;add-or-delete-keys&#34;&gt;Add or delete keys&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;del&lt;/code&gt; to remove the specified key or range of keys:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-f95aab8f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f95aab8f-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl del &lt;span class=&#34;nv&#34;&gt;$KEY&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$END_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options&#34;&gt;Options&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-f95aab8f-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f95aab8f-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--prefix&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: delete keys with matching prefix&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--prev-kv&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: &lt;span class=&#34;k&#34;&gt;return&lt;/span&gt; deleted key-value pairs&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--from-key&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: delete keys that are greater than or equal to the given key using byte compare&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--range&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: delete range of keys without delay&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options-inherited-from-parent-commands&#34;&gt;Options inherited from parent commands&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-f95aab8f-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f95aab8f-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1:2379&amp;#34;&lt;/span&gt;: gRPC endpoints&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;examples&#34;&gt;Examples&#xA;&lt;/h3&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/tasks/img/delete-keys.gif&#34; alt=&#34;04_etcdctl_delete_2016050601&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-f95aab8f-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f95aab8f-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put key myvalue&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; del key&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put k1 value1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put k2 value2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; del k --prefix&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>How to make multiple writes in a transaction</title>
        <link>https://pgsql.cc/etcd/tasks/developer/how-to-transactional-write/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/how-to-transactional-write/</guid>
        <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;&lt;code&gt;etcd&lt;/code&gt; and &lt;code&gt;etcdctl&lt;/code&gt;&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;A running &lt;code&gt;etcd&lt;/code&gt; cluster.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;terminology&#34;&gt;Terminology&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Here are definitions of some key terms used in the &lt;a href=&#34;https://pgsql.cc/etcd/tasks/developer/how-to-transactional-write/#example&#34;&gt;Example&lt;/a&gt; below.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Terms&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Definition&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://github.com/etcd-io/etcd/blob/main/etcdctl/README.md#etcdctl&#34;&gt;etcdctl&lt;/a&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The command line tool for interacting with the etcd server.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;a href=&#34;https://github.com/etcd-io/etcd/blob/main/etcdctl/README.md#txn-options&#34;&gt;&lt;code&gt;txn&lt;/code&gt;&lt;/a&gt; command&lt;/td&gt;&#xA;      &lt;td&gt;&lt;code&gt;txn&lt;/code&gt; command is an abbreviation for &amp;ldquo;transaction&amp;rdquo;. It reads multiple etcd requests from standard input and applies them as a single atomic transaction. A transaction consists of list of conditions, a list of requests to apply if all the conditions are true, and a list of requests to apply if any condition is false. View &lt;a href=&#34;https://github.com/etcd-io/etcd/blob/main/etcdctl/README.md#key-value-commands&#34;&gt;etcdctl key-value commands&lt;/a&gt; for more information.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;&lt;code&gt;compare&lt;/code&gt;&lt;/td&gt;&#xA;      &lt;td&gt;The &lt;code&gt;compare&lt;/code&gt; clause within a transaction (&lt;code&gt;txn&lt;/code&gt;) serves as a conditional check that determines whether the transaction&amp;rsquo;s operations should proceed. It ensures changes are only applied if the current state of the key-value store matches expected conditions, thereby maintaining data consistency and preventing conflicts in concurrent environments. To see how the command is structured, view &lt;a href=&#34;https://pgsql.cc/etcd/tasks/developer/how-to-transactional-write/#2-perform-a-transaction&#34;&gt;Perform a transaction&lt;/a&gt; section below.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h2 id=&#34;transactions&#34;&gt;Transactions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;txn&lt;/code&gt; to process all the requests in one transaction:&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to watch keys</title>
        <link>https://pgsql.cc/etcd/tasks/developer/how-to-watch-keys/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/how-to-watch-keys/</guid>
        <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;&lt;code&gt;etcd&lt;/code&gt; and &lt;code&gt;etcdctl&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;watching-keys&#34;&gt;Watching keys&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;watch&lt;/code&gt; to get notified of future changes:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-38c49bd6-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-38c49bd6-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl watch &lt;span class=&#34;nv&#34;&gt;$KEY&lt;/span&gt; &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$END_KEY&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options&#34;&gt;Options&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-38c49bd6-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;5&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-38c49bd6-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;-i, --interactive&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: interactive mode&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--prefix&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: watch on a prefix &lt;span class=&#34;k&#34;&gt;if&lt;/span&gt; prefix is &lt;span class=&#34;nb&#34;&gt;set&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--rev&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0: Revision to start watching&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--prev-kv&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: get the previous key-value pair before the event happens&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--progress-notify&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: get periodic watch progress notification from server&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options-inherited-from-parent-commands&#34;&gt;Options inherited from parent commands&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-38c49bd6-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-38c49bd6-fence-2-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;127.0.0.1:2379&amp;#34;&lt;/span&gt;: gRPC endpoints&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;examples&#34;&gt;Examples&#xA;&lt;/h3&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/tasks/img/watch-keys.gif&#34; alt=&#34;06_etcdctl_watch_2016050501&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-38c49bd6-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;6&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-38c49bd6-fence-3-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; watch stock1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put stock1 &lt;span class=&#34;m&#34;&gt;1000&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; watch stock --prefix&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put stock1 &lt;span class=&#34;m&#34;&gt;10&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put stock2 &lt;span class=&#34;m&#34;&gt;20&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>How to create lease</title>
        <link>https://pgsql.cc/etcd/tasks/developer/how-to-create-lease/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/how-to-create-lease/</guid>
        <description>&lt;p&gt;&lt;code&gt;lease&lt;/code&gt; to write with TTL:&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/tasks/img/create-lease.gif&#34; alt=&#34;07_etcdctl_lease_2016050501&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-50223bee-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;10&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-50223bee-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; lease grant &lt;span class=&#34;m&#34;&gt;300&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# lease 2be7547fbc6a5afa granted with TTL(300s)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; put sample value --lease&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;2be7547fbc6a5afa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; get sample&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; lease keep-alive 2be7547fbc6a5afa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; lease revoke 2be7547fbc6a5afa&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# or after 300 seconds&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; get sample&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>How to create locks</title>
        <link>https://pgsql.cc/etcd/tasks/developer/how-to-create-locks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/developer/how-to-create-locks/</guid>
        <description>&lt;p&gt;LOCK acquires a distributed mutex with a given name. Once the lock is acquired, it will be held until etcdctl is terminated.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;&lt;code&gt;etcd&lt;/code&gt; and &lt;code&gt;etcdctl&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;creating-a-lock&#34;&gt;Creating a lock&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;lock&lt;/code&gt; for distributed lock:&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/tasks/img/create-lock.gif&#34; alt=&#34;08_etcdctl_lock_2016050501&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c00ce166-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c00ce166-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; lock mutex1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options&#34;&gt;Options&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;endpoints - defines a comma-delimited list of machine addresses in the cluster.&lt;/li&gt;&#xA;&lt;li&gt;ttl - time out in seconds of lock session.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>How to conduct leader election in etcd cluster</title>
        <link>https://pgsql.cc/etcd/tasks/operator/how-to-conduct-elections/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/operator/how-to-conduct-elections/</guid>
        <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Ensure &lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;&lt;code&gt;etcd&lt;/code&gt;&lt;/a&gt; and &lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;&lt;code&gt;etcdctl&lt;/code&gt;&lt;/a&gt; is installed.&lt;/li&gt;&#xA;&lt;li&gt;Check for active etcd cluster.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;conduct-leader-election&#34;&gt;Conduct Leader election&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The &lt;code&gt;etcdctl&lt;/code&gt; command is used to conduct leader elections in an etcd cluster. It makes sure that only one client can become leader at a time.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;etcdctl --endpoints=$ENDPOINTS elect &amp;lt;election-name&amp;gt; [proposal]&lt;/code&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e1cef5cb-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e1cef5cb-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt; elect election-name p1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options&#34;&gt;Options&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;code&gt;--endpoints : $ENDPOINTS&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Address of each etcd cluster members.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Quickstart</title>
        <link>https://pgsql.cc/etcd/quickstart/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/quickstart/</guid>
        <description>&lt;p&gt;Follow these instructions to locally install, run, and test a single-member&#xA;cluster of etcd:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Install etcd from pre-built binaries or from source. For details, see&#xA;&lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;Install&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;: Ensure that you perform the last&#xA;step of the installation instructions to verify that &lt;code&gt;etcd&lt;/code&gt; is in your path.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Launch &lt;code&gt;etcd&lt;/code&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-79e0ebfe-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;console&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-79e0ebfe-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gp&#34;&gt;$&lt;/span&gt; etcd&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;{&amp;#34;level&amp;#34;:&amp;#34;info&amp;#34;,&amp;#34;ts&amp;#34;:&amp;#34;2021-09-17T09:19:32.783-0400&amp;#34;,&amp;#34;caller&amp;#34;:&amp;#34;etcdmain/etcd.go:72&amp;#34;,&amp;#34;msg&amp;#34;:... }&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;⋮&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: The output produced by &lt;code&gt;etcd&lt;/code&gt; are&#xA;&lt;a href=&#34;https://pgsql.cc/etcd/op-guide/configuration/#logging&#34;&gt;logs&lt;/a&gt; — info-level logs can&#xA;be ignored.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to check Cluster status</title>
        <link>https://pgsql.cc/etcd/tasks/operator/how-to-check-cluster-status/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/operator/how-to-check-cluster-status/</guid>
        <description>&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Install &lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;&lt;code&gt;etcd&lt;/code&gt; and &lt;code&gt;etcdctl&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;check-overall-status&#34;&gt;Check Overall Status&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;endpoint status&lt;/code&gt; to check the overall status of each endpoint specified in &lt;code&gt;--endpoints&lt;/code&gt; flag:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-8a0f16f4-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-8a0f16f4-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl endpoint status &lt;span class=&#34;o&#34;&gt;(&lt;/span&gt;--endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINTS&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;--cluster&lt;span class=&#34;o&#34;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;options&#34;&gt;Options&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-8a0f16f4-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-8a0f16f4-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--cluster&lt;span class=&#34;o&#34;&gt;[=&lt;/span&gt;false&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;: use all endpoints from the cluster member list&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;check-health&#34;&gt;Check Health&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;endpoint health&lt;/code&gt; to check the healthiness of each endpoint specified in &lt;code&gt;--endpoints&lt;/code&gt; flag:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Demo</title>
        <link>https://pgsql.cc/etcd/demo/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/demo/</guid>
        <description>&lt;p&gt;This series of examples shows the basic procedures for working with an etcd cluster.&lt;/p&gt;&#xA;&lt;h2 id=&#34;auth&#34;&gt;Auth&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;auth&lt;/code&gt;,&lt;code&gt;user&lt;/code&gt;,&lt;code&gt;role&lt;/code&gt; for authentication:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-7a465075-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;24&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-7a465075-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ETCDCTL_API&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;localhost:2379&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role add root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role get root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user add root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user grant-role root root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user get root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role add role0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role grant-permission role0 readwrite foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user add user0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user grant-role user0 role0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; auth &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# now all client requests go through auth&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --user&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;user0:123 put foo bar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; get foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# permission denied, user name is empty because the request does not issue an authentication request&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --user&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;user0:123 get foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# user0 can read the key foo&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --user&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;user0:123 get foo1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;</description>
      </item>
    <item>
        <title>How to save the database</title>
        <link>https://pgsql.cc/etcd/tasks/operator/how-to-save-database/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/operator/how-to-save-database/</guid>
        <description>&lt;h2 id=&#34;pre-requisites&#34;&gt;Pre-requisites&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/install/&#34;&gt;Install etcdctl, etcdutl&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/dev-guide/local_cluster/&#34;&gt;Setup a local cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;snapshot-a-database&#34;&gt;Snapshot a database&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;snapshot&lt;/code&gt; to save point-in-time snapshot of etcd database:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-5f9876de-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-5f9876de-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$ENDPOINT&lt;/span&gt; snapshot save DB_NAME&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;global-options&#34;&gt;Global Options&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;etcdctl&#34;&gt;etcdctl&#xA;&lt;/h4&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-5f9876de-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-5f9876de-fence-1-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;--endpoints&lt;span class=&#34;o&#34;&gt;=[&lt;/span&gt;127.0.0.1:2379&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;, gRPC endpoints&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Snapshot can only be requested from one etcd node, so &lt;code&gt;--endpoints&lt;/code&gt; flag should contain only one endpoint.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Install</title>
        <link>https://pgsql.cc/etcd/install/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/install/</guid>
        <description>&lt;h2 id=&#34;requirements&#34;&gt;Requirements&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Before installing etcd, see the following pages:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/op-guide/supported-platform/&#34;&gt;Supported platforms&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/op-guide/hardware/&#34;&gt;Hardware recommendations&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;install-pre-built-binaries&#34;&gt;Install pre-built binaries&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The easiest way to install etcd is from pre-built binaries:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Download the compressed archive file for your platform from &lt;a href=&#34;https://github.com/etcd-io/etcd/releases/&#34;&gt;Releases&lt;/a&gt;,&#xA;choosing release &lt;a href=&#34;https://github.com/etcd-io/etcd/releases/tag/v3.7.0&#34;&gt;v3.7.0&lt;/a&gt; or later.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Unpack the archive file. This results in a directory containing the binaries.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Add the executable binaries to your path. For example, rename and/or move&#xA;the binaries to a directory in your path (like &lt;code&gt;/usr/local/bin&lt;/code&gt;), or add the&#xA;directory created by the previous step to your path.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Feature Gates</title>
        <link>https://pgsql.cc/etcd/feature-gates/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/feature-gates/</guid>
        <description>&lt;!-- overview --&gt;&#xA;&lt;p&gt;This page contains an overview of the various feature gates an administrator&#xA;can specify on etcd.&lt;/p&gt;&#xA;&lt;p&gt;See &lt;a href=&#34;https://pgsql.cc/etcd/feature-gates/#feature-stages&#34;&gt;feature stages&lt;/a&gt; for an explanation of the stages for a feature.&lt;/p&gt;&#xA;&lt;!-- body --&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Feature gates are a set of key=value pairs that describe etcd features.&#xA;You can turn these features on or off using the &lt;code&gt;--feature-gates&lt;/code&gt; command line flag&#xA;on etcd.&lt;/p&gt;&#xA;&lt;p&gt;etcd lets you enable or disable a set of feature gates.&#xA;Use &lt;code&gt;-h&lt;/code&gt; flag to see a full set of feature gates.&#xA;To set feature gates, use the &lt;code&gt;--feature-gates&lt;/code&gt; flag assigned to a list of feature pairs in commandline:&lt;/p&gt;</description>
      </item>
    <item>
        <title>FAQ</title>
        <link>https://pgsql.cc/etcd/faq/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/faq/</guid>
        <description>&lt;h2 id=&#34;etcd-general&#34;&gt;etcd, general&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;what-is-etcd&#34;&gt;What is etcd?&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;etcd is a consistent distributed key-value store. Mainly used as a separate coordination service, in distributed systems. And designed to hold small amounts of data that can fit entirely in memory.&lt;/p&gt;&#xA;&lt;h3 id=&#34;how-do-you-pronounce-etcd&#34;&gt;How do you pronounce etcd?&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;etcd is pronounced &lt;strong&gt;/ˈɛtsiːdiː/&lt;/strong&gt;, and means &amp;ldquo;distributed &lt;code&gt;etc&lt;/code&gt; directory.&amp;rdquo;&lt;/p&gt;&#xA;&lt;h3 id=&#34;do-clients-have-to-send-requests-to-the-etcd-leader&#34;&gt;Do clients have to send requests to the etcd leader?&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://raft.github.io/raft.pdf&#34;&gt;Raft&lt;/a&gt; is leader-based; the leader handles all client requests which need cluster consensus. However, the client does not need to know which node is the leader. Any request that requires consensus sent to a follower is automatically forwarded to the leader. Requests that do not require consensus (e.g., serialized reads) can be processed by any cluster member.&lt;/p&gt;</description>
      </item>
    <item>
        <title>How to Add and Remove Members</title>
        <link>https://pgsql.cc/etcd/tasks/operator/how-to-deal-with-membership/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tasks/operator/how-to-deal-with-membership/</guid>
        <description>&lt;p&gt;&lt;code&gt;member&lt;/code&gt; to add,remove,update membership:&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/tasks/img/manage-members.gif&#34; alt=&#34;13_etcdctl_member_2016062301&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b780d631-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;46&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b780d631-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For each machine&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;my-etcd-token-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;new&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NAME_1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;etcd-node-1&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NAME_2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;etcd-node-2&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;NAME_3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;etcd-node-3&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HOST_1&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10.240.0.13&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HOST_2&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10.240.0.14&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;HOST_3&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;10.240.0.15&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380,&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380,&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For node 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_1&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcd --data-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;data.etcd --name &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-advertise-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--listen-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--advertise-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--listen-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-state &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-token &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For node 2&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_2&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcd --data-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;data.etcd --name &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-advertise-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--listen-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--advertise-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--listen-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-state &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-token &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# For node 3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;NAME_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;HOST_3&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcd --data-dir&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;data.etcd --name &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_NAME&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-advertise-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--listen-peer-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2380 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--advertise-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--listen-client-urls http://&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;THIS_IP&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;:2379 &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-state &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;CLUSTER_STATE&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#x9;--initial-cluster-token &lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;TOKEN&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Then replace a member with &lt;code&gt;member remove&lt;/code&gt; and &lt;code&gt;member add&lt;/code&gt; commands:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Libraries and tools</title>
        <link>https://pgsql.cc/etcd/integrations/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/integrations/</guid>
        <description>&lt;p&gt;Note that third-party libraries and tools (not hosted on &lt;a href=&#34;https://github.com/etcd-io&#34;&gt;https://github.com/etcd-io&lt;/a&gt;) mentioned below are not tested or maintained by the etcd team. Before using them, users are recommended to read and investigate them.&lt;/p&gt;&#xA;&lt;h2 id=&#34;tools&#34;&gt;Tools&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/etcd-io/etcd/tree/main/etcdctl&#34;&gt;etcdctl&lt;/a&gt; - A command line client for etcd&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://npmjs.org/package/etcd-dump&#34;&gt;etcd-dump&lt;/a&gt; - Command line utility for dumping/restoring etcd.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/xetorthio/etcd-fs&#34;&gt;etcd-fs&lt;/a&gt; - FUSE filesystem for etcd&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/rekby/etcddir&#34;&gt;etcddir&lt;/a&gt; - Realtime sync etcd and local directory. Work with windows and linux.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/henszey/etcd-browser&#34;&gt;etcd-browser&lt;/a&gt; - A web-based key/value editor for etcd using AngularJS&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/datawisesystems/etcd-lock&#34;&gt;etcd-lock&lt;/a&gt; - Master election &amp;amp; distributed r/w lock implementation using etcd - Supports v2&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/matishsiao/etcd-console&#34;&gt;etcd-console&lt;/a&gt; - A web-base key/value editor for etcd using PHP&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/nikfoundas/etcd-viewer&#34;&gt;etcd-viewer&lt;/a&gt; - An etcd key-value store editor/viewer written in Java&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mickep76/etcdtool&#34;&gt;etcdtool&lt;/a&gt; - Export/Import/Edit etcd directory as JSON/YAML/TOML and Validate directory using JSON schema&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/sinsharat/etcdloadtest&#34;&gt;etcdloadtest&lt;/a&gt; - A command line load test client for etcd version 3.0 and above.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/olamilekan000/etcd-tui&#34;&gt;etcd-tui&lt;/a&gt; - A modern terminal user interface (TUI) for interacting with your etcd database. Navigate keys, view values, filter data, and manage your etcd cluster directly from your terminal.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://etcdfinder.github.io&#34;&gt;etcdfinder&lt;/a&gt; - A lightning-fast, modern web UI for etcd with instant search. Supports both etcd v2 and v3.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ringtail/lucas&#34;&gt;lucas&lt;/a&gt; - A web-based key-value viewer for kubernetes etcd3.0+ cluster.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://etcdmanager.io&#34;&gt;etcd-manager&lt;/a&gt; - A modern, efficient, multi-platform and free etcd 3.x GUI &amp;amp; client tool. Available for Windows, Linux and Mac.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/gardener/etcd-backup-restore&#34;&gt;etcd-backup-restore&lt;/a&gt; - Utility to periodically and incrementally backup and restore the etcd.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/gardener/etcd-druid&#34;&gt;etcd-druid&lt;/a&gt; - A Kubernetes operator to deploy etcd clusters and manage day-2 operations.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/kubernetes-sigs/etcdadm&#34;&gt;etcdadm&lt;/a&gt; - A command-line tool for operating an etcd cluster.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/ahrtr/etcd-defrag&#34;&gt;etcd-defrag&lt;/a&gt; - An easier to use and smarter etcd defragmentation tool.&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/tsonglew/intellij-etcdhelper&#34;&gt;etcdhelper&lt;/a&gt; - An intellij platform plugin for etcd.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;libraries&#34;&gt;Libraries&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The sections below list etcd client libraries by language.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Reporting bugs</title>
        <link>https://pgsql.cc/etcd/reporting_bugs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/reporting_bugs/</guid>
        <description>&lt;p&gt;If any part of the etcd project has bugs or documentation mistakes, please let us know by &lt;a href=&#34;https://github.com/etcd-io/etcd/issues/new&#34;&gt;opening an issue&lt;/a&gt;. We treat bugs and mistakes very seriously and believe no issue is too small. Before creating a bug report, please check that an issue reporting the same problem does not already exist.&lt;/p&gt;&#xA;&lt;p&gt;To make the bug report accurate and easy to understand, please try to create bug reports that are:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;Specific. Include as much details as possible: which version, what environment, what configuration, etc. If the bug is related to running the etcd server, please attach the etcd log (the starting log with etcd configuration is especially important).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Tuning</title>
        <link>https://pgsql.cc/etcd/tuning/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/tuning/</guid>
        <description>&lt;p&gt;The default settings in etcd should work well for installations on a local network where the average network latency is low. However, when using etcd across multiple data centers or over networks with high latency, the heartbeat interval and election timeout settings may need tuning.&lt;/p&gt;&#xA;&lt;p&gt;The network isn&amp;rsquo;t the only source of latency. Each request and response may be impacted by slow disks on both the leader and follower. Each of these timeouts represents the total time from request to successful response from the other machine.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Discovery service protocol</title>
        <link>https://pgsql.cc/etcd/dev-guide/discovery_protocol/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/discovery_protocol/</guid>
        <description>&lt;p&gt;Discovery service protocol helps new etcd member to discover all other members in cluster bootstrap phase using a shared discovery URL.&lt;/p&gt;&#xA;&lt;p&gt;Discovery service protocol is &lt;em&gt;only&lt;/em&gt; used in cluster bootstrap phase, and cannot be used for runtime reconfiguration or cluster monitoring.&lt;/p&gt;&#xA;&lt;p&gt;The protocol uses a new discovery token to bootstrap one &lt;em&gt;unique&lt;/em&gt; etcd cluster. Remember that one discovery token can represent only one etcd cluster. As long as discovery protocol on this token starts, even if it fails halfway, it must not be used to bootstrap another etcd cluster.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Discovery service protocol</title>
        <link>https://pgsql.cc/etcd/dev-internal/discovery_protocol/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-internal/discovery_protocol/</guid>
        <description>&lt;p&gt;Discovery service protocol helps new etcd member to discover all other members in cluster bootstrap phase using a shared discovery token and endpoint list.&lt;/p&gt;&#xA;&lt;p&gt;Discovery service protocol is &lt;em&gt;only&lt;/em&gt; used in cluster bootstrap phase, and cannot be used for runtime reconfiguration or cluster monitoring.&lt;/p&gt;&#xA;&lt;p&gt;The protocol uses a new discovery token to bootstrap one &lt;em&gt;unique&lt;/em&gt; etcd cluster. Remember that one discovery token can represent only one etcd cluster. As long as discovery protocol on this token starts, even if it fails halfway, it must not be used to bootstrap another etcd cluster.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Logging conventions</title>
        <link>https://pgsql.cc/etcd/dev-internal/logging/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-internal/logging/</guid>
        <description>&lt;p&gt;etcd uses the &lt;a href=&#34;https://github.com/uber-go/zap&#34;&gt;zap&lt;/a&gt; library for logging application output categorized into &lt;em&gt;levels&lt;/em&gt;. A log message&amp;rsquo;s level is determined according to these conventions:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;DebugLevel logs are typically voluminous, and are usually disabled in production.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Examples:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Send a normal message to a remote peer&lt;/li&gt;&#xA;&lt;li&gt;Write a log entry to disk&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;InfoLevel is the default logging priority.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Examples:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Startup configuration&lt;/li&gt;&#xA;&lt;li&gt;Start to do snapshot&lt;/li&gt;&#xA;&lt;li&gt;Add a new node into the cluster&lt;/li&gt;&#xA;&lt;li&gt;Add a new user into auth subsystem&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;WarnLevel logs are more important than Info, but don&amp;rsquo;t need individual human review.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Golang modules</title>
        <link>https://pgsql.cc/etcd/dev-internal/modules/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-internal/modules/</guid>
        <description>&lt;p&gt;The etcd project (since version 3.5) is organized into multiple&#xA;&lt;a href=&#34;https://golang.org/ref/mod&#34;&gt;golang modules&lt;/a&gt; hosted  in a &lt;a href=&#34;https://golang.org/ref/mod#vcs-dir&#34;&gt;single repository&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://pgsql.cc/etcd/dev-internal/img/modules.svg&#34; alt=&#34;modules graph&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;p&gt;There are following modules:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;go.etcd.io/etcd/api/v3&lt;/strong&gt; - contains API definitions&#xA;(like protos &amp;amp; proto-generated libraries) that defines communication protocol&#xA;between etcd clients and server.&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;go.etcd.io/etcd/pkg/v3&lt;/strong&gt; - collection of utility packages used by etcd&#xA;without being specific to etcd itself. A package belongs here&#xA;only if it could possibly be moved out into its own repository in the future.&#xA;Please avoid adding here code that has a lot of dependencies on its own, as&#xA;they automatically becoming dependencies of the client library&#xA;(that we want to keep lightweight).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Data model</title>
        <link>https://pgsql.cc/etcd/learning/data_model/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/data_model/</guid>
        <description>&lt;p&gt;etcd is designed to reliably store infrequently updated data and provide reliable watch queries. etcd exposes previous versions of key-value pairs to support inexpensive snapshots and watch history events (“time travel queries”). A persistent, multi-version, concurrency-control data model is a good fit for these use cases.&lt;/p&gt;&#xA;&lt;p&gt;etcd stores data in a multiversion &lt;a href=&#34;https://en.wikipedia.org/wiki/Persistent_data_structure&#34;&gt;persistent&lt;/a&gt; key-value store. The persistent key-value store preserves the previous version of a key-value pair when its value is superseded with new data. The key-value store is effectively immutable; its operations do not update the structure in-place, but instead always generate a new updated structure. All past versions of keys are still accessible and watchable after modification. To prevent the data store from growing indefinitely over time and from maintaining old versions, the store may be compacted to shed the oldest versions of superseded data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd client design</title>
        <link>https://pgsql.cc/etcd/learning/design-client/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/design-client/</guid>
        <description>&lt;h1 id=&#34;etcd-client-design&#34;&gt;etcd Client Design&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;em&gt;Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.)&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;introduction&#34;&gt;Introduction&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;etcd server has proven its robustness with years of failure injection testing. Most complex application logic is already handled by etcd server and its data stores (e.g. cluster membership is transparent to clients, with Raft-layer forwarding proposals to leader). Although server components are correct, its composition with client requires a different set of intricate protocols to guarantee its correctness and high availability under faulty conditions. Ideally, etcd server provides one logical cluster view of many physical machines, and client implements automatic failover between replicas. This documents client architectural decisions and its implementation details.&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd learner design</title>
        <link>https://pgsql.cc/etcd/learning/design-learner/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/design-learner/</guid>
        <description>&lt;h1 id=&#34;etcd-learner&#34;&gt;etcd Learner&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;em&gt;Gyuho Lee (github.com/gyuho, Amazon Web Services, Inc.), Joe Betz (github.com/jpbetz, Google Inc.)&lt;/em&gt;&lt;/p&gt;&#xA;&lt;h1 id=&#34;background&#34;&gt;Background&#xA;&lt;/h1&gt;&#xA;&lt;p&gt;Membership reconfiguration has been one of the biggest operational challenges. Let’s review common challenges.&lt;/p&gt;&#xA;&lt;h3 id=&#34;1-new-cluster-member-overloads-leader&#34;&gt;1. New Cluster member overloads Leader&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;A newly joined etcd member starts with no data, thus demanding more updates from leader until it catches up with leader’s logs. Then leader’s network is more likely to be overloaded, blocking or dropping leader heartbeats to followers. In such case, a follower may election-timeout to start a new leader election. That is, a cluster with a new member is more vulnerable to leader election. Both leader election and the subsequent update propagation to the new member are prone to causing periods of cluster unavailability (see &lt;em&gt;Figure 1&lt;/em&gt;).&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd v3 authentication design</title>
        <link>https://pgsql.cc/etcd/learning/design-auth-v3/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/design-auth-v3/</guid>
        <description>&lt;h2 id=&#34;why-not-reuse-the-v2-auth-system&#34;&gt;Why not reuse the v2 auth system?&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The v3 protocol uses gRPC as its transport instead of a RESTful interface like v2. This new protocol provides an opportunity to iterate on and improve the v2 design. For example, v3 auth has connection based authentication, rather than v2&amp;rsquo;s slower per-request authentication. Additionally, v2 auth&amp;rsquo;s semantics tend to be unwieldy in practice with respect to reasoning about consistency, which will be described in the next sections. For v3, there is a well-defined description and implementation of the authentication mechanism which fixes the deficiencies in the v2 auth system.&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd API</title>
        <link>https://pgsql.cc/etcd/learning/api/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/api/</guid>
        <description>&lt;p&gt;This document is meant to give an overview of the v3 etcd APIs central design.&#xA;This should not be mistaken with etcd v2 API, deprecated in etcd v3.5.&#xA;It is by no means all encompassing, but intended to focus on the basic ideas needed to understand etcd without the distraction of less common API calls.&#xA;All etcd APIs are defined in &lt;a href=&#34;https://github.com/etcd-io/etcd/blob/main/api/etcdserverpb/rpc.proto&#34;&gt;gRPC services&lt;/a&gt;, which categorize remote procedure calls (RPCs) understood by the etcd server.&#xA;A full listing of all etcd RPCs are documented in markdown in the &lt;a href=&#34;https://pgsql.cc/etcd/dev-guide/api_reference_v3/&#34;&gt;gRPC API listing&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd persistent storage files</title>
        <link>https://pgsql.cc/etcd/learning/persistent-storage-files/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/persistent-storage-files/</guid>
        <description>&lt;p&gt;This document explains the etcd persistent storage format: naming, content and tools that allow developers to inspect them. Going forward the document should be extended with changes to the storage model. This document is targeted at etcd developers to help with their data recovery needs.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The following articles provide helpful background information for this document:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/data_model/&#34;&gt;etcd data model overview&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://raft.github.io/raft.pdf&#34;&gt;Raft overview&lt;/a&gt; (especially &amp;ldquo;5.3 Log replication&amp;rdquo; section).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;long-leaving-files&#34;&gt;Long leaving files&#xA;&lt;/h3&gt;&#xA;&lt;table&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;th&gt;File name&lt;/th&gt;&#xA;    &lt;th&gt;High level purpose&lt;/th&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&lt;pre&gt;./member/snap/db&lt;/pre&gt;&lt;/td&gt;&#xA;    &lt;td&gt;&lt;strong&gt;bbolt &lt;a href=&#34;https://en.wikipedia.org/wiki/B%2B_tree&#34;&gt;b+tree&lt;/a&gt;&lt;/strong&gt; that stores all the applied data, membership authorization information &amp; metadata. It’s aware of what&#39;s the last applied WAL log index (&lt;a href=&#34;https://github.com/etcd-io/etcd/blob/a1ff0d5373335665b3e5f4cb22a538ac63757cb6/server/etcdserver/cindex/cindex.go#L92&#34;&gt;&#34;consistent_index&#34;&lt;/a&gt;).&#xA;    &lt;/td&gt;&#xA;  &lt;/tr&gt;&#xA;  &lt;tr&gt;&#xA;    &lt;td&gt;&lt;pre&gt;./member/snap/0000000000000002-0000000000049425.snap&#xA;./member/snap/0000000000000002-0000000000061ace.snap&lt;/pre&gt;&#xA;    &lt;/td&gt;&#xA;    &lt;td&gt;&#xA;      &lt;p&gt;&#xA;        Periodic &lt;strong&gt;snapshots of legacy v2 store&lt;/strong&gt;, containing:&#xA;        &lt;ul&gt;&#xA;          &lt;li&gt;basic membership information&lt;/li&gt;&#xA;          &lt;li&gt;etcd-version&lt;/li&gt;&#xA;        &lt;/ul&gt;&#xA;      &lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd API guarantees</title>
        <link>https://pgsql.cc/etcd/learning/api_guarantees/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/api_guarantees/</guid>
        <description>&lt;p&gt;etcd is a consistent and durable key value store.&#xA;The key value store is exposed through &lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#grpc-services&#34;&gt;gRPC Services&lt;/a&gt;.&#xA;etcd ensures the strongest consistency and durability guarantees for a distributed system.&#xA;This specification enumerates the API guarantees made by etcd.&lt;/p&gt;&#xA;&lt;h3 id=&#34;apis-to-consider&#34;&gt;APIs to consider&#xA;&lt;/h3&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;KV APIs&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#range&#34;&gt;Range&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#rangestream&#34;&gt;RangeStream&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#put&#34;&gt;Put&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#delete-range&#34;&gt;Delete&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#transaction&#34;&gt;Transaction&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Watch APIs&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#watch-api&#34;&gt;Watch&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;Lease APIs&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#obtaining-leases&#34;&gt;Grant&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;[Revoke]&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/learning/api/#keep-alives&#34;&gt;Keep alive&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;KV API allows for direct reading and manipulation of key value store.&#xA;Watch API allows subscribing to key value store changes.&#xA;Lease API allows assigning a time to live to a key.&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd versus other key-value stores</title>
        <link>https://pgsql.cc/etcd/learning/why/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/why/</guid>
        <description>&lt;p&gt;The name &amp;ldquo;etcd&amp;rdquo; originated from two ideas, the unix &amp;ldquo;/etc&amp;rdquo; folder and &amp;ldquo;d&amp;quot;istributed systems. The &amp;ldquo;/etc&amp;rdquo; folder is a place to store configuration data for a single system whereas etcd stores configuration information for large scale distributed systems. Hence, a &amp;ldquo;d&amp;quot;istributed &amp;ldquo;/etc&amp;rdquo; is &amp;ldquo;etcd&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;etcd is designed as a general substrate for large scale distributed systems. These are systems that will never tolerate split-brain operation and are willing to sacrifice availability to achieve this end. etcd stores metadata in a consistent and fault-tolerant way. An etcd cluster is meant to provide key-value storage with best of class stability, reliability, scalability and performance.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Glossary</title>
        <link>https://pgsql.cc/etcd/learning/glossary/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/learning/glossary/</guid>
        <description>&lt;p&gt;This document defines the various terms used in etcd documentation, command line and source code.&lt;/p&gt;&#xA;&lt;h2 id=&#34;alarm&#34;&gt;Alarm&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The etcd server raises an alarm whenever the cluster needs operator intervention to remain reliable.&lt;/p&gt;&#xA;&lt;h2 id=&#34;authentication&#34;&gt;Authentication&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Authentication manages user access permissions for etcd resources.&lt;/p&gt;&#xA;&lt;h2 id=&#34;client&#34;&gt;Client&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;A client connects to the etcd cluster to issue service requests such as fetching key-value pairs, writing data, or watching for updates.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Set up a local cluster</title>
        <link>https://pgsql.cc/etcd/dev-guide/local_cluster/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/local_cluster/</guid>
        <description>&lt;p&gt;For testing and development deployments, the quickest and easiest way is to configure a local cluster. For a production deployment, refer to the &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/clustering/&#34;&gt;clustering&lt;/a&gt; section.&lt;/p&gt;&#xA;&lt;h2 id=&#34;local-standalone-cluster&#34;&gt;Local standalone cluster&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;starting-a-cluster&#34;&gt;Starting a cluster&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Run the following to deploy an etcd cluster as a standalone cluster:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-e6f20184-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-e6f20184-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;$ ./etcd&#xA;...&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;If the &lt;code&gt;etcd&lt;/code&gt; binary is not present in the current working directory, it might be located either at &lt;code&gt;$GOPATH/bin/etcd&lt;/code&gt; or at &lt;code&gt;/usr/local/bin/etcd&lt;/code&gt;. Run the command appropriately.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Interacting with etcd</title>
        <link>https://pgsql.cc/etcd/dev-guide/interacting_v3/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/interacting_v3/</guid>
        <description>&lt;p&gt;Users mostly interact with etcd by putting or getting the value of a key. This section describes how to do that by using etcdctl, a command line tool for interacting with etcd server. The concepts described here should apply to the gRPC APIs or client library APIs.&lt;/p&gt;&#xA;&lt;p&gt;The API version used by etcdctl to speak to etcd may be set to version &lt;code&gt;2&lt;/code&gt; or &lt;code&gt;3&lt;/code&gt; via the &lt;code&gt;ETCDCTL_API&lt;/code&gt; environment variable. By default, etcdctl on master (3.4) uses the v3 API and earlier versions (3.3 and earlier) default to the v2 API.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Why gRPC gateway</title>
        <link>https://pgsql.cc/etcd/dev-guide/api_grpc_gateway/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/api_grpc_gateway/</guid>
        <description>&lt;p&gt;etcd v3 uses &lt;a href=&#34;https://www.grpc.io/&#34;&gt;gRPC&lt;/a&gt; for its messaging protocol. The etcd project includes a gRPC-based &lt;a href=&#34;https://github.com/etcd-io/etcd/tree/main/client/v3&#34;&gt;Go client&lt;/a&gt; and a command line utility, &lt;a href=&#34;https://github.com/etcd-io/etcd/tree/main/etcdctl&#34;&gt;etcdctl&lt;/a&gt;, for communicating with an etcd cluster through gRPC. For languages with no gRPC support, etcd provides a JSON &lt;a href=&#34;https://github.com/grpc-ecosystem/grpc-gateway&#34;&gt;gRPC gateway&lt;/a&gt;. This gateway serves a RESTful proxy that translates HTTP/JSON requests into gRPC messages.&lt;/p&gt;&#xA;&lt;h2 id=&#34;using-grpc-gateway&#34;&gt;Using gRPC gateway&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The gateway accepts a &lt;a href=&#34;https://developers.google.com/protocol-buffers/docs/proto3#json&#34;&gt;JSON mapping&lt;/a&gt; for etcd&amp;rsquo;s &lt;a href=&#34;https://pgsql.cc/etcd/dev-guide/api_reference_v3/&#34;&gt;protocol buffer&lt;/a&gt; message definitions. Note that &lt;code&gt;key&lt;/code&gt; and &lt;code&gt;value&lt;/code&gt; fields are defined as byte arrays and therefore must be base64 encoded in JSON. The following examples use &lt;code&gt;curl&lt;/code&gt;, but any HTTP/JSON client should work all the same.&lt;/p&gt;</description>
      </item>
    <item>
        <title>gRPC naming and discovery</title>
        <link>https://pgsql.cc/etcd/dev-guide/grpc_naming/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/grpc_naming/</guid>
        <description>&lt;p&gt;etcd provides a gRPC resolver to support an alternative name system that fetches endpoints from etcd for discovering gRPC services. The underlying mechanism is based on watching updates to keys prefixed with the service name.&lt;/p&gt;&#xA;&lt;p&gt;Note that this feature is experimental because it depends on the &lt;a href=&#34;https://github.com/grpc/grpc-go/tree/4cedec40eb2ccfbe3f56bb15e894903111ada2d2/resolver&#34;&gt;google.golang.org/grpc/resolver&lt;/a&gt; package, which is still experimental in grpc-go.&lt;/p&gt;&#xA;&lt;h2 id=&#34;using-etcd-discovery-with-go-grpc&#34;&gt;Using etcd discovery with go-grpc&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The etcd client provides a gRPC resolver for resolving gRPC endpoints with an etcd backend. The resolver is initialized with an etcd client:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Embedding etcd in a Go Application</title>
        <link>https://pgsql.cc/etcd/dev-guide/golang_embed_pkg/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/golang_embed_pkg/</guid>
        <description>&lt;p&gt;The etcd &lt;code&gt;embed&lt;/code&gt; go package provides a simple way to embed an etcd server directly into your application.&lt;/p&gt;&#xA;&lt;p&gt;For more details, see the &lt;a href=&#34;https://pkg.go.dev/go.etcd.io/etcd/server/v3/embed&#34;&gt;embed package documentation&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>System limits</title>
        <link>https://pgsql.cc/etcd/dev-guide/limit/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/limit/</guid>
        <description>&lt;h2 id=&#34;request-size-limit&#34;&gt;Request size limit&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;etcd is designed to handle small key value pairs typical for metadata. Larger requests will work, but may increase the latency of other requests. By default, the maximum size of any request is 1.5 MiB. This limit is configurable through &lt;code&gt;--max-request-bytes&lt;/code&gt; flag for etcd server.&lt;/p&gt;&#xA;&lt;h2 id=&#34;storage-size-limit&#34;&gt;Storage size limit&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The default storage size limit is 2 GiB, configurable with &lt;code&gt;--quota-backend-bytes&lt;/code&gt; flag. 8 GiB is a suggested maximum size for normal environments and etcd warns at startup if the configured value exceeds it.&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd features</title>
        <link>https://pgsql.cc/etcd/dev-guide/features/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/features/</guid>
        <description>&lt;p&gt;This document provides an overview of etcd features to help users better understand the features and related deprecation process. If you are interested in knowing about how features are developed in the etcd, please see these &lt;a href=&#34;https://github.com/etcd-io/etcd/blob/main/Documentation/contributor-guide/features.md&#34;&gt;development guidelines&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The etcd features fall into three stages, experimental, stable, and unsafe. You can get the list of features by running &lt;code&gt;etcd --help&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;experimental&#34;&gt;Experimental&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In order to get early feedback, any new feature is usually added as an experimental feature. The experimental feature can be identified by looking at the flag name, which should have &lt;code&gt;--experimental&lt;/code&gt; as a prefix. Please consider the following points while using an experimental feature:&lt;/p&gt;</description>
      </item>
    <item>
        <title>API reference</title>
        <link>https://pgsql.cc/etcd/dev-guide/api_reference_v3/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/api_reference_v3/</guid>
        <description>&lt;p&gt;This API reference is autogenerated from the named &lt;code&gt;.proto&lt;/code&gt; files.&lt;/p&gt;&#xA;&lt;h5 id=&#34;service-auth-apietcdserverpbrpcproto&#34;&gt;service &lt;code&gt;Auth&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Request Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Response Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;AuthEnable&lt;/td&gt;&#xA;      &lt;td&gt;AuthEnableRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthEnableResponse&lt;/td&gt;&#xA;      &lt;td&gt;AuthEnable enables authentication.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;AuthDisable&lt;/td&gt;&#xA;      &lt;td&gt;AuthDisableRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthDisableResponse&lt;/td&gt;&#xA;      &lt;td&gt;AuthDisable disables authentication.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;AuthStatus&lt;/td&gt;&#xA;      &lt;td&gt;AuthStatusRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthStatusResponse&lt;/td&gt;&#xA;      &lt;td&gt;AuthStatus displays authentication status.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Authenticate&lt;/td&gt;&#xA;      &lt;td&gt;AuthenticateRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthenticateResponse&lt;/td&gt;&#xA;      &lt;td&gt;Authenticate processes an authenticate request.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;UserAdd&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserAddRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserAddResponse&lt;/td&gt;&#xA;      &lt;td&gt;UserAdd adds a new user. User name cannot be empty.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;UserGet&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserGetRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserGetResponse&lt;/td&gt;&#xA;      &lt;td&gt;UserGet gets detailed user information.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;UserList&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserListRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserListResponse&lt;/td&gt;&#xA;      &lt;td&gt;UserList gets a list of all users.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;UserDelete&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserDeleteRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserDeleteResponse&lt;/td&gt;&#xA;      &lt;td&gt;UserDelete deletes a specified user.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;UserChangePassword&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserChangePasswordRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserChangePasswordResponse&lt;/td&gt;&#xA;      &lt;td&gt;UserChangePassword changes the password of a specified user.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;UserGrantRole&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserGrantRoleRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserGrantRoleResponse&lt;/td&gt;&#xA;      &lt;td&gt;UserGrant grants a role to a specified user.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;UserRevokeRole&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserRevokeRoleRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthUserRevokeRoleResponse&lt;/td&gt;&#xA;      &lt;td&gt;UserRevokeRole revokes a role of specified user.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RoleAdd&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleAddRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleAddResponse&lt;/td&gt;&#xA;      &lt;td&gt;RoleAdd adds a new role. Role name cannot be empty.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RoleGet&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleGetRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleGetResponse&lt;/td&gt;&#xA;      &lt;td&gt;RoleGet gets detailed role information.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RoleList&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleListRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleListResponse&lt;/td&gt;&#xA;      &lt;td&gt;RoleList gets lists of all roles.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RoleDelete&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleDeleteRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleDeleteResponse&lt;/td&gt;&#xA;      &lt;td&gt;RoleDelete deletes a specified role.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RoleGrantPermission&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleGrantPermissionRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleGrantPermissionResponse&lt;/td&gt;&#xA;      &lt;td&gt;RoleGrantPermission grants a permission of a specified key or range to a specified role.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;RoleRevokePermission&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleRevokePermissionRequest&lt;/td&gt;&#xA;      &lt;td&gt;AuthRoleRevokePermissionResponse&lt;/td&gt;&#xA;      &lt;td&gt;RoleRevokePermission revokes a key or range permission of a specified role.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;service-cluster-apietcdserverpbrpcproto&#34;&gt;service &lt;code&gt;Cluster&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Request Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Response Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;MemberAdd&lt;/td&gt;&#xA;      &lt;td&gt;MemberAddRequest&lt;/td&gt;&#xA;      &lt;td&gt;MemberAddResponse&lt;/td&gt;&#xA;      &lt;td&gt;MemberAdd adds a member into the cluster.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;MemberRemove&lt;/td&gt;&#xA;      &lt;td&gt;MemberRemoveRequest&lt;/td&gt;&#xA;      &lt;td&gt;MemberRemoveResponse&lt;/td&gt;&#xA;      &lt;td&gt;MemberRemove removes an existing member from the cluster.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;MemberUpdate&lt;/td&gt;&#xA;      &lt;td&gt;MemberUpdateRequest&lt;/td&gt;&#xA;      &lt;td&gt;MemberUpdateResponse&lt;/td&gt;&#xA;      &lt;td&gt;MemberUpdate updates the member configuration.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;MemberList&lt;/td&gt;&#xA;      &lt;td&gt;MemberListRequest&lt;/td&gt;&#xA;      &lt;td&gt;MemberListResponse&lt;/td&gt;&#xA;      &lt;td&gt;MemberList lists all the members in the cluster.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;MemberPromote&lt;/td&gt;&#xA;      &lt;td&gt;MemberPromoteRequest&lt;/td&gt;&#xA;      &lt;td&gt;MemberPromoteResponse&lt;/td&gt;&#xA;      &lt;td&gt;MemberPromote promotes a member from raft learner (non-voting) to raft voting member.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;service-kv-apietcdserverpbrpcproto&#34;&gt;service &lt;code&gt;KV&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Request Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Response Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Range&lt;/td&gt;&#xA;      &lt;td&gt;RangeRequest&lt;/td&gt;&#xA;      &lt;td&gt;RangeResponse&lt;/td&gt;&#xA;      &lt;td&gt;Range gets the keys in the range from the key-value store.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Put&lt;/td&gt;&#xA;      &lt;td&gt;PutRequest&lt;/td&gt;&#xA;      &lt;td&gt;PutResponse&lt;/td&gt;&#xA;      &lt;td&gt;Put puts the given key into the key-value store. A put request increments the revision of the key-value store and generates one event in the event history.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;DeleteRange&lt;/td&gt;&#xA;      &lt;td&gt;DeleteRangeRequest&lt;/td&gt;&#xA;      &lt;td&gt;DeleteRangeResponse&lt;/td&gt;&#xA;      &lt;td&gt;DeleteRange deletes the given range from the key-value store. A delete request increments the revision of the key-value store and generates a delete event in the event history for every deleted key.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Txn&lt;/td&gt;&#xA;      &lt;td&gt;TxnRequest&lt;/td&gt;&#xA;      &lt;td&gt;TxnResponse&lt;/td&gt;&#xA;      &lt;td&gt;Txn processes multiple requests in a single transaction. A txn request increments the revision of the key-value store and generates events with the same revision for every completed request. It is not allowed to modify the same key several times within one txn.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Compact&lt;/td&gt;&#xA;      &lt;td&gt;CompactionRequest&lt;/td&gt;&#xA;      &lt;td&gt;CompactionResponse&lt;/td&gt;&#xA;      &lt;td&gt;Compact compacts the event history in the etcd key-value store. The key-value store should be periodically compacted or the event history will continue to grow indefinitely.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;service-lease-apietcdserverpbrpcproto&#34;&gt;service &lt;code&gt;Lease&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Request Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Response Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;LeaseGrant&lt;/td&gt;&#xA;      &lt;td&gt;LeaseGrantRequest&lt;/td&gt;&#xA;      &lt;td&gt;LeaseGrantResponse&lt;/td&gt;&#xA;      &lt;td&gt;LeaseGrant creates a lease which expires if the server does not receive a keepAlive within a given time to live period. All keys attached to the lease will be expired and deleted if the lease expires. Each expired key generates a delete event in the event history.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;LeaseRevoke&lt;/td&gt;&#xA;      &lt;td&gt;LeaseRevokeRequest&lt;/td&gt;&#xA;      &lt;td&gt;LeaseRevokeResponse&lt;/td&gt;&#xA;      &lt;td&gt;LeaseRevoke revokes a lease. All keys attached to the lease will expire and be deleted.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;LeaseKeepAlive&lt;/td&gt;&#xA;      &lt;td&gt;LeaseKeepAliveRequest&lt;/td&gt;&#xA;      &lt;td&gt;LeaseKeepAliveResponse&lt;/td&gt;&#xA;      &lt;td&gt;LeaseKeepAlive keeps the lease alive by streaming keep alive requests from the client to the server and streaming keep alive responses from the server to the client.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;LeaseTimeToLive&lt;/td&gt;&#xA;      &lt;td&gt;LeaseTimeToLiveRequest&lt;/td&gt;&#xA;      &lt;td&gt;LeaseTimeToLiveResponse&lt;/td&gt;&#xA;      &lt;td&gt;LeaseTimeToLive retrieves lease information.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;LeaseLeases&lt;/td&gt;&#xA;      &lt;td&gt;LeaseLeasesRequest&lt;/td&gt;&#xA;      &lt;td&gt;LeaseLeasesResponse&lt;/td&gt;&#xA;      &lt;td&gt;LeaseLeases lists all existing leases.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;service-maintenance-apietcdserverpbrpcproto&#34;&gt;service &lt;code&gt;Maintenance&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Request Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Response Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Alarm&lt;/td&gt;&#xA;      &lt;td&gt;AlarmRequest&lt;/td&gt;&#xA;      &lt;td&gt;AlarmResponse&lt;/td&gt;&#xA;      &lt;td&gt;Alarm activates, deactivates, and queries alarms regarding cluster health.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Status&lt;/td&gt;&#xA;      &lt;td&gt;StatusRequest&lt;/td&gt;&#xA;      &lt;td&gt;StatusResponse&lt;/td&gt;&#xA;      &lt;td&gt;Status gets the status of the member.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Defragment&lt;/td&gt;&#xA;      &lt;td&gt;DefragmentRequest&lt;/td&gt;&#xA;      &lt;td&gt;DefragmentResponse&lt;/td&gt;&#xA;      &lt;td&gt;Defragment defragments a member&amp;rsquo;s backend database to recover storage space.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Hash&lt;/td&gt;&#xA;      &lt;td&gt;HashRequest&lt;/td&gt;&#xA;      &lt;td&gt;HashResponse&lt;/td&gt;&#xA;      &lt;td&gt;Hash computes the hash of whole backend keyspace, including key, lease, and other buckets in storage. This is designed for testing ONLY! Do not rely on this in production with ongoing transactions, since Hash operation does not hold MVCC locks. Use &amp;ldquo;HashKV&amp;rdquo; API instead for &amp;ldquo;key&amp;rdquo; bucket consistency checks.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;HashKV&lt;/td&gt;&#xA;      &lt;td&gt;HashKVRequest&lt;/td&gt;&#xA;      &lt;td&gt;HashKVResponse&lt;/td&gt;&#xA;      &lt;td&gt;HashKV computes the hash of all MVCC keys up to a given revision. It only iterates &amp;ldquo;key&amp;rdquo; bucket in backend storage.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Snapshot&lt;/td&gt;&#xA;      &lt;td&gt;SnapshotRequest&lt;/td&gt;&#xA;      &lt;td&gt;SnapshotResponse&lt;/td&gt;&#xA;      &lt;td&gt;Snapshot sends a snapshot of the entire backend from a member over a stream to a client.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;MoveLeader&lt;/td&gt;&#xA;      &lt;td&gt;MoveLeaderRequest&lt;/td&gt;&#xA;      &lt;td&gt;MoveLeaderResponse&lt;/td&gt;&#xA;      &lt;td&gt;MoveLeader requests current leader node to transfer its leadership to transferee.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Downgrade&lt;/td&gt;&#xA;      &lt;td&gt;DowngradeRequest&lt;/td&gt;&#xA;      &lt;td&gt;DowngradeResponse&lt;/td&gt;&#xA;      &lt;td&gt;Downgrade requests downgrades, verifies feasibility or cancels downgrade on the cluster version. Supported since etcd 3.5.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;service-watch-apietcdserverpbrpcproto&#34;&gt;service &lt;code&gt;Watch&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Request Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Response Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Watch&lt;/td&gt;&#xA;      &lt;td&gt;WatchRequest&lt;/td&gt;&#xA;      &lt;td&gt;WatchResponse&lt;/td&gt;&#xA;      &lt;td&gt;Watch watches for events happening or that have happened. Both input and output are streams; the input stream is for creating and canceling watchers and the output stream sends events. One watch RPC can watch on multiple key ranges, streaming events for several watches at once. The entire event history can be watched starting from the last compaction revision.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-alarmmember-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AlarmMember&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;memberID&lt;/td&gt;&#xA;      &lt;td&gt;memberID is the ID of the member associated with the raised alarm.&lt;/td&gt;&#xA;      &lt;td&gt;uint64&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;alarm&lt;/td&gt;&#xA;      &lt;td&gt;alarm is the type of alarm which has been raised.&lt;/td&gt;&#xA;      &lt;td&gt;AlarmType&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-alarmrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AlarmRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;action&lt;/td&gt;&#xA;      &lt;td&gt;action is the kind of alarm request to issue. The action may GET alarm statuses, ACTIVATE an alarm, or DEACTIVATE a raised alarm.&lt;/td&gt;&#xA;      &lt;td&gt;AlarmAction&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;memberID&lt;/td&gt;&#xA;      &lt;td&gt;memberID is the ID of the member associated with the alarm. If memberID is 0, the alarm request covers all members.&lt;/td&gt;&#xA;      &lt;td&gt;uint64&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;alarm&lt;/td&gt;&#xA;      &lt;td&gt;alarm is the type of alarm to consider for this request.&lt;/td&gt;&#xA;      &lt;td&gt;AlarmType&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-alarmresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AlarmResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;alarms&lt;/td&gt;&#xA;      &lt;td&gt;alarms is a list of alarms associated with the alarm request.&lt;/td&gt;&#xA;      &lt;td&gt;(slice of) AlarmMember&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authdisablerequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthDisableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authdisableresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthDisableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authenablerequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthEnableRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authenableresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthEnableResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authroleaddrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;name is the name of the role to add to the authentication system.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authroleaddresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authroledeleterequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;role&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authroledeleteresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolegetrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;role&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolegetresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;perm&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;(slice of) authpb.Permission&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolegrantpermissionrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleGrantPermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;name is the name of the role which will be granted the permission.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;perm&lt;/td&gt;&#xA;      &lt;td&gt;perm is the permission to grant to the role.&lt;/td&gt;&#xA;      &lt;td&gt;authpb.Permission&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolegrantpermissionresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleGrantPermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolelistrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolelistresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;roles&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;(slice of) string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolerevokepermissionrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleRevokePermissionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;role&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;key&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;bytes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;range_end&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;bytes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authrolerevokepermissionresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthRoleRevokePermissionResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authstatusrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthStatusRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authstatusresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthStatusResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;enabled&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;bool&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;authRevision&lt;/td&gt;&#xA;      &lt;td&gt;authRevision is the current revision of auth store&lt;/td&gt;&#xA;      &lt;td&gt;uint64&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuseraddrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserAddRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;password&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;options&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;authpb.UserAddOptions&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;hashedPassword&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuseraddresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserAddResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserchangepasswordrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserChangePasswordRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;name is the name of the user whose password is being changed.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;password&lt;/td&gt;&#xA;      &lt;td&gt;password is the new password for the user. Note that this field will be removed in the API layer.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;hashedPassword&lt;/td&gt;&#xA;      &lt;td&gt;hashedPassword is the new password for the user. Note that this field will be initialized in the API layer.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserchangepasswordresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserChangePasswordResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserdeleterequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserDeleteRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;name is the name of the user to delete.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserdeleteresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserDeleteResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authusergetrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserGetRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authusergetresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserGetResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;roles&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;(slice of) string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authusergrantrolerequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserGrantRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;user&lt;/td&gt;&#xA;      &lt;td&gt;user is the name of the user which should be granted a given role.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;role&lt;/td&gt;&#xA;      &lt;td&gt;role is the name of the role to grant to the user.&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authusergrantroleresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserGrantRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserlistrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserListRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserlistresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserListResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;users&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;(slice of) string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserrevokerolerequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserRevokeRoleRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;role&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authuserrevokeroleresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthUserRevokeRoleResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authenticaterequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthenticateRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;password&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-authenticateresponse-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;AuthenticateResponse&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;(versionpb.etcd_version_msg)&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;option&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;token&lt;/td&gt;&#xA;      &lt;td&gt;token is an authorized token that can be used in succeeding RPCs&lt;/td&gt;&#xA;      &lt;td&gt;string&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-compactionrequest-apietcdserverpbrpcproto&#34;&gt;message &lt;code&gt;CompactionRequest&lt;/code&gt; (api/etcdserverpb/rpc.proto)&#xA;&lt;/h5&gt;&#xA;&lt;p&gt;CompactionRequest compacts the key-value store up to a given revision. All superseded keys with a revision less than the compaction revision will be removed.&lt;/p&gt;</description>
      </item>
    <item>
        <title>API reference: concurrency</title>
        <link>https://pgsql.cc/etcd/dev-guide/api_concurrency_reference_v3/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/dev-guide/api_concurrency_reference_v3/</guid>
        <description>&lt;p&gt;This API reference is autogenerated from the named &lt;code&gt;.proto&lt;/code&gt; files.&lt;/p&gt;&#xA;&lt;h5 id=&#34;service-lock-serveretcdserverapiv3lockv3lockpbv3lockproto&#34;&gt;service &lt;code&gt;Lock&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#xA;&lt;/h5&gt;&#xA;&lt;p&gt;The lock service exposes client-side locking facilities as a gRPC interface.&lt;/p&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Method&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Request Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Response Type&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Lock&lt;/td&gt;&#xA;      &lt;td&gt;LockRequest&lt;/td&gt;&#xA;      &lt;td&gt;LockResponse&lt;/td&gt;&#xA;      &lt;td&gt;Lock acquires a distributed shared lock on a given named lock. On success, it will return a unique key that exists so long as the lock is held by the caller. This key can be used in conjunction with transactions to safely ensure updates to etcd only occur while holding lock ownership. The lock is held until Unlock is called on the key or the lease associate with the owner expires.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;Unlock&lt;/td&gt;&#xA;      &lt;td&gt;UnlockRequest&lt;/td&gt;&#xA;      &lt;td&gt;UnlockResponse&lt;/td&gt;&#xA;      &lt;td&gt;Unlock takes a key returned by Lock and releases the hold on lock. The next Lock caller waiting for the lock will then be woken up and given ownership of the lock.&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-lockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto&#34;&gt;message &lt;code&gt;LockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;name&lt;/td&gt;&#xA;      &lt;td&gt;name is the identifier for the distributed shared lock to be acquired.&lt;/td&gt;&#xA;      &lt;td&gt;bytes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;lease&lt;/td&gt;&#xA;      &lt;td&gt;lease is the ID of the lease that will be attached to ownership of the lock. If the lease expires or is revoked and currently holds the lock, the lock is automatically released. Calls to Lock with the same lease will be treated as a single acquisition; locking twice with the same lease is a no-op.&lt;/td&gt;&#xA;      &lt;td&gt;int64&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-lockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto&#34;&gt;message &lt;code&gt;LockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;key&lt;/td&gt;&#xA;      &lt;td&gt;key is a key that will exist on etcd for the duration that the Lock caller owns the lock. Users should not modify this key or the lock may exhibit undefined behavior.&lt;/td&gt;&#xA;      &lt;td&gt;bytes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-unlockrequest-serveretcdserverapiv3lockv3lockpbv3lockproto&#34;&gt;message &lt;code&gt;UnlockRequest&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;key&lt;/td&gt;&#xA;      &lt;td&gt;key is the lock ownership key granted by Lock.&lt;/td&gt;&#xA;      &lt;td&gt;bytes&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;message-unlockresponse-serveretcdserverapiv3lockv3lockpbv3lockproto&#34;&gt;message &lt;code&gt;UnlockResponse&lt;/code&gt; (server/etcdserver/api/v3lock/v3lockpb/v3lock.proto)&#xA;&lt;/h5&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Field&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Description&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;Type&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;header&lt;/td&gt;&#xA;      &lt;td&gt;&lt;/td&gt;&#xA;      &lt;td&gt;etcdserverpb.ResponseHeader&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h5 id=&#34;service-election-serveretcdserverapiv3electionv3electionpbv3electionproto&#34;&gt;service &lt;code&gt;Election&lt;/code&gt; (server/etcdserver/api/v3election/v3electionpb/v3election.proto)&#xA;&lt;/h5&gt;&#xA;&lt;p&gt;The election service exposes client-side election facilities as a gRPC interface.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Authentication</title>
        <link>https://pgsql.cc/etcd/op-guide/authentication/authentication/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/authentication/authentication/</guid>
        <description>&lt;p&gt;&lt;code&gt;auth&lt;/code&gt;,&lt;code&gt;user&lt;/code&gt;,&lt;code&gt;role&lt;/code&gt; for authentication:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-eabfc55a-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;24&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-eabfc55a-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ETCDCTL_API&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;3&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;localhost:2379&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role add root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role get root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user add root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user grant-role root root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user get root&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role add role0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; role grant-permission role0 readwrite foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user add user0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; user grant-role user0 role0&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; auth &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# now all client requests go through auth&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --user&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;user0:123 put foo bar&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; get foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# permission denied, user name is empty because the request does not issue an authentication request&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --user&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;user0:123 get foo&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;c1&#34;&gt;# user0 can read the key foo&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;etcdctl --endpoints&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;${&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;ENDPOINTS&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --user&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;user0:123 get foo1&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h3 id=&#34;note&#34;&gt;Note:&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;This is just a stub which needs to be filled and updated with more information on authentication. The text above is just a code example.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Configuration options</title>
        <link>https://pgsql.cc/etcd/op-guide/configuration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/configuration/</guid>
        <description>&lt;p&gt;You can configure etcd through the following:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://pgsql.cc/etcd/op-guide/configuration/#command-line-flags&#34;&gt;Command-line flags&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Environment variables&lt;/strong&gt;: every flag has a corresponding environment variable&#xA;that has the same name but is prefixed with &lt;code&gt;ETCD_&lt;/code&gt; and formatted in all caps and&#xA;&lt;a href=&#34;https://en.wikipedia.org/wiki/Snake_case&#34;&gt;snake case&lt;/a&gt;. For example, &lt;code&gt;--some-flag&lt;/code&gt; would be &lt;code&gt;ETCD_SOME_FLAG&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;a href=&#34;https://pgsql.cc/etcd/op-guide/configuration/#configuration-file&#34;&gt;Configuration file&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;&lt;strong&gt;Caution&lt;/strong&gt;: If you mix-and-match configuration options, then the following&#xA;rules apply.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Command-line flags take precedence over environment variables.&lt;/li&gt;&#xA;&lt;li&gt;If you provide a &lt;em&gt;configuration file&lt;/em&gt; all command-line flags and environment variables are &lt;strong&gt;ignored&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;h2 id=&#34;command-line-flags&#34;&gt;Command-line flags&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Flags are presented below using the format &lt;code&gt;--flag-name DEFAULT_VALUE&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Role-based access control</title>
        <link>https://pgsql.cc/etcd/op-guide/authentication/rbac/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/authentication/rbac/</guid>
        <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Authentication was added in etcd 2.1. The etcd v3 API slightly modified the authentication feature&amp;rsquo;s API and user interface to better fit the new data model. This guide is intended to help users set up basic authentication and role-based access control in etcd v3.&lt;/p&gt;&#xA;&lt;h2 id=&#34;special-users-and-roles&#34;&gt;Special users and roles&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;There is one special user, &lt;code&gt;root&lt;/code&gt;, and one special role, &lt;code&gt;root&lt;/code&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Transport security model</title>
        <link>https://pgsql.cc/etcd/op-guide/security/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/security/</guid>
        <description>&lt;p&gt;etcd supports automatic TLS as well as authentication through client certificates for both clients to server as well as peer (server to server / cluster) communication. &lt;strong&gt;Note that etcd doesn&amp;rsquo;t enable &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/authentication/&#34;&gt;RBAC based authentication&lt;/a&gt; or the authentication feature in the transport layer by default to reduce friction for users getting started with the database. Further, changing this default would be a breaking change for the project which was established since 2013. An etcd cluster which doesn&amp;rsquo;t enable security features can expose its data to any clients.&lt;/strong&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Clustering Guide</title>
        <link>https://pgsql.cc/etcd/op-guide/clustering/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/clustering/</guid>
        <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Starting an etcd cluster statically requires that each member knows another in the cluster. In a number of cases, the IPs of the cluster members may be unknown ahead of time. In these cases, the etcd cluster can be bootstrapped with the help of a discovery service.&lt;/p&gt;&#xA;&lt;p&gt;Once an etcd cluster is up and running, adding or removing members is done via &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/runtime-configuration/&#34;&gt;runtime reconfiguration&lt;/a&gt;. To better understand the design behind runtime reconfiguration, we suggest reading &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/runtime-reconf-design/&#34;&gt;the runtime configuration design document&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Run etcd clusters as a Kubernetes StatefulSet</title>
        <link>https://pgsql.cc/etcd/op-guide/kubernetes/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/kubernetes/</guid>
        <description>&lt;p&gt;Below demonstrates how to perform the &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/clustering/#static&#34;&gt;static bootstrap process&lt;/a&gt; as a Kubernetes StatefulSet.&lt;/p&gt;&#xA;&lt;h2 id=&#34;example-manifest&#34;&gt;Example Manifest&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;This manifest contains a service and statefulset for deploying a static etcd cluster in kubernetes.&lt;/p&gt;&#xA;&lt;p&gt;If you copy the contents of the manifest into a file named &lt;code&gt;etcd.yaml&lt;/code&gt;, it can be applied to a cluster with this command.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-cd778395-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;shell&#34; data-td-line-count=&#34;1&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-cd778395-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;$ kubectl apply --filename etcd.yaml&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Upon being applied, wait for the pods to become ready.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Run etcd clusters inside containers</title>
        <link>https://pgsql.cc/etcd/op-guide/container/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/container/</guid>
        <description>&lt;p&gt;The following guide shows how to run etcd with  Docker using the &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/clustering/#static&#34;&gt;static bootstrap process&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;docker&#34;&gt;Docker&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In order to expose the etcd API to clients outside of Docker host, use the host IP address of the container. Please see &lt;a href=&#34;https://docs.docker.com/engine/reference/commandline/inspect&#34;&gt;&lt;code&gt;docker inspect&lt;/code&gt;&lt;/a&gt; for more detail on how to get the IP address. Alternatively, specify &lt;code&gt;--net=host&lt;/code&gt; flag to &lt;code&gt;docker run&lt;/code&gt; command to skip placing the container inside of a separate network stack.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Failure modes</title>
        <link>https://pgsql.cc/etcd/op-guide/failures/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/failures/</guid>
        <description>&lt;p&gt;Failures are common in a large deployment of machines. A machine fails when its hardware or software malfunctions. Multiple machines fail together when there are power failures or network issues. Multiple kinds of failures can also happen at once; it is almost impossible to enumerate all possible failure cases.&lt;/p&gt;&#xA;&lt;p&gt;In this section, we catalog kinds of failures and discuss how etcd is designed to tolerate these failures. Most users, if not all, can map a particular failure into one kind of failure. To prepare for rare or &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/recovery/&#34;&gt;unrecoverable failures&lt;/a&gt;, always &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/maintenance/#snapshot-backup&#34;&gt;back up&lt;/a&gt; the etcd cluster.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Disaster recovery</title>
        <link>https://pgsql.cc/etcd/op-guide/recovery/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/recovery/</guid>
        <description>&lt;p&gt;etcd is designed to withstand machine failures. An etcd cluster automatically recovers from temporary failures (e.g., machine reboots) and tolerates up to &lt;em&gt;(N-1)/2&lt;/em&gt; permanent failures for a cluster of N members. When a member permanently fails, whether due to hardware failure or disk corruption, it loses access to the cluster. If the cluster permanently loses more than &lt;em&gt;(N-1)/2&lt;/em&gt; members then it disastrously fails, irrevocably losing quorum. Once quorum is lost, the cluster cannot reach consensus and therefore cannot continue accepting updates.&lt;/p&gt;</description>
      </item>
    <item>
        <title>etcd gateway</title>
        <link>https://pgsql.cc/etcd/op-guide/gateway/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/gateway/</guid>
        <description>&lt;h2 id=&#34;what-is-etcd-gateway&#34;&gt;What is etcd gateway&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;etcd gateway is a simple TCP proxy that forwards network data to the etcd cluster. The gateway is stateless and transparent; it neither inspects client requests nor interferes with cluster responses. It does not terminate TLS connections, do TLS handshakes on behalf of its clients, or verify if the connection is secured.&lt;/p&gt;&#xA;&lt;p&gt;The gateway supports multiple etcd server endpoints and works on a simple round-robin policy. It only routes to available endpoints and hides failures from its clients. Other retry policies, such as weighted round-robin, may be supported in the future.&lt;/p&gt;</description>
      </item>
    <item>
        <title>gRPC proxy</title>
        <link>https://pgsql.cc/etcd/op-guide/grpc_proxy/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/grpc_proxy/</guid>
        <description>&lt;p&gt;The gRPC proxy is a stateless etcd reverse proxy operating at the gRPC layer (L7). The proxy is designed to reduce the total processing load on the core etcd cluster. For horizontal scalability, it coalesces watch and lease API requests. To protect the cluster against abusive clients, it caches key range requests.&lt;/p&gt;&#xA;&lt;p&gt;The gRPC proxy supports multiple etcd server endpoints. When the proxy starts, it randomly picks one etcd server endpoint to use. This endpoint serves all requests until the proxy detects an endpoint failure. If the gRPC proxy detects an endpoint failure, it switches to a different endpoint, if available, to hide failures from its clients. Other retry policies, such as weighted round-robin, may be supported in the future.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Hardware recommendations</title>
        <link>https://pgsql.cc/etcd/op-guide/hardware/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/hardware/</guid>
        <description>&lt;p&gt;etcd usually runs well with limited resources for development or testing purposes; it’s common to develop with etcd on a  laptop or a cheap cloud machine. However, when running etcd clusters in production, some hardware guidelines are useful for proper administration. These suggestions are not hard rules; they serve as a good starting point for a robust production deployment. As always, deployments should be tested with simulated workloads before running in production.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Maintenance</title>
        <link>https://pgsql.cc/etcd/op-guide/maintenance/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/maintenance/</guid>
        <description>&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;An etcd cluster needs periodic maintenance to remain reliable. Depending on an etcd application&amp;rsquo;s needs, this maintenance can usually be automated and performed without downtime or significantly degraded performance.&lt;/p&gt;&#xA;&lt;p&gt;All etcd maintenance manages storage resources consumed by the etcd keyspace. Failure to adequately control the keyspace size is guarded by storage space quotas; if an etcd member runs low on space, a quota will trigger cluster-wide alarms which will put the system into a limited-operation maintenance mode. To avoid running out of space for writes to the keyspace, the etcd keyspace history must be compacted. Storage space itself may be reclaimed by defragmenting etcd members. Finally, periodic snapshot backups of etcd member state makes it possible to recover any unintended logical data loss or corruption caused by operational error.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Monitoring etcd</title>
        <link>https://pgsql.cc/etcd/op-guide/monitoring/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/monitoring/</guid>
        <description>&lt;p&gt;Each etcd server provides local monitoring information on its client port through http endpoints. The monitoring data is useful for both system health checking and cluster debugging.&lt;/p&gt;&#xA;&lt;h2 id=&#34;debug-endpoint&#34;&gt;Debug endpoint&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;If &lt;code&gt;--log-level=debug&lt;/code&gt; is set, the etcd server exports debugging information on its client port under the &lt;code&gt;/debug&lt;/code&gt; path. Take care when setting &lt;code&gt;--log-level=debug&lt;/code&gt;, since there will be degraded performance and verbose logging.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;/debug/pprof&lt;/code&gt; endpoint is the standard go runtime profiling endpoint. This can be used to profile CPU, heap, mutex, and goroutine utilization. For example, here &lt;code&gt;go tool pprof&lt;/code&gt; gets the top 10 functions where etcd spends its time:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Performance</title>
        <link>https://pgsql.cc/etcd/op-guide/performance/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/performance/</guid>
        <description>&lt;h2 id=&#34;understanding-performance&#34;&gt;Understanding performance&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;etcd provides stable, sustained high performance. Two factors define performance: latency and throughput. Latency is the time taken to complete an operation. Throughput is the total operations completed within some time period. Usually average latency increases as the overall throughput increases when etcd accepts concurrent client requests. In common cloud environments, like a standard &lt;code&gt;n-4&lt;/code&gt; on Google Compute Engine (GCE) or a comparable machine type on AWS, a three member etcd cluster finishes a request in less than one millisecond under light load, and can complete more than 30,000 requests per second under heavy load.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Design of runtime reconfiguration</title>
        <link>https://pgsql.cc/etcd/op-guide/runtime-reconf-design/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/runtime-reconf-design/</guid>
        <description>&lt;p&gt;Runtime reconfiguration is one of the hardest and most error prone features in a distributed system, especially in a consensus based system like etcd.&lt;/p&gt;&#xA;&lt;p&gt;Read on to learn about the design of etcd&amp;rsquo;s runtime reconfiguration commands and how we tackled these problems.&lt;/p&gt;&#xA;&lt;h2 id=&#34;two-phase-config-changes-keep-the-cluster-safe&#34;&gt;Two phase config changes keep the cluster safe&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;In etcd, every runtime reconfiguration has to go through &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/runtime-configuration/#add-a-new-member&#34;&gt;two phases&lt;/a&gt; for safety reasons. For example, to add a member, first inform the cluster of the new configuration and then start the new member.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Runtime reconfiguration</title>
        <link>https://pgsql.cc/etcd/op-guide/runtime-configuration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/runtime-configuration/</guid>
        <description>&lt;p&gt;etcd comes with support for incremental runtime reconfiguration, which allows users to update the membership of the cluster at run time.&lt;/p&gt;&#xA;&lt;p&gt;Reconfiguration requests can only be processed when a majority of cluster members are functioning. It is &lt;strong&gt;highly recommended&lt;/strong&gt; to always have a cluster size greater than two in production. It is unsafe to remove a member from a two member cluster. The majority of a two member cluster is also two. If there is a failure during the removal process, the cluster might not be able to make progress and need to &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/runtime-configuration/#restart-cluster-from-majority-failure&#34;&gt;restart from majority failure&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Supported platforms</title>
        <link>https://pgsql.cc/etcd/op-guide/supported-platform/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/supported-platform/</guid>
        <description>&lt;h2 id=&#34;support-tiers&#34;&gt;Support tiers&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;etcd runs on different platforms, but the guarantees it provides depends on a&#xA;platform&amp;rsquo;s support tier:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tier 1&lt;/strong&gt;: fully supported by &lt;a href=&#34;https://github.com/etcd-io/etcd/blob/main/OWNERS&#34;&gt;etcd maintainers&lt;/a&gt;; etcd is guaranteed to&#xA;pass all tests including functional and robustness tests.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tier 2&lt;/strong&gt;: etcd is guaranteed to pass integration and end-to-end tests but&#xA;not necessarily functional or robustness tests.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tier 3&lt;/strong&gt;: etcd is guaranteed to build, may be lightly tested (or not), and&#xA;so it should be considered &lt;em&gt;unstable&lt;/em&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;current-support&#34;&gt;Current support&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The following table lists currently supported platforms and their corresponding&#xA;etcd support tier:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Versioning</title>
        <link>https://pgsql.cc/etcd/op-guide/versioning/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/versioning/</guid>
        <description>&lt;p&gt;This document describes the versions supported by the etcd project.&lt;/p&gt;&#xA;&lt;h2 id=&#34;service-versioning-and-supported-versions&#34;&gt;Service versioning and supported versions&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;etcd versions are expressed as &lt;strong&gt;x.y.z&lt;/strong&gt;, where &lt;strong&gt;x&lt;/strong&gt; is the major version, &lt;strong&gt;y&lt;/strong&gt; is the minor version, and &lt;strong&gt;z&lt;/strong&gt; is the patch version, following &lt;a href=&#34;https://semver.org/&#34;&gt;Semantic Versioning&lt;/a&gt; terminology.&#xA;New minor versions may add additional features to the API.&lt;/p&gt;&#xA;&lt;p&gt;The etcd project maintains release branches for the current version and previous release. For example, when v3.5 is the current version, v3.4 is supported. When v3.6 is released, v3.4 goes out of support.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Data Corruption</title>
        <link>https://pgsql.cc/etcd/op-guide/data_corruption/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/op-guide/data_corruption/</guid>
        <description>&lt;p&gt;etcd has built in automated data corruption detection to prevent member state from diverging.&lt;/p&gt;&#xA;&lt;h2 id=&#34;enabling-data-corruption-detection&#34;&gt;Enabling data corruption detection&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Data corruption detection can be done using:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Initial check, enabled with &lt;code&gt;--experimental-initial-corrupt-check&lt;/code&gt; flag.&lt;/li&gt;&#xA;&lt;li&gt;Periodic check of:&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Compacted revision hash, enabled with &lt;code&gt;--experimental-compact-hash-check-enabled&lt;/code&gt; flag.&lt;/li&gt;&#xA;&lt;li&gt;Latest revision hash, enabled with &lt;code&gt;--experimental-corrupt-check-time&lt;/code&gt; flag.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Initial check will be executed during bootstrap of etcd member.&#xA;Member will compare its persistent state vs other members and exit if there is a mismatch.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Storage Memory Usage Benchmark</title>
        <link>https://pgsql.cc/etcd/benchmarks/etcd-storage-memory-benchmark/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/benchmarks/etcd-storage-memory-benchmark/</guid>
        <description>&lt;!---todo: link storage to storage design doc--&gt;&#xA;&lt;p&gt;Two components of etcd storage consume physical memory. The etcd process allocates an &lt;em&gt;in-memory index&lt;/em&gt; to speed key lookup. The process&amp;rsquo;s &lt;em&gt;page cache&lt;/em&gt;, managed by the operating system, stores recently-accessed data from disk for quick re-use.&lt;/p&gt;&#xA;&lt;p&gt;The in-memory index holds all the keys in a &lt;a href=&#34;https://en.wikipedia.org/wiki/B-tree&#34;&gt;B-tree&lt;/a&gt; data structure, along with pointers to the on-disk data (the values). Each key in the B-tree may contain multiple pointers, pointing to different versions of its values. The theoretical memory consumption of the in-memory index can hence be approximated with the formula:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Watch Memory Usage Benchmark</title>
        <link>https://pgsql.cc/etcd/benchmarks/etcd-3-watch-memory-benchmark/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/benchmarks/etcd-3-watch-memory-benchmark/</guid>
        <description>&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;The watch features are under active development, and their memory usage may change as that development progresses. We do not expect it to significantly increase beyond the figures stated below.&lt;/p&gt;&#xA;  &lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;A primary goal of etcd is supporting a very large number of watchers doing a massively large amount of watching. etcd aims to support O(10k) clients, O(100K) watch streams (O(10) streams per client) and O(10M) total watchings (O(100) watching per stream). The memory consumed by each individual watching accounts for the largest portion of etcd&amp;rsquo;s overall usage, and is therefore the focus of current and future optimizations.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmarking etcd v3</title>
        <link>https://pgsql.cc/etcd/benchmarks/etcd-3-demo-benchmarks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/benchmarks/etcd-3-demo-benchmarks/</guid>
        <description>&lt;h2 id=&#34;physical-machines&#34;&gt;Physical machines&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#xA;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#xA;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#xA;&lt;li&gt;2x CPUs&lt;/li&gt;&#xA;&lt;li&gt;etcd version 2.2.0&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;etcd-cluster&#34;&gt;etcd Cluster&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;1 etcd member running in v3 demo mode&lt;/p&gt;&#xA;&lt;h2 id=&#34;testing&#34;&gt;Testing&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use &lt;a href=&#34;https://github.com/etcd-io/etcd/tree/main/tools/benchmark&#34;&gt;etcd v3 benchmark tool&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;performance&#34;&gt;Performance&#xA;&lt;/h2&gt;&#xA;&lt;h3 id=&#34;reading-one-single-key&#34;&gt;reading one single key&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-table-scroll td-table-scroll--static&#34;&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;key size in bytes&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;number of clients&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;read QPS&lt;/th&gt;&#xA;      &lt;th scope=&#34;col&#34;&gt;90th Percentile Latency (ms)&lt;/th&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;256&lt;/td&gt;&#xA;      &lt;td&gt;1&lt;/td&gt;&#xA;      &lt;td&gt;2716&lt;/td&gt;&#xA;      &lt;td&gt;0.4&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;256&lt;/td&gt;&#xA;      &lt;td&gt;64&lt;/td&gt;&#xA;      &lt;td&gt;16623&lt;/td&gt;&#xA;      &lt;td&gt;6.1&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;    &lt;tr&gt;&#xA;      &lt;td&gt;256&lt;/td&gt;&#xA;      &lt;td&gt;256&lt;/td&gt;&#xA;      &lt;td&gt;16622&lt;/td&gt;&#xA;      &lt;td&gt;21.7&lt;/td&gt;&#xA;    &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;The performance is nearly the same as the one with empty server handler.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmarking etcd v2.2.0-rc-memory</title>
        <link>https://pgsql.cc/etcd/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/benchmarks/etcd-2-2-0-rc-memory-benchmarks/</guid>
        <description>&lt;h2 id=&#34;physical-machine&#34;&gt;Physical machine&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;GCE n1-standard-2 machine type&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#xA;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#xA;&lt;li&gt;7.5 GB memory&lt;/li&gt;&#xA;&lt;li&gt;2x CPUs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;etcd&#34;&gt;etcd&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-f055eb6b-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f055eb6b-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;etcd Version: 2.2.0-rc.0+git&#xA;Git SHA: 103cb5c&#xA;Go Version: go1.5&#xA;Go OS/Arch: linux/amd64&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;testing&#34;&gt;Testing&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Start 3-member etcd cluster, each of which uses 2 cores.&lt;/p&gt;&#xA;&lt;p&gt;The length of key name is always 64 bytes, which is a reasonable length of average key bytes.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmarking etcd v2.2.0-rc</title>
        <link>https://pgsql.cc/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/benchmarks/etcd-2-2-0-rc-benchmarks/</guid>
        <description>&lt;h2 id=&#34;physical-machine&#34;&gt;Physical machine&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#xA;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#xA;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#xA;&lt;li&gt;2x CPUs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;etcd-cluster&#34;&gt;etcd Cluster&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;3 etcd 2.2.0-rc members, each runs on a single machine.&lt;/p&gt;&#xA;&lt;p&gt;Detailed versions:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-fc7c0f3a-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-fc7c0f3a-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;etcd Version: 2.2.0-alpha.1+git&#xA;Git SHA: 59a5a7e&#xA;Go Version: go1.4.2&#xA;Go OS/Arch: linux/amd64&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;Also, we use 3 etcd 2.1.0 alpha-stage members to form cluster to get base performance. etcd&amp;rsquo;s commit head is at &lt;a href=&#34;https://github.com/etcd-io/etcd/commits/c7146bd5f2c73716091262edc638401bb8229144&#34;&gt;c7146bd5&lt;/a&gt;, which is the same as the one that we use in &lt;a href=&#34;https://pgsql.cc/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/&#34;&gt;etcd 2.1 benchmark&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmarking etcd v2.2.0</title>
        <link>https://pgsql.cc/etcd/benchmarks/etcd-2-2-0-benchmarks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/benchmarks/etcd-2-2-0-benchmarks/</guid>
        <description>&lt;h2 id=&#34;physical-machines&#34;&gt;Physical Machines&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1x dedicated local SSD mounted as etcd data directory&lt;/li&gt;&#xA;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#xA;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#xA;&lt;li&gt;2x CPUs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;etcd-cluster&#34;&gt;etcd Cluster&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;3 etcd 2.2.0 members, each runs on a single machine.&lt;/p&gt;&#xA;&lt;p&gt;Detailed versions:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-f108191c-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;&#34; data-td-line-count=&#34;4&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-f108191c-fence-0-viewport&#34; data-td-code-viewport&gt;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;etcd Version: 2.2.0&#xA;Git SHA: e4561dd&#xA;Go Version: go1.5&#xA;Go OS/Arch: linux/amd64&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;testing&#34;&gt;Testing&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Bootstrap another machine, outside of the etcd cluster, and run the &lt;a href=&#34;https://github.com/rakyll/hey&#34;&gt;&lt;code&gt;hey&lt;/code&gt; HTTP benchmark tool&lt;/a&gt; with a connection reuse patch to send requests to each etcd cluster member. See the &lt;a href=&#34;https://github.com/etcd-io/etcd/tree/v2.3.8/hack/benchmark&#34;&gt;benchmark instructions&lt;/a&gt; for the patch and the steps to reproduce our procedures.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Benchmarking etcd v2.1.0</title>
        <link>https://pgsql.cc/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/benchmarks/etcd-2-1-0-alpha-benchmarks/</guid>
        <description>&lt;h2 id=&#34;physical-machines&#34;&gt;Physical machines&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;GCE n1-highcpu-2 machine type&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;1x dedicated local SSD mounted under /var/lib/etcd&lt;/li&gt;&#xA;&lt;li&gt;1x dedicated slow disk for the OS&lt;/li&gt;&#xA;&lt;li&gt;1.8 GB memory&lt;/li&gt;&#xA;&lt;li&gt;2x CPUs&lt;/li&gt;&#xA;&lt;li&gt;etcd version 2.1.0 alpha&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;etcd-cluster&#34;&gt;etcd Cluster&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;3 etcd members, each runs on a single machine&lt;/p&gt;&#xA;&lt;h2 id=&#34;testing&#34;&gt;Testing&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Bootstrap another machine and use the &lt;a href=&#34;https://github.com/rakyll/hey&#34;&gt;hey HTTP benchmark tool&lt;/a&gt; to send requests to each etcd member. Check the &lt;a href=&#34;https://github.com/etcd-io/etcd/tree/main/hack/benchmark&#34;&gt;benchmark hacking guide&lt;/a&gt; for detailed instructions.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Downgrading etcd clusters and applications</title>
        <link>https://pgsql.cc/etcd/downgrades/downgrading-etcd/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/downgrades/downgrading-etcd/</guid>
        <description>&lt;p&gt;This section contains documents specific to downgrading etcd clusters and applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;downgrading-an-etcd-v3x-cluster&#34;&gt;Downgrading an etcd v3.x cluster&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/downgrades/downgrade_3_5/&#34;&gt;Downgrade etcd from 3.5 to 3.4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/downgrades/downgrade_3_6/&#34;&gt;Downgrade etcd from 3.6 to 3.5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/downgrades/downgrade_3_7/&#34;&gt;Downgrade etcd from 3.7 to 3.6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Upgrading etcd clusters and applications</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrading-etcd/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrading-etcd/</guid>
        <description>&lt;p&gt;This section contains documents specific to upgrading etcd clusters and applications.&lt;/p&gt;&#xA;&lt;h2 id=&#34;upgrade-policy&#34;&gt;Upgrade policy&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Before upgrading, note that etcd only supports the following two upgrade cases:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Patch upgrade:&lt;/strong&gt; Upgrading between patch releases within the same minor version (e.g. 3.7.0 - 3.7.1).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Minor upgrade:&lt;/strong&gt; Upgrading one minor version at a time (e.g. 3.6 - 3.7). Upgrades that skip a minor version are not supported and will likely fail. Update to the most recent patch version before upgrading to the next minor version.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upgrading-an-etcd-v3x-cluster&#34;&gt;Upgrading an etcd v3.x cluster&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_1/&#34;&gt;Upgrade etcd from 3.0 to 3.1&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_2/&#34;&gt;Upgrade etcd from 3.1 to 3.2&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_3/&#34;&gt;Upgrade etcd from 3.2 to 3.3&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_4/&#34;&gt;Upgrade etcd from 3.3 to 3.4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_5/&#34;&gt;Upgrade etcd from 3.4 to 3.5&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_6/&#34;&gt;Upgrade etcd from 3.5 to 3.6&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_7/&#34;&gt;Upgrade etcd from 3.6 to 3.7&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;upgrading-from-etcd-v23&#34;&gt;Upgrading from etcd v2.3&#xA;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_0/&#34;&gt;Upgrade a v2.3 cluster to v3.0&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
      </item>
    <item>
        <title>Downgrade etcd from v3.7 to v3.6</title>
        <link>https://pgsql.cc/etcd/downgrades/downgrade_3_7/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/downgrades/downgrade_3_7/</guid>
        <description>&lt;p&gt;In the general case, downgrading from etcd v3.7 to v3.6 can be a zero-downtime, rolling downgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.7 processes and replace them with etcd v3.6 processes&lt;/li&gt;&#xA;&lt;li&gt;after enabling the downgrade, new features in v3.7 are no longer available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/downgrades/downgrade_3_7/#downgrade-procedure&#34;&gt;starting a downgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;downgrade-checklists&#34;&gt;Downgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Highlighted differences between v3.7 and v3.6:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from v3.5 to v3.6</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_6/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_6/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd v3.5 to v3.6 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.5 processes and replace them with etcd v3.6 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.6 processes, new features in v3.6 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_6/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;update-35&#34;&gt;Update 3.5&#xA;&lt;/h4&gt;&#xA;&lt;div class=&#34;td-callout td-callout--important&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Important&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Before upgrading to 3.6, make sure that &lt;a href=&#34;https://etcd.io/blog/2026/july-patch-release/&#34;&gt;all of your 3.5 members are updated to 3.5.32 or later&lt;/a&gt;. Patch releases 3.5.24 through 3.5.26 fix several potential upgrade blockers; &lt;a href=&#34;https://etcd.io/blog/2026/july-patch-release/&#34;&gt;3.5.32&lt;/a&gt; adds &lt;code&gt;--v2-deprecation=write-only-skip-check&lt;/code&gt; and extends &lt;code&gt;etcdutl check v2store&lt;/code&gt; to inspect WAL records as well as the v2 snapshot.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Downgrade etcd from 3.5 to 3.4</title>
        <link>https://pgsql.cc/etcd/downgrades/downgrade_3_5/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/downgrades/downgrade_3_5/</guid>
        <description>&lt;p&gt;In the general case, downgrading from etcd 3.5 to 3.4 can be a zero-downtime, rolling downgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd 3.5 processes and replace them with etcd 3.4 processes&lt;/li&gt;&#xA;&lt;li&gt;after starting any 3.4 processes, new features in 3.5 are not longer available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/downgrades/downgrade_3_5/#downgrade-procedure&#34;&gt;starting a downgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;downgrade-checklists&#34;&gt;Downgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;content/enhttps://etcd.io/docs/v3.5/op-guide/authentication/rbac.md&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;If your cluster enables auth, rolling downgrade from 3.5 isn&amp;rsquo;t supported because 3.5 &lt;a href=&#34;https://github.com/etcd-io/etcd/pull/11943&#34;&gt;changes a format of WAL entries related to auth&lt;/a&gt;. You can follow the &lt;a href=&#34;https://pgsql.cc/etcd/op-guide/authentication/rbac/&#34;&gt;authentification instructions&lt;/a&gt; to disable auth, and delete all users first.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Downgrade etcd from v3.6 to v3.5</title>
        <link>https://pgsql.cc/etcd/downgrades/downgrade_3_6/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/downgrades/downgrade_3_6/</guid>
        <description>&lt;p&gt;In the general case, downgrading from etcd v3.6 to v3.5 can be a zero-downtime, rolling downgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.6 processes and replace them with etcd v3.5 processes&lt;/li&gt;&#xA;&lt;li&gt;after enabling the downgrade, new features in v3.6 are no longer available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/downgrades/downgrade_3_6/#downgrade-procedure&#34;&gt;starting a downgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;downgrade-checklists&#34;&gt;Downgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;p&gt;Highlighted breaking changes from v3.6 to v3.5:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from 3.4 to 3.5</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_5/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_5/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd 3.4 to 3.5 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.4 processes and replace them with etcd v3.5 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.5 processes, new features in v3.5 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_5/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;When &lt;a href=&#34;https://github.com/etcd-io/etcd/issues/9480&#34;&gt;migrating from v2 with no v3 data&lt;/a&gt;, etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 &lt;code&gt;ETCD_DATA_DIR/member/snap/db&lt;/code&gt; file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. &lt;code&gt;db&lt;/code&gt; file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from 3.3 to 3.4</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_4/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_4/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd 3.3 to 3.4 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.3 processes and replace them with etcd v3.4 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.4 processes, new features in v3.4 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_4/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;When &lt;a href=&#34;https://github.com/etcd-io/etcd/issues/9480&#34;&gt;migrating from v2 with no v3 data&lt;/a&gt;, etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 &lt;code&gt;ETCD_DATA_DIR/member/snap/db&lt;/code&gt; file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. &lt;code&gt;db&lt;/code&gt; file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from v3.6 to v3.7</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_7/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_7/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd v3.6 to v3.7 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.6 processes and replace them with etcd v3.7 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.7 processes, new features in v3.7 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_7/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;h4 id=&#34;update-36&#34;&gt;Update 3.6&#xA;&lt;/h4&gt;&#xA;&lt;div class=&#34;td-callout td-callout--important&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Important&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;Before upgrading to 3.7, make sure that all of your 3.6 members are updated to 3.6.11 or later. Earlier 3.6 patch releases may not be compatible with a rolling upgrade to 3.7.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from 3.2 to 3.3</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_3/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_3/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd 3.2 to 3.3 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.2 processes and replace them with etcd v3.3 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.3 processes, new features in v3.3 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_3/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;When &lt;a href=&#34;https://github.com/etcd-io/etcd/issues/9480&#34;&gt;migrating from v2 with no v3 data&lt;/a&gt;, etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 &lt;code&gt;ETCD_DATA_DIR/member/snap/db&lt;/code&gt; file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. &lt;code&gt;db&lt;/code&gt; file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from 3.1 to 3.2</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_2/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_2/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd 3.1 to 3.2 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.1 processes and replace them with etcd v3.2 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.2 processes, new features in v3.2 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_2/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;When &lt;a href=&#34;https://github.com/etcd-io/etcd/issues/9480&#34;&gt;migrating from v2 with no v3 data&lt;/a&gt;, etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 &lt;code&gt;ETCD_DATA_DIR/member/snap/db&lt;/code&gt; file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. &lt;code&gt;db&lt;/code&gt; file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from 3.0 to 3.1</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_1/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_1/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd 3.0 to 3.1 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v3.0 processes and replace them with etcd v3.1 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.1 processes, new features in v3.1 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_1/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;When &lt;a href=&#34;https://github.com/etcd-io/etcd/issues/9480&#34;&gt;migrating from v2 with no v3 data&lt;/a&gt;, etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 &lt;code&gt;ETCD_DATA_DIR/member/snap/db&lt;/code&gt; file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. &lt;code&gt;db&lt;/code&gt; file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Upgrade etcd from 2.3 to 3.0</title>
        <link>https://pgsql.cc/etcd/upgrades/upgrade_3_0/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/upgrades/upgrade_3_0/</guid>
        <description>&lt;p&gt;In the general case, upgrading from etcd 2.3 to 3.0 can be a zero-downtime, rolling upgrade:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;one by one, stop the etcd v2.3 processes and replace them with etcd v3.0 processes&lt;/li&gt;&#xA;&lt;li&gt;after running all v3.0 processes, new features in v3.0 are available to the cluster&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Before &lt;a href=&#34;https://pgsql.cc/etcd/upgrades/upgrade_3_0/#upgrade-procedure&#34;&gt;starting an upgrade&lt;/a&gt;, read through the rest of this guide to prepare.&lt;/p&gt;&#xA;&lt;h3 id=&#34;upgrade-checklists&#34;&gt;Upgrade checklists&#xA;&lt;/h3&gt;&#xA;&lt;div class=&#34;td-callout td-callout--warning&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-triangle-exclamation&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Warning&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;When &lt;a href=&#34;https://github.com/etcd-io/etcd/issues/9480&#34;&gt;migrating from v2 with no v3 data&lt;/a&gt;, etcd server v3.2+ panics when etcd restores from existing snapshots but no v3 &lt;code&gt;ETCD_DATA_DIR/member/snap/db&lt;/code&gt; file. This happens when the server had migrated from v2 with no previous v3 data. This also prevents accidental v3 data loss (e.g. &lt;code&gt;db&lt;/code&gt; file might have been moved). etcd requires that post v3 migration can only happen with v3 data. Do not upgrade to newer v3 versions until v3.0 server contains v3 data.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Issue triage guidelines</title>
        <link>https://pgsql.cc/etcd/triage/issues/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/triage/issues/</guid>
        <description>&lt;h2 id=&#34;purpose&#34;&gt;Purpose&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Speed up issue management.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;etcd&lt;/code&gt; issues are listed at &lt;a href=&#34;https://github.com/etcd-io/etcd/issues&#34;&gt;https://github.com/etcd-io/etcd/issues&lt;/a&gt;&#xA;and are identified with labels. For example, an issue that is identified&#xA;as a bug will eventually be set to label &lt;code&gt;area/bug &lt;/code&gt;. New issues will&#xA;start out without any labels, but typically &lt;code&gt;etcd&lt;/code&gt; maintainers and active contributors&#xA;add labels based on their findings. The detailed list of labels can be found at&#xA;&lt;a href=&#34;https://github.com/kubernetes/kubernetes/labels&#34;&gt;https://github.com/kubernetes/kubernetes/labels&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Following are few predetermined searches on issues for convenience:&lt;/p&gt;</description>
      </item>
    <item>
        <title>PR management</title>
        <link>https://pgsql.cc/etcd/triage/prs/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/etcd/triage/prs/</guid>
        <description>&lt;h2 id=&#34;purpose&#34;&gt;Purpose&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Speed up PR management.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;code&gt;etcd&lt;/code&gt; PRs are listed at &lt;a href=&#34;https://github.com/etcd-io/etcd/pulls&#34;&gt;https://github.com/etcd-io/etcd/pulls&lt;/a&gt;&#xA;A PR can have various labels, milestone, reviewer etc. The detailed list of labels can be found at&#xA;&lt;a href=&#34;https://github.com/kubernetes/kubernetes/labels&#34;&gt;https://github.com/kubernetes/kubernetes/labels&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Following are few example searches on PR for convenience:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/etcd-io/etcd/pulls?utf8=%E2%9C%93&amp;amp;q=is%3Apr&amp;#43;is%3Aopen&amp;#43;milestone%3Aetcd-v3.4&#34;&gt;Open PRS for milestone etcd-v3.4&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/etcd-io/etcd/labels/Investigating&#34;&gt;PRs under investigation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;scope&#34;&gt;Scope&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;These guidelines serves as a primary document for managing PRs in &lt;code&gt;etcd&lt;/code&gt;. Everyone is welcome to help manage PRs but the work and responsibilities discussed in this document is created with &lt;code&gt;etcd&lt;/code&gt; maintainers and active contributors in mind.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Attribution and Licensing</title>
        <link>https://pgsql.cc/attribution/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/attribution/</guid>
        <description>&lt;p&gt;pgsql.cc republishes documentation written by six upstream projects. Every documentation page&#xA;carries a one-line credit at the end naming the work it is derived from, its copyright holder,&#xA;its licence, and a link back to the section of this page that covers it.&lt;/p&gt;&#xA;&lt;p&gt;This page is that record. It states what was imported, when, from which pinned revision, under&#xA;which licence, and where the complete upstream notice is retained.&lt;/p&gt;&#xA;&lt;div class=&#34;td-callout td-callout--note&#34; role=&#34;note&#34;&gt;&#xA;  &lt;div class=&#34;td-callout__title&#34;&gt;&lt;i class=&#34;td-callout__icon fa-solid fa-circle-info&#34; aria-hidden=&#34;true&#34;&gt;&lt;/i&gt;&lt;span class=&#34;td-callout__label&#34;&gt;Note&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&#xA;&lt;p&gt;pgsql.cc is an independent community documentation project. It is not affiliated with, endorsed&#xA;by, or an official publication of any of the projects below, nor of the PostgreSQL Global&#xA;Development Group.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Search</title>
        <link>https://pgsql.cc/search/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://pgsql.cc/search/</guid>
        <description></description>
      </item>
    
  </channel>
</rss>
