设置 PGCluster
![]() 此软件包不再是 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>
恢复
...