<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Admin on PIGSTY</title>
    <link>https://v27.pgsty.pro/categories/admin/</link>
    <description>Recent content in Admin on PIGSTY</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    
    
    
      <lastBuildDate>Sat, 21 May 2022 00:00:00 +0000</lastBuildDate>
    
    
      <atom:link href="https://v27.pgsty.pro/categories/admin/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
        <title>Nginx: Expose Web Service</title>
        <link>https://v27.pgsty.pro/docs/tasks/nginx/</link>
        <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/tasks/nginx/</guid>
        <description>&lt;p&gt;Pigsty will install &lt;a href=&#34;https://v27.pgsty.pro/docs/infra/#nginx&#34;&gt;&lt;strong&gt;Nginx&lt;/strong&gt;&lt;/a&gt; on &lt;a href=&#34;https://v27.pgsty.pro/docs/node/#infra%e8%8a%82%e7%82%b9&#34;&gt;&lt;strong&gt;INFRA Node&lt;/strong&gt;&lt;/a&gt;, as a Web service proxy.&lt;/p&gt;&#xA;&lt;p&gt;Nginx is the access entry for all WebUI services of Pigsty, and it defaults to the use the &lt;code&gt;80/443&lt;/code&gt; port on INFRA nodes.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty provides a global parameter &lt;a href=&#34;https://v27.pgsty.pro/docs/reference/param/#infra_portal&#34;&gt;&lt;code&gt;infra_portal&lt;/code&gt;&lt;/a&gt; to configure Nginx proxy rules and corresponding upstream services.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-ac192e8f-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;yaml&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-ac192e8f-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;infra_portal&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;c&#34;&gt;# domain names and upstream servers&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;home         &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;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;domain&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;h.pigsty }&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;grafana      &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;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;domain&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;nt&#34;&gt;g.pigsty ,endpoint&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;s2&#34;&gt;&amp;#34;${admin_ip}:3000&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;, websocket&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;kc&#34;&gt;true&lt;/span&gt;&lt;span class=&#34;w&#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;prometheus   &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;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;domain&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;nt&#34;&gt;p.pigsty ,endpoint&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;s2&#34;&gt;&amp;#34;${admin_ip}:9090&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#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;alertmanager &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;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;domain&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;nt&#34;&gt;a.pigsty ,endpoint&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;s2&#34;&gt;&amp;#34;${admin_ip}:9093&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#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;blackbox     &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;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;endpoint&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;s2&#34;&gt;&amp;#34;${admin_ip}:9115&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#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;loki         &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;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;endpoint&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;s2&#34;&gt;&amp;#34;${admin_ip}:3100&amp;#34;&lt;/span&gt;&lt;span class=&#34;w&#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;c&#34;&gt;#minio        : { domain: sss.pigsty  ,endpoint: &amp;#34;${admin_ip}:9001&amp;#34; ,scheme: https ,websocket: true }&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;If you access Nginx directly through the ip:port, it will route to &lt;code&gt;h.pigsty&lt;/code&gt;, which is the Pigsty homepage (&lt;code&gt;/www/&lt;/code&gt; directory, served as software repo).&lt;/p&gt;</description>
      </item>
    <item>
        <title>Compatibility</title>
        <link>https://v27.pgsty.pro/docs/reference/compatibility/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/reference/compatibility/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty recommends using &lt;strong&gt;Linux&lt;/strong&gt; kernel, &lt;strong&gt;amd64&lt;/strong&gt; arch, and &lt;strong&gt;RockyLinux 8.9&lt;/strong&gt;, &lt;strong&gt;Debian 12&lt;/strong&gt; or &lt;strong&gt;Ubuntu 22.04&lt;/strong&gt; as base OS.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/reference/compatibility/#kernel--arch-support&#34;&gt;&lt;strong&gt;Kernel Architecture Compatibility&lt;/strong&gt;&lt;/a&gt;: &lt;code&gt;Linux&lt;/code&gt; kernel, &lt;code&gt;amd64&lt;/code&gt; architecture (&lt;code&gt;x86_64&lt;/code&gt;)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/reference/compatibility/#el-distribution-support&#34;&gt;&lt;strong&gt;EL Distribution Support&lt;/strong&gt;&lt;/a&gt;: &lt;strong&gt;EL7&lt;/strong&gt;, &lt;strong&gt;EL8&lt;/strong&gt;, &lt;strong&gt;EL9&lt;/strong&gt;; (RHEL, Rocky, CentOS, Alma, Oracle, Anolis,&amp;hellip;)&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/reference/compatibility/#debian-distribution-support&#34;&gt;&lt;strong&gt;Debian Distribution Support&lt;/strong&gt;&lt;/a&gt;: &lt;strong&gt;Ubuntu 22.04&lt;/strong&gt; &lt;code&gt;jammy&lt;/code&gt;, &lt;strong&gt;20.04&lt;/strong&gt; &lt;code&gt;focal&lt;/code&gt;; &lt;strong&gt;Debian 12&lt;/strong&gt; &lt;code&gt;bookworm&lt;/code&gt; and &lt;strong&gt;11&lt;/strong&gt; &lt;code&gt;bullseye&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Pigsty does not use any virtualization or containerization technologies, running directly on the bare OS. Supported operating systems include EL 7/8/9 (RHEL, Rocky, CentOS, Alma, Oracle, Anolis,&amp;hellip;),&#xA;Ubuntu 20.04 / 22.04 &amp;amp; Debian 11/12. &lt;strong&gt;EL&lt;/strong&gt; is our long-term supported OS, while support for Ubuntu/Debian systems was introduced in the recent v2.5 version.&#xA;The main difference between EL and Debian distributions is the significant variation in package names, as well as the default availability of PostgreSQL &lt;a href=&#34;https://v27.pgsty.pro/docs/reference/extension/&#34;&gt;&lt;strong&gt;extensions&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Getting Started</title>
        <link>https://v27.pgsty.pro/docs/setup/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/setup/</guid>
        <description></description>
      </item>
    <item>
        <title>Docker: Container Support &amp; Proxy</title>
        <link>https://v27.pgsty.pro/docs/tasks/docker/</link>
        <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/tasks/docker/</guid>
        <description>&lt;p&gt;Pigsty has a &lt;a href=&#34;https://v27.pgsty.pro/zh/docs/docker&#34;&gt;&lt;strong&gt;&lt;code&gt;DOCKER&lt;/code&gt;&lt;/strong&gt;&lt;/a&gt; module, which provides a set of playbooks to install and manage Docker on the target nodes.&lt;/p&gt;&#xA;&lt;p&gt;This document will guide you through how to enable Docker support in Pigsty, and how to configure a proxy server for DockerHub.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;install-docker&#34;&gt;Install Docker&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;To install docker on specified nodes, you can use the &lt;a href=&#34;https://v27.pgsty.pro/docs/docker/#dockeryml&#34;&gt;&lt;code&gt;docker.yml&lt;/code&gt;&lt;/a&gt; playbook:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-44eb9249-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-44eb9249-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;./docker.yml -l &amp;lt;ip&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;group&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;cls&amp;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;That&amp;rsquo;s it.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Preparation</title>
        <link>https://v27.pgsty.pro/docs/setup/prepare/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/setup/prepare/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;node&#34;&gt;Node&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty supports the &lt;code&gt;Linux&lt;/code&gt; kernel and &lt;code&gt;x86_64/amd64&lt;/code&gt; arch, applicable to any node.&lt;/p&gt;&#xA;&lt;p&gt;A &amp;ldquo;node&amp;rdquo; refers to a resource that is SSH accessible and offers a bare OS environment, such as a physical machine, a virtual machine, or an OS container equipped with &lt;code&gt;systemd&lt;/code&gt; and &lt;code&gt;sshd&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Deploying Pigsty requires at least 1 node. The minimum spec requirement is &lt;code&gt;1C1G&lt;/code&gt;, but it is recommended to use at least &lt;code&gt;2C4G&lt;/code&gt;, with no upper limit: parameters will automatically optimize and adapt.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Use PostgreSQL as Grafana Backend</title>
        <link>https://v27.pgsty.pro/docs/tasks/grafana/</link>
        <pubDate>Tue, 18 May 2021 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/tasks/grafana/</guid>
        <description>&lt;p&gt;Grafana uses SQLite for its metadata by default. Pigsty v2.7 can provision a&#xA;PostgreSQL user and database for Grafana, after which Grafana can be pointed at&#xA;that database manually.&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;span class=&#34;td-callout__label&#34;&gt;v2.7 scope&lt;/span&gt;&lt;/div&gt;&#xA;  &lt;div class=&#34;td-callout__body&#34;&gt;&lt;p&gt;The old &lt;code&gt;grafana_database&lt;/code&gt; and &lt;code&gt;grafana_pgurl&lt;/code&gt; Pigsty parameters were already&#xA;obsolete in v2.7.0. The release&amp;rsquo;s&#xA;&lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/roles/infra/templates/grafana/grafana.ini.j2&#34;&gt;&lt;code&gt;grafana.ini.j2&lt;/code&gt;&lt;/a&gt;&#xA;does not manage a PostgreSQL backend URL, so re-running the &lt;code&gt;grafana_config&lt;/code&gt;&#xA;task can overwrite a manual edit. Keep the change under your own configuration&#xA;management.&lt;/p&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;h2 id=&#34;provision-the-database&#34;&gt;Provision the database&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Add the user and database to a PGSQL cluster definition:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Use PostgreSQL as Ansible Inventory CMDB</title>
        <link>https://v27.pgsty.pro/docs/tasks/ansible/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/tasks/ansible/</guid>
        <description>&lt;p&gt;Pigsty v2.7 normally reads its Ansible inventory from &lt;code&gt;pigsty.yml&lt;/code&gt;. The release&#xA;also ships three scripts that can load that inventory into the &lt;code&gt;pigsty&lt;/code&gt; schema&#xA;of the &lt;code&gt;meta&lt;/code&gt; database and switch Ansible to a generated dynamic inventory.&lt;/p&gt;&#xA;&lt;p&gt;The implementation in this page is tied to the v2.7.0 objects&#xA;&lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/bin/inventory_load&#34;&gt;&lt;code&gt;bin/inventory_load&lt;/code&gt;&lt;/a&gt;,&#xA;&lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/bin/inventory_cmdb&#34;&gt;&lt;code&gt;bin/inventory_cmdb&lt;/code&gt;&lt;/a&gt;,&#xA;and &lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/bin/inventory_conf&#34;&gt;&lt;code&gt;bin/inventory_conf&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;The CMDB schema is created from&#xA;&lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/files/cmdb.sql&#34;&gt;&lt;code&gt;files/cmdb.sql&lt;/code&gt;&lt;/a&gt;&#xA;when the default &lt;code&gt;pg-meta&lt;/code&gt; cluster is provisioned. Complete &lt;code&gt;infra.yml&lt;/code&gt; and the&#xA;&lt;code&gt;pg-meta&lt;/code&gt; database initialization first, then verify that the &lt;code&gt;meta&lt;/code&gt; service is&#xA;reachable.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Planning</title>
        <link>https://v27.pgsty.pro/docs/setup/planning/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/setup/planning/</guid>
        <description>&lt;p&gt;Pigsty v2.7 planning starts by selecting a deployment topology and preparing the matching hosts, operating systems, network, and administrator access.&lt;/p&gt;&#xA;&lt;h2 id=&#34;planning-checklist&#34;&gt;Planning Checklist&#xA;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Choose a single-node, monitoring-only, or highly available topology from the &lt;a href=&#34;https://v27.pgsty.pro/docs/setup/provision/&#34;&gt;provisioning guide&lt;/a&gt; and configuration examples.&lt;/li&gt;&#xA;&lt;li&gt;Verify CPU architecture, operating-system release, storage, and network requirements in &lt;a href=&#34;https://v27.pgsty.pro/docs/setup/prepare/&#34;&gt;Prepare&lt;/a&gt; and the &lt;a href=&#34;https://v27.pgsty.pro/docs/reference/compatibility/&#34;&gt;compatibility matrix&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Reserve stable node addresses, hostnames, required ports, and passwordless administrator SSH/sudo access before installation.&lt;/li&gt;&#xA;&lt;li&gt;Decide between online and &lt;a href=&#34;https://v27.pgsty.pro/docs/setup/offline/&#34;&gt;offline installation&lt;/a&gt; and prepare the corresponding software source or offline package.&lt;/li&gt;&#xA;&lt;li&gt;Review the inventory in &lt;a href=&#34;https://v27.pgsty.pro/docs/setup/config/&#34;&gt;Configuration&lt;/a&gt; and the &lt;a href=&#34;https://v27.pgsty.pro/docs/setup/security/&#34;&gt;security checklist&lt;/a&gt; before running playbooks.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;The exact cluster, user, database, service, and backup settings remain in the linked v2.7 pages; this page is only the historical planning entry point.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Bind a L2 VIP to Node Cluster with Keepalived</title>
        <link>https://v27.pgsty.pro/docs/tasks/node-vip/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/tasks/node-vip/</guid>
        <description>&lt;p&gt;You can bind an optional L2 VIP on a node cluster with &lt;a href=&#34;https://v27.pgsty.pro/docs/reference/param/#vip_enabled&#34;&gt;&lt;code&gt;vip_enabled&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-6458aaf8-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;10&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-6458aaf8-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;proxy:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  hosts:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    10.10.10.29: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; nodename: proxy-1 &lt;span class=&#34;o&#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;    10.10.10.30: &lt;span class=&#34;o&#34;&gt;{&lt;/span&gt; nodename: proxy-2 &lt;span class=&#34;o&#34;&gt;}&lt;/span&gt; &lt;span class=&#34;c1&#34;&gt;# , vip_role: master }&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  vars:&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    node_cluster: proxy&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    vip_enabled: &lt;span class=&#34;nb&#34;&gt;true&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    vip_vrid: &lt;span class=&#34;m&#34;&gt;128&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    vip_address: 10.10.10.99&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    vip_interface: eth1&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-code td-code--untitled&#34; id=&#34;td-code-6458aaf8-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-6458aaf8-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;./node.yml -l proxy -t node_vip     &lt;span class=&#34;c1&#34;&gt;# enable for the first time&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./node.yml -l proxy -t vip_refresh  &lt;span class=&#34;c1&#34;&gt;# refresh vip config (e.g. designated master)&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>Administration</title>
        <link>https://v27.pgsty.pro/docs/pgsql/admin/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/pgsql/admin/</guid>
        <description>&lt;hr&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;How to maintain an existing PostgreSQL cluster with Pigsty?&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Here are some SOP for common pgsql admin tasks&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Case 1:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#create-cluster&#34;&gt;Create Cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 2:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#create-user&#34;&gt;Create User&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 3:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#create-database&#34;&gt;Create Database&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 4:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#reload-service&#34;&gt;Reload Service&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 5:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#reload-hbarule&#34;&gt;Reload HBARule&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 6:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#config-cluster&#34;&gt;Config Cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 7:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#append-replica&#34;&gt;Append Replica&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 8:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#remove-replica&#34;&gt;Remove Replica&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 9:  &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#remove-cluster&#34;&gt;Remove Cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 10: &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#switchover&#34;&gt;Switchover&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 11: &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#backup-cluster&#34;&gt;Backup Cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 12: &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#restore-cluster&#34;&gt;Restore Cluster&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 13: &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#adding-packages&#34;&gt;Adding Packages&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 14: &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#install-extension&#34;&gt;Install Extension&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 15: &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#minor-upgrade&#34;&gt;Minor Upgrade&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Case 16: &lt;a href=&#34;https://v27.pgsty.pro/docs/pgsql/admin/#major-upgrade&#34;&gt;Major Upgrade&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;cheatsheet&#34;&gt;Cheatsheet&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;PGSQL playbooks and shortcuts:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Bind a L2 VIP to PostgreSQL Primary with VIP-Manager</title>
        <link>https://v27.pgsty.pro/docs/tasks/pg-vip/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/tasks/pg-vip/</guid>
        <description>&lt;p&gt;You can define an &lt;strong&gt;OPTIONAL&lt;/strong&gt; L2 VIP on a PostgreSQL cluster, provided that all nodes in the cluster are in the same L2 network.&lt;/p&gt;&#xA;&lt;p&gt;This VIP works on Master-Backup mode and always points to the node where the primary instance of the database cluster is located.&lt;/p&gt;&#xA;&lt;p&gt;This VIP is managed by the &lt;a href=&#34;https://github.com/cybertec-postgresql/vip-manager&#34;&gt;VIP-Manager&lt;/a&gt;, which reads the Leader Key written by Patroni from DCS (etcd) to determine whether it is the master.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Backup &amp; PITR</title>
        <link>https://v27.pgsty.pro/docs/pgsql/pitr/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/pgsql/pitr/</guid>
        <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Pigsty uses &lt;a href=&#34;https://pgbackrest.org/&#34;&gt;pgBackRest&lt;/a&gt; for PITR backup &amp;amp; restore.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;In the case of a hardware failure, a physical replica failover could be the best choice. Whereas for data corruption scenarios (whether machine or human errors), Point-in-Time Recovery (PITR) is often more appropriate.&lt;/p&gt;&#xA;&lt;h2 id=&#34;backup&#34;&gt;Backup&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Use the following command to perform the &lt;a href=&#34;https://pgbackrest.org/command.html#command-backup&#34;&gt;backup&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-b77f9ef0-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;8&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-b77f9ef0-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;&lt;span class=&#34;c1&#34;&gt;# stanza name = {{ pg_cluster }} by default&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pgbackrest --stanza&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;stanza&lt;/span&gt;&lt;span class=&#34;si&#34;&gt;}&lt;/span&gt; --type&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;full&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;diff&lt;span class=&#34;p&#34;&gt;|&lt;/span&gt;incr backup&#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;# you can also use the following command in pigsty (/pg/bin/pg-backup)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg-backup       &lt;span class=&#34;c1&#34;&gt;# make a backup, incr, or full backup if necessary&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg-backup full  &lt;span class=&#34;c1&#34;&gt;# make a full backup&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg-backup diff  &lt;span class=&#34;c1&#34;&gt;# make a differential backup&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pg-backup incr  &lt;span class=&#34;c1&#34;&gt;# make a incremental backup&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;Use the following command to print backup info:&lt;/p&gt;</description>
      </item>
    <item>
        <title>Migration</title>
        <link>https://v27.pgsty.pro/docs/pgsql/migration/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/pgsql/migration/</guid>
        <description>&lt;p&gt;Pigsty has a built-in playbook &lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/pgsql-migration.yml&#34;&gt;&lt;code&gt;pgsql-migration.yml&lt;/code&gt;&lt;/a&gt; to perform online database migration based on logical replication.&lt;/p&gt;&#xA;&lt;p&gt;With proper automation, the downtime could be minimized to several seconds. But beware that logical replication requires PostgreSQL 10+ to work. You can still use the facility here and use a pg_dump | psql instead of logical replication.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;define-a-migration-task&#34;&gt;Define a Migration Task&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;You have to create a migration task definition file to use this playbook.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Point-in-Time Recovery</title>
        <link>https://v27.pgsty.pro/docs/concept/pitr/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/concept/pitr/</guid>
        <description>&lt;hr&gt;&#xA;&lt;h2 id=&#34;overview&#34;&gt;Overview&#xA;&lt;/h2&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;You can roll back your cluster to any point in time, avoiding data loss caused by software defects and human errors.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Pigsty&amp;rsquo;s PostgreSQL clusters come with an automatically configured Point in Time Recovery (PITR) solution, based on the backup component &lt;a href=&#34;https://pgbackrest.org/&#34;&gt;&lt;strong&gt;pgBackRest&lt;/strong&gt;&lt;/a&gt; and the optional object storage repository &lt;a href=&#34;https://min.io/&#34;&gt;&lt;strong&gt;MinIO&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://v27.pgsty.pro/docs/concept/ha/&#34;&gt;&lt;strong&gt;High Availability solutions&lt;/strong&gt;&lt;/a&gt; can address hardware failures, but they are powerless against data deletions/overwrites/deletions caused by software defects and human errors. For such scenarios, Pigsty offers an out-of-the-box &lt;strong&gt;Point in Time Recovery&lt;/strong&gt; (PITR) capability, enabled by default without any additional configuration.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Provisioning</title>
        <link>https://v27.pgsty.pro/docs/setup/provision/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/setup/provision/</guid>
        <description>&lt;p&gt;Pigsty runs on nodes, which are Bare Metals or Virtual Machines. You can prepare them manually, or using terraform &amp;amp; vagrant for provisioning.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;sandbox&#34;&gt;Sandbox&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Pigsty has a sandbox, which is a 4-node deployment with fixed IP addresses and other identifiers.&#xA;Check &lt;a href=&#34;https://github.com/Vonng/pigsty/blob/v2.7.0/files/pigsty/demo.yml&#34;&gt;&lt;code&gt;demo.yml&lt;/code&gt;&lt;/a&gt; for details.&lt;/p&gt;&#xA;&lt;p&gt;The sandbox consists of 4 nodes with fixed IP addresses: &lt;code&gt;10.10.10.10&lt;/code&gt;, &lt;code&gt;10.10.10.11&lt;/code&gt;, &lt;code&gt;10.10.10.12&lt;/code&gt;, &lt;code&gt;10.10.10.13&lt;/code&gt;.&lt;/p&gt;&#xA;&lt;p&gt;There&amp;rsquo;s a primary singleton PostgreSQL cluster: &lt;code&gt;pg-meta&lt;/code&gt; on the &lt;code&gt;meta&lt;/code&gt; node, which can be used alone if you don&amp;rsquo;t care about PostgreSQL high availability.&lt;/p&gt;</description>
      </item>
    <item>
        <title>Services &amp; Access</title>
        <link>https://v27.pgsty.pro/docs/concept/svc/</link>
        <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/concept/svc/</guid>
        <description>&lt;h2 id=&#34;personal-user&#34;&gt;Personal User&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Service is meaningless to personal users. You can access the database with raw IP address or whatever method you like.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-c49e3af3-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-c49e3af3-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;psql postgres://dbuser_dba:DBUser.DBA@10.10.10.10/meta     &lt;span class=&#34;c1&#34;&gt;# dbsu direct connect&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;psql postgres://dbuser_meta:DBUser.Meta@10.10.10.10/meta   &lt;span class=&#34;c1&#34;&gt;# default business admin user&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;psql postgres://dbuser_view:DBUser.View@pg-meta/meta       &lt;span class=&#34;c1&#34;&gt;# default read-only user&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;hr&gt;&#xA;&lt;h2 id=&#34;service-overview&#34;&gt;Service Overview&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;We utilize a PostgreSQL database &lt;strong&gt;cluster&lt;/strong&gt; based on replication in real-world production environments. Within the cluster, only one instance is the leader (primary) that can accept writes. Other instances (replicas) continuously fetch WAL from the leader to stay synchronized. Additionally, replicas can handle read-only queries and offload the primary in read-heavy, write-light scenarios. Thus, distinguishing between write and read-only requests is a common practice.&lt;/p&gt;</description>
      </item>
    <item>
        <title>ByteBase: PG Schema Migration</title>
        <link>https://v27.pgsty.pro/docs/software/bytebase/</link>
        <pubDate>Fri, 20 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/bytebase/</guid>
        <description>&lt;h2 id=&#34;bytebase&#34;&gt;ByteBase&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://bytebase.com/&#34;&gt;ByteBase&lt;/a&gt; is a database schema change management tool, which is a tool for database schema changes. The following command will start a ByteBase on the meta node &lt;code&gt;8887&lt;/code&gt; port by default.&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-37c25733-fence-0&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-37c25733-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;mkdir -p /data/bytebase/data&lt;span class=&#34;p&#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;docker run --init --name bytebase --restart always --detach --publish 8887:8887 --volume /data/bytebase/data:/var/opt/bytebase &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;    bytebase/bytebase:latest --data /var/opt/bytebase --host http://ddl.pigsty --port &lt;span class=&#34;m&#34;&gt;8887&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;访问 http://10.10.10.10:8887/ 或 &lt;a href=&#34;http://ddl.pigsty/&#34;&gt;http://ddl.pigsty&lt;/a&gt; 即可使用 ByteBase，您需要依次创建项目、环境、实例、数据库，即可开始进行模式变更。 公开Demo地址： &lt;a href=&#34;http://ddl.pigsty.cc&#34;&gt;http://ddl.pigsty.cc&lt;/a&gt;&lt;/p&gt;</description>
      </item>
    <item>
        <title>Task &amp; Tutorial</title>
        <link>https://v27.pgsty.pro/docs/tasks/</link>
        <pubDate>Mon, 18 Apr 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/tasks/</guid>
        <description></description>
      </item>
    <item>
        <title>PGAdmin4: PG Admin GUI Tool</title>
        <link>https://v27.pgsty.pro/docs/software/pgadmin/</link>
        <pubDate>Mon, 25 Apr 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/pgadmin/</guid>
        <description>&lt;p&gt;pgAdmin4 is a useful PostgreSQL management tool. Execute the following command to launch the pgadmin service on the admin node:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d6129233-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-d6129233-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;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/pgadmin &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; docker compose up -d&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 default port for pgadmin is &lt;code&gt;8885&lt;/code&gt;, and you can access it through the following address:&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;http://adm.pigsty&#34;&gt;http://adm.pigsty&lt;/a&gt;&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;demo&#34;&gt;Demo&#xA;&lt;/h2&gt;&#xA;&lt;p&gt;Public Demo：http://adm.pigsty.cc。&lt;/p&gt;&#xA;&lt;p&gt;Credentials: &lt;code&gt;admin@pigsty.cc&lt;/code&gt; / &lt;code&gt;pigsty&lt;/code&gt;。&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/pgadmin.jpeg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tl-dr&#34;&gt;TL; DR&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-d6129233-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;3&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-d6129233-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;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/pgadmin   &lt;span class=&#34;c1&#34;&gt;# enter docker compose dir&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make up                   &lt;span class=&#34;c1&#34;&gt;# launch pgadmin container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make conf view            &lt;span class=&#34;c1&#34;&gt;# load pigsty server list&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;Shortcuts:&lt;/p&gt;</description>
      </item>
    <item>
        <title>SchemaSPY: Dump &amp; Visualize PG Schema</title>
        <link>https://v27.pgsty.pro/docs/software/schemaspy/</link>
        <pubDate>Sat, 21 May 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/schemaspy/</guid>
        <description>&lt;p&gt;Use the following &lt;code&gt;docker&lt;/code&gt; command to generate a database schema report, using CMDB as an example:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-adac8644-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-adac8644-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;docker run -v /www/schema/pg-meta/meta/pigsty:/output andrewjones/schemaspy-postgres:latest -host 10.10.10.10 -port &lt;span class=&#34;m&#34;&gt;5432&lt;/span&gt; -u dbuser_dba -p DBUser.DBA -db meta -s pigsty&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 visit &lt;a href=&#34;http://h.pigsty/schema/pg-meta/meta/pigsty&#34;&gt;http://h.pigsty/schema/pg-meta/meta/pigsty&lt;/a&gt; to access the schema report.&lt;/p&gt;</description>
      </item>
    <item>
        <title>PGWeb: Browser-based PG Client</title>
        <link>https://v27.pgsty.pro/docs/software/pgweb/</link>
        <pubDate>Fri, 18 Mar 2022 00:00:00 +0000</pubDate>
        
        <guid>https://v27.pgsty.pro/docs/software/pgweb/</guid>
        <description>&lt;p&gt;PGWEB: &lt;a href=&#34;https://github.com/sosedoff/pgweb&#34;&gt;https://github.com/sosedoff/pgweb&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;Simple web-based and cross-platform PostgreSQL database explorer.&lt;/p&gt;&#xA;&lt;p&gt;Public Demo: &lt;a href=&#34;http://cli.pigsty.cc&#34;&gt;http://cli.pigsty.cc&lt;/a&gt;&lt;/p&gt;&#xA;&lt;img class=&#34;td-image&#34; src=&#34;https://v27.pgsty.pro/img/docs/app/pgweb.jpeg&#34; alt=&#34;&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34;&gt;&lt;h2 id=&#34;tl-dr&#34;&gt;TL; DR&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4880d888-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-4880d888-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;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; ~/pigsty/app/pgweb &lt;span class=&#34;p&#34;&gt;;&lt;/span&gt; make up&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;Visit &lt;a href=&#34;http://cli.pigsty&#34;&gt;http://cli.pigsty&lt;/a&gt; or http://10.10.10.10:8886&lt;/p&gt;&#xA;&lt;p&gt;Try connecting with example URLs:&lt;/p&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4880d888-fence-1&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;2&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4880d888-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;postgres://dbuser_meta:DBUser.Meta@10.10.10.10:5432/meta?sslmode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;disable&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;postgres://test:test@10.10.10.11:5432/test?sslmode&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;disable&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-code td-code--untitled&#34; id=&#34;td-code-4880d888-fence-2&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4880d888-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;make up         &lt;span class=&#34;c1&#34;&gt;# pull up pgweb with docker compose&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run        &lt;span class=&#34;c1&#34;&gt;# launch pgweb with docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make view       &lt;span class=&#34;c1&#34;&gt;# print pgweb access point&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make log        &lt;span class=&#34;c1&#34;&gt;# tail -f pgweb logs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make info       &lt;span class=&#34;c1&#34;&gt;# introspect pgweb with jq&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make stop       &lt;span class=&#34;c1&#34;&gt;# stop pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make clean      &lt;span class=&#34;c1&#34;&gt;# remove pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make pull       &lt;span class=&#34;c1&#34;&gt;# pull latest pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make rmi        &lt;span class=&#34;c1&#34;&gt;# remove pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make save       &lt;span class=&#34;c1&#34;&gt;# save pgweb image to /tmp/docker/pgweb.tgz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make load       &lt;span class=&#34;c1&#34;&gt;# load pgweb image from /tmp/docker/pgweb.tgz&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;h2 id=&#34;快捷方式&#34;&gt;快捷方式&#xA;&lt;/h2&gt;&#xA;&lt;div class=&#34;td-code td-code--untitled&#34; id=&#34;td-code-4880d888-fence-3&#34; data-td-code data-td-code-auto-id&#xA;     data-td-language=&#34;bash&#34; data-td-line-count=&#34;11&#34;&gt;&#xA;  &lt;div class=&#34;td-code__viewport&#34; id=&#34;td-code-4880d888-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-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make up         &lt;span class=&#34;c1&#34;&gt;# pull up pgweb with docker-compose&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make run        &lt;span class=&#34;c1&#34;&gt;# launch pgweb with docker&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make view       &lt;span class=&#34;c1&#34;&gt;# print pgweb access point&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make log        &lt;span class=&#34;c1&#34;&gt;# tail -f pgweb logs&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make info       &lt;span class=&#34;c1&#34;&gt;# introspect pgweb with jq&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make stop       &lt;span class=&#34;c1&#34;&gt;# stop pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make clean      &lt;span class=&#34;c1&#34;&gt;# remove pgweb container&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make pull       &lt;span class=&#34;c1&#34;&gt;# pull latest pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make rmi        &lt;span class=&#34;c1&#34;&gt;# remove pgweb image&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make save       &lt;span class=&#34;c1&#34;&gt;# save pgweb image to /tmp/pgweb.tgz&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make load       &lt;span class=&#34;c1&#34;&gt;# load pgweb image from /tmp&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>
    
  </channel>
</rss>
