设置 PGCluster

来自 Alpine Linux
此材料已过时...

此软件包不再是 alpine 的一部分,上游自 2013 年初以来未积极维护 (讨论)

PGCluster 是 PostgreSQL 的一个分支,允许多主复制。本文档解释了如何设置它。

注释

  • 配置文件中的所有主机都通过名称引用 - 这些名称必须正确解析为其 IP 地址。
  • PGCluster xml 配置文件区分大小写
  • PGCluster 1.9.0 基于 PostgreSQL 8.3

安装

首先安装软件包

apk add pgcluster pgcluster-client

对于恢复,您需要 ssh 和 rsync

apk add openssh rsync

配置

如有必要,编辑 /etc/hosts 文件,以便可以解析所有名称。

检查 /etc/conf.d/pgcluster 中的数据路径。 还要在此处检查以查看 init 脚本将在此主机上启动哪些进程。

创建数据库文件 (与 postgresql 相同)

rc-service pgcluster setup

编辑上面找到的数据路径中的配置文件 (通常是 /var/lib/postgresql/pgcluster)

postgres (postmaster)

postgres 在这里有 3 个值得关注的配置文件:postgresql.conf, pg_hba.conf, cluster.conf。

手动启动它

su postgres cd /var/lib/postgresql/pgcluster pg_ctl -D . start

postgres -D .

postgresql.conf

这是标准的 postgresql 配置文件。只需确保这一点

listen_addresses='*'

您可能还想更改日志记录设置。

pg_hba.conf

这也是一个标准的 postgresql 配置文件。确保所有涉及的主机都互相信任。 这是一个示例行,您可以使用它来运行测试集群 (对于生产用途来说有点宽松)

host    all         all         192.168.0.0/16        trust

cluster.conf

此文件是 PGCLuster 新增的 - 它配置了修补后的数据库实例。

为每个复制服务器添加如下代码块

<Replicate_Server_Info>
	<Host_Name>     pgrep1  </Host_Name>
	<Port>          8001    </Port>
	<Recovery_Port> 8101    </Recovery_Port>
</Replicate_Server_Info>

也添加以下内容

<Host_Name>		pgdb1				</Host_Name>
<Recovery_Port>	7001				</Recovery_Port>
<Rsync_Path>		/usr/bin/rsync			</Rsync_Path>
<Rsync_Option>	        ssh -1				</Rsync_Option>
<Rsync_Compress>	yes				</Rsync_Compress>
<Rsync_Timeout>	10min				</Rsync_Timeout>
<Rsync_Bwlimit>	0KB				</Rsync_Bwlimit>
<Pg_Dump_Path>	        /usr/bin/pg_dump	        </Pg_Dump_Path>
<Ping_Path>		/bin/ping			</Ping_Path>
<When_Stand_Alone>	read_only			</When_Stand_Alone>
<Replication_Timeout>	1min				</Replication_Timeout>
<LifeCheck_Timeout>	3s				</LifeCheck_Timeout>
<LifeCheck_Interval>	11s				</LifeCheck_Interval>

这部分是可选的

<Not_Replicate_Info>
	<DB_Name>		test_db		</DB_Name>
#	<Table_Name>		log_table	</Table_Name>
</Not_Replicate_Info>

pgreplicate

此进程复制到其他服务器。

手动启动它

su postgres cd /var/lib/postgresql/pgcluster pgreplicate -D .

如果您想要调试输出,请将最后一行更改为

pgreplicate -D . -n -v

pgreplicate.conf

为每个数据库 (也称为集群) 实例添加如下代码块

<Cluster_Server_Info>
   <Host_Name>pgdb1</Host_Name>
   <Port>5432</Port>
   <Recovery_Port>7001</Recovery_Port>
</Cluster_Server_Info>

为您的负载均衡器实例添加此代码块

<LoadBalance_Server_Info>
   <Host_Name>pglb1</Host_Name>
   <Recovery_Port>6001</Recovery_Port>
</LoadBalance_Server_Info>

并添加此项来描述您正在配置的复制器实例

<Host_Name>pgrep1</Host_Name>
<Replication_Port>8002</Replication_Port>
<Recovery_Port>8101</Recovery_Port>
<RLog_Port>8301</RLog_Port>
<Response_Mode>normal</Response_Mode>
<Use_Replication_Log>no</Use_Replication_Log>

可选的日志记录信息

<Log_File_Info>
        <File_Name>pg_log/pgreplicate.log</File_Name>
</Log_File_Info>

pglb

此进程提供负载均衡。

手动启动它

su postgres cd /var/lib/postgresql/pgcluster pglb -D .

如果您想要调试输出,请将最后一行更改为

pglb -D . -n -v

pglb.conf

与 pgreplicate 类似,为每个数据库实例添加以下代码块

<Cluster_Server_Info>
   <Host_name>pgdb1</Host_Name>
   <Port>5432</Port>
   <Max_Connect>30</Max_Connect>
</Cluster_Server_Info>

为负载均衡器添加以下内容

<Host_Name>pglb1</Host_Name>
<Backend_Socket_Dir>/tmp</backend_socket_dir>
<Receive_Port>5433</Receive_Port>
<Recovery_Port>6001</Recovery_Port>
<Max_Cluster_Num>128</Max_Cluster_Num>
<Use_Connection_Pooling>no</Use_Connection_Pooling>

可选的日志记录信息

<Log_File_Info>
        <File_Name>pg_log/pgreplicate.log</File_Name>
</Log_File_Info>

恢复

...

参考