<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>pgsql归档 - Liao&#039;s blog</title>
	<atom:link href="https://www.laobaiblog.top/tag/pgsql/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.laobaiblog.top/tag/pgsql/</link>
	<description>路漫漫其修远兮，吾将上下而求索</description>
	<lastBuildDate>Thu, 19 Sep 2024 07:06:51 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.laobaiblog.top/wp-content/uploads/2022/01/cropped-tyuu-32x32.png</url>
	<title>pgsql归档 - Liao&#039;s blog</title>
	<link>https://www.laobaiblog.top/tag/pgsql/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>使用docker部署pgsql，构建容灾高可用集群</title>
		<link>https://www.laobaiblog.top/2024/09/19/dockerpgbk/</link>
		
		<dc:creator><![CDATA[大白]]></dc:creator>
		<pubDate>Thu, 19 Sep 2024 07:04:30 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[分享]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[pgpool]]></category>
		<category><![CDATA[pgsql]]></category>
		<category><![CDATA[集群]]></category>
		<category><![CDATA[高可用]]></category>
		<guid isPermaLink="false">https://www.laobaiblog.top/?p=504</guid>

					<description><![CDATA[<p>postgresql + pgpool 构建容灾高可用集群(数据同步流复制/主备自动切换)，在pos &#8230;</p>
<p><a href="https://www.laobaiblog.top/2024/09/19/dockerpgbk/">使用docker部署pgsql，构建容灾高可用集群</a>最先出现在<a href="https://www.laobaiblog.top">Liao&#039;s blog</a>。</p>
]]></description>
										<content:encoded><![CDATA[<blockquote><p>
  postgresql + pgpool 构建容灾高可用集群(数据同步流复制/主备自动切换)，在postgresql官网看了<a class="wp-editor-md-post-content-link" href="https://www.pgpool.net/mediawiki/index.php/Documentation">pgpool-II的文档</a>，发现部署比较麻烦，为了方便快捷还是使用docker部署。
</p></blockquote>
<h1>一、简介</h1>
<p><code>bitnami/postgresql-repmgr</code>是<code>PostgreSQL HA</code>对应的docker镜像，<code>PostgreSQL HA</code> 是 PostgreSQL 集群解决方案，其中包括 PostgreSQL 复制管理器，这是一个用于管理 PostgreSQL 集群上的复制和故障转移的开源工具。</p>
<p><code>bitnami/pgpool</code>是<code>Pgpool-II</code> 对应的docker镜像，是 PostgreSQL 代理。它位于 PostgreSQL 服务器和它们的客户端之间，提供连接池、负载平衡、自动故障转移和复制。</p>
<h1>二、部署环境</h1>
<ul>
<li>系统：CentOS Linux release 7.9.2009 (Core)</li>
<li>postgresql Version：postgresql-repmgr:14</li>
<li>pgpool Version：latest</li>
<li>Docker Version：20.10.21</li>
</ul>
<h3>1. 拉取docker镜像</h3>
<p>稳妥起见，这里选用了postgresql 14版本，其次如果遭遇docker镜像拉取网络问题，可以参考我的这篇博文<a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/2024/07/16/docker%e4%bb%93%e5%ba%93%e9%95%9c%e5%83%8f%e4%bb%a3%e7%90%86%e6%89%93%e9%80%a0%e5%b1%9e%e4%ba%8e%e8%87%aa%e5%b7%b1%e7%9a%84docker-hub/">打造属于自己的Docker Hub镜像代理网站</a>，或者在镜像前加入私有镜像站。</p>
<pre><code class="language-shell line-numbers">docker pull bitnami/postgresql-repmgr:14
docker pull bitnami/pgpool:latest

#私有镜像站eg
docker pull hub-mirror.c.163.com/bitnami/postgresql-repmgr:14
docker pull hub-mirror.c.163.com/bitnami/pgpool:latest
</code></pre>
<h3>2. 启动pgsql数据库</h3>
<ol>
<li>创建文件夹并授权</li>
</ol>
<pre><code class="language-shell line-numbers">cd /
mkdir data
cd data
mkdir repmgr1
mkdir repmgr2
chmod 777 /data/repmgr1
chmod 777 /data/repmgr2
</code></pre>
<ol start="2">
<li>创建docker网络</li>
</ol>
<pre><code class="language-shell line-numbers">docker network create pg-network
</code></pre>
<ol start="3">
<li>启动数据库<br />
为了数据持久化，我们把/bitnami/postgresql目录挂载到/data/repmgr1目录下。以下两条命令可以自行做成bash脚本启动。</li>
</ol>
<pre><code class="language-shell line-numbers">#pg-0数据库启动
docker run -v /data/repmgr1:/bitnami/postgresql --detach --restart always --name pg-0 -p 30350:5432 --network pg-network --env REPMGR_PARTNER_NODES=pg-0,pg-1 --env REPMGR_NODE_NAME=pg-0 --env REPMGR_NODE_NETWORK_NAME=pg-0 --env REPMGR_PRIMARY_HOST=pg-0 --env REPMGR_PASSWORD=123456 --env POSTGRESQL_PASSWORD=123456 bitnami/postgresql-repmgr:14
</code></pre>
<pre><code class="language-shell line-numbers">#pg-1数据库启动
docker run -v /data/repmgr2:/bitnami/postgresql --detach --restart always --name pg-1 -p 30351:5432 --network pg-network --env REPMGR_PARTNER_NODES=pg-0,pg-1 --env REPMGR_NODE_NAME=pg-1 --env REPMGR_NODE_NETWORK_NAME=pg-1 --env REPMGR_PRIMARY_HOST=pg-0 --env REPMGR_PASSWORD=123456 --env POSTGRESQL_PASSWORD=123456 bitnami/postgresql-repmgr:14
</code></pre>
<ol start="4">
<li>查看启动状态</li>
</ol>
<pre><code class="language-shell line-numbers">docker ps
</code></pre>
<p><a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_53c9eb917a6049470cd79aaad78f45c2.jpg"><img decoding="async" src="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_53c9eb917a6049470cd79aaad78f45c2.jpg" alt="" /></a></p>
<h3>3. 启动Pgpool</h3>
<p>注意，这里的<code>--add-host</code>参数对应的IP是你<strong>本地的宿主机IP</strong>，请自行修改。</p>
<pre><code class="language-shell line-numbers">docker run --detach --restart always --name pgpool -p 9999:5432 \
  --env PGPOOL_BACKEND_NODES=0:pg-0:30350,1:pg-1:30351 \
  --env PGPOOL_SR_CHECK_USER=postgres \
  --env PGPOOL_SR_CHECK_PASSWORD=123456 \
  --env PGPOOL_ENABLE_LDAP=no \
  --env PGPOOL_POSTGRES_USERNAME=postgres \
  --env PGPOOL_POSTGRES_PASSWORD=123456 \
  --env PGPOOL_ADMIN_USERNAME=postgres \
  --env PGPOOL_ADMIN_PASSWORD=123456 \
  --add-host=pg-0:192.168.1.204 \
  --add-host=pg-1:192.168.1.204 \
  bitnami/pgpool:latest
</code></pre>
<p>启动成功后，查看pgpool日志，通过pgpool可以实现数据库的负载均衡和读写分离。</p>
<p><a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_1665dd6bb789f5d7a5650c91028b8746.jpg"><img decoding="async" src="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_1665dd6bb789f5d7a5650c91028b8746.jpg" alt="" /></a></p>
<h3>4. 测试验证</h3>
<ol>
<li>navicat连接pgpool，创建user表并插入数据，看看<code>pg-0</code>及<code>pg-1</code>是否同步插入。</li>
</ol>
<p><a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_08857131284d85b7fd726fb0d4a5c480.jpg"><img decoding="async" src="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_08857131284d85b7fd726fb0d4a5c480.jpg" alt="" /></a></p>
<hr />
<p><code>pgpool</code>创建<code>user</code>表，插入数据</p>
<p><a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_d61298966092bba2948e0fc3b46626da.jpg"><img decoding="async" src="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_d61298966092bba2948e0fc3b46626da.jpg" alt="" /></a></p>
<p><a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_fb9a7662185c7a42dc7b0ed10ab8928d.jpg"><img decoding="async" src="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_fb9a7662185c7a42dc7b0ed10ab8928d.jpg" alt="" /></a></p>
<ol start="2">
<li>验证：<code>pg-0</code>、<code>pg-1</code>同步插入</li>
</ol>
<p><a class="wp-editor-md-post-content-link" href="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_b71f72be299bfc3ae3136718e6abe34e.jpg"><img decoding="async" src="https://www.laobaiblog.top/wp-content/uploads/2024/09/wp_editor_md_b71f72be299bfc3ae3136718e6abe34e.jpg" alt="" /></a></p>
<p>以上方法非常简单，最后程序直接访问9999端口即可实现读写分离。</p>
<p><strong>缺点：<br />
只能再一个宿主机上执行，不能跨主机。Pgpool和Pgsql有更多的高可用方法，后续还可以深入，多服务器部署及新增组件等。</strong></p>
<p>参考地址：<br />
<a class="wp-editor-md-post-content-link" href="https://www.pgpool.net/mediawiki/index.php/Documentation">官网WIKI</a><br />
<a class="wp-editor-md-post-content-link" href="https://www.cnblogs.com/applerosa/p/13160566.html">postgresql + pgpool 构建容灾高可用集群(数据同步流复制/主备自动切换)</a><br />
<a class="wp-editor-md-post-content-link" href="https://www.cnblogs.com/hacker-linner/p/16173012.html">pgpool-II 4.3 中文手册</a><br />
<a class="wp-editor-md-post-content-link" href="https://www.cnblogs.com/qgdtq/p/17106567.html">Postgresql通过docker进行高可用部署<br />
</a><br />
<a class="wp-editor-md-post-content-link" href="https://www.cnblogs.com/eternityCulture/p/17528840.html">使用docker部署pg集群（postgresql+postgis+pgrouting+pgpool）</a></p>
<p><a href="https://www.laobaiblog.top/2024/09/19/dockerpgbk/">使用docker部署pgsql，构建容灾高可用集群</a>最先出现在<a href="https://www.laobaiblog.top">Liao&#039;s blog</a>。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
