设为首页 收藏本站
查看: 995|回复: 0

[经验分享] PostgreSQL Cluster 

[复制链接]

尚未签到

发表于 2016-11-19 06:48:00 | 显示全部楼层 |阅读模式
  /data


=============================================================
3. Configuration
=============================================================
(EX.System Composition)

        |
     ((Load Balance Server))
     ( hostname: lb.hoo.com)
     ( receive port:5432 )
     ( recovery port:6101)
     ( lifecheck port:6201)
        |
----------+-------------+------------+----------
    |        |
((Cluster DB 1  ))  ((Cluster DB 2  ))
( hostname:c1.hoo.com)  ( hostname:c2.hoo.com)
( receive port: 5432 )  ( receive port:5432)
( recovery port:7101 )  ( recovery port: 7102 )
( lifecheck port:7201 ) ( lifecheck port: 7202 )
    |        |
----------+-------------+------------+----------
        |
     ((Replication Server))
     ( hostname:pgr.hoo.com)
     ( receive port:8001 )
     ( recovery port:8101)
     ( lifecheck port:8201)


3-1. Load Balance Server

The setup file of load balance server is copied from the sample file and edited.
(the sample file is installed '/usr/local/pgsql/etc' in default)
----------------------------------------------------------------
$cd /usr/local/pgsql/etc
$cp pglb.conf.sample pglb.conf
----------------------------------------------------------------

In the case of the above system composition example,
the setup example of pglb.conf file is as the following

#============================================================
#    Load Balance Server configuration file
#-------------------------------------------------------------
# file: pglb.conf
#-------------------------------------------------------------
# This file controls:
#   o which hosts are db cluster server
#   o which portuse connect to db cluster server
#   o how many connections are allowed on each DB server
#============================================================
#-------------------------------------------------------------
# set cluster DB server information
#        o Host_Name : hostname
#        o Port : connection for postmaster
#        o Max_Connection : maximun number of connection to postmaster
#-------------------------------------------------------------
<Cluster_Server_Info>;
  <Host_Name>; c1.hoo.com</Host_Name>;
  <Port>;  5432      </Port>;
  <Max_Connect>; 32       </Max_Connect>;
</Cluster_Server_Info>;
<Cluster_Server_Info>;
  <Host_Name>; c2.hoo.com</Host_Name>;
  <Port>;  5432      </Port>;
  <Max_Connect>; 32       </Max_Connect>;
</Cluster_Server_Info>;
#-------------------------------------------------------------
# set Load Balance server information
#        o Receive_Port : connection from client
#        o Recovery_Port : connection for recovery process
#        o Max_Cluster_Num : maximun number of cluster DB servers
#        o Use_Connection_Pooling : use connection pool [yes/no]
#        o Max_Pool_Each_Server : number of pool connections/DB server
#-------------------------------------------------------------
<Receive_Port>;  5432      </Receive_Port>;
<Recovery_Port>; 6101      </Recovery_Port>;
<LifeCheck_Port>;6201      </LifeCheck_Port>;
<Max_Cluster_Num>; 128     </Max_Cluster_Num>;
<Use_Connection_Pooling>; yes    </Use_Connection_Pooling>;
<Max_Pool_Each_Server>; 1    </Max_Pool_Each_Server>;

3-2. Cluster DB Server

The Cluster DB server need edit two configuration files
('pg_hba.conf' and 'cluster.conf').
These files are create under the $PG_DATA directory after 'initdb'.

A. pg_hba.conf
Permission to connect DB via IP connectoins is need for this system.

B. cluster.conf
In the case of the above system composition example,
the setup example of cluster.conf file is as the following

#============================================================
#    Cluster DB Server configuration file
#-------------------------------------------------------------
# file: cluster.conf
#-------------------------------------------------------------
# This file controls:
#   o which hosts & port are replication server
#   o which port use for replication request to replication server
#   o which command use for recovery function
#
#============================================================
#-------------------------------------------------------------
# set cluster DB server information
#        o Host_Name : hostname
#        o Port : connection for postmaster
#        o Recovery_Port : connection for recovery process
#-------------------------------------------------------------
<Replicate_Server_Info>;
    <Host_Name>; pgr.hoo.com </Host_Name>;
    <Port>; 8001 </Port>;
    <Recovery_Port>; 8101 </Recovery_Port>;
    <LifeCheck_Port>; 8201 </LifeCheck_Port>;
</Replicate_Server_Info>;
#-------------------------------------------------------------
# set Cluster DB Server information
#        o Recovery_Port : connection for recovery
#        o Rsync_Path : path of rsync command
#        o Rsync_Option : file transfer option for rsync
#   o When_Stand_Alone : When all replication servers fell,
#          you can set up two kinds of permittion,
#          "real_only" or "read_write".
#-------------------------------------------------------------
<Recovery_Port>;  7101   </Recovery_Port>;
<LifeCheck_Port>; 7201   </LifeCheck_Port>;
<Rsync_Path>;   /usr/bin/rsync </Rsync_Path>;
<Rsync_Option>; ssh -1   </Rsync_Option>;
<When_Stand_Alone>; read_only  </When_Stand_Alone>;
<Status_Log_File>;/tmp/cluster.sts </Status_Log_File>;
<Error_Log_File>; /tmp/cluster.log</Error_Log_File>;
#-------------------------------------------------------------
# set partitional replicate control information
# set DB name and Table name to stop reprication
#   o DB_Name : DB name
#   o Table_Name : table name
#-------------------------------------------------------------
#<Not_Replicate_Info>;
#  <DB_Name>; test_db  </DB_Name>;
#  <Table_Name>;log_table  </Table_Name>;
#</Not_Replicate_Info>;

3-3. Replication Server

The setup file of replication server is copied from the sample file and edited.
(the sample file is installed '/usr/local/pgsql/etc' in default)
----------------------------------------------------------------
$cd /usr/local/pgsql/etc
$cp pgreplicate.conf.sample pgreplicate.conf
----------------------------------------------------------------
In the case of the above system composition example,
the setup example of pgreplicate.conf file is as the following

#============================================================
#     PGReplicate configuration file
#-------------------------------------------------------------
# file: pgreplicate.conf
#-------------------------------------------------------------
# This file controls:
#   o which hosts & port are cluster server
#   o which port use for replication request from cluster server
#============================================================
#-------------------------------------------------------------
# set cluster DB server information
#        o Host_Name : hostname
#        o Port : connection for postmaster
#        o Recovery_Port : connection for recovery
#-------------------------------------------------------------
<Cluster_Server_Info>;
  <Host_Name>;  c1.hoo.com  </Host_Name>;
  <Port>;   5432    </Port>;
  <Recovery_Port>;7101    </Recovery_Port>;
    <LifeCheck_Port>; 7201    </LifeCheck_Port>;
</Cluster_Server_Info>;
<Cluster_Server_Info>;
  <Host_Name>;  c2.hoo.com  </Host_Name>;
  <Port>;   5432    </Port>;
  <Recovery_Port>;7101    </Recovery_Port>;
    <LifeCheck_Port>; 7201    </LifeCheck_Port>;
</Cluster_Server_Info>;
#-------------------------------------------------------------
# set Load Balance server information
#        o Host_Name : hostname
#        o Recovery_Port : connection for recovery
#-------------------------------------------------------------
<LoadBalance_Server_Info>;
  <Host_Name>;   lb.hoo.com </Host_Name>;
  <Recovery_Port>; 6101   </Recovery_Port>;
    <LifeCheck_Port>;6201   </LifeCheck_Port>;
</LoadBalance_Server_Info>;
#-------------------------------------------------------------
# set PGReplicate server information
#        o Replicate_Port : connection for reprication
#        o Recovery_Port : connection for recovery
#-------------------------------------------------------------
<Replication_Port>;  8001   </Replication_Port>;
<Recovery_Port>;   8101   </Recovery_Port>;
<LifeCheck_Port>;  8201   </LifeCheck_Port>;


=============================================================
4. Start Up / Stop
=============================================================

4-1. replication server

A. Start replication server
----------------------------------------------------------------
$ /usr/local/pgsql/bin/pgreplicate -D /usr/local/pgsql/etc
----------------------------------------------------------------

B. Stop replication server
----------------------------------------------------------------
$ /usr/local/pgsql/bin/pgreplicate -D /usr/local/pgsql/etc stop
----------------------------------------------------------------

usage: pgreplicate [-D path_of_config_file] [-W path_of_work_files] [-U login us
er][-l][-n][-v][-h][stop]
  -l: print error logs in the log file.
  -n: don't run in daemon mode.
  -v: debug mode. need '-n' flag
  -h: print this help
  stop: stop pgreplicate
(config file default path: ./pgreplicate.conf)

4-2. cluster DB server
$PG_HOME = /usr/local/pgsql
$PG_DATA = /usr/local/pgsql/data

A. Start cluster DB server
----------------------------------------------------------------
$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -o "-i" start
----------------------------------------------------------------

B. Stop cluster DB server
----------------------------------------------------------------
$ /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data stop
----------------------------------------------------------------

4-3. load balance server

A. Start load balance server
----------------------------------------------------------------
$ /usr/local/pgsql/bin/pglb -D /usr/local/pgsql/etc
----------------------------------------------------------------

B. Stop load balance server
----------------------------------------------------------------
$ /usr/local/pgsql/bin/pglb -D /usr/local/pgsql/etc stop
----------------------------------------------------------------

usage: pglb [-D path_of_config_file] [-W path_of_work_files] [-n][-v][-h][stop]
  -l: print error logs in the log file.
  -n: don't run in daemon mode.
  -v: debug mode. need '-n' flag
  -h: print this help
  stop: stop pglb
  (config file default path: ./pglb.conf)
  这是postgresql数据库集群的安装原文
以下是我对他的一些理解与解释:

部署postgresql数据库集群至少需要安装四个数据库

1、balanceDB数据库(以下简称平行数据库),字面为平衡或并行
处理数据库。他必需定义好节点数据库信息.不需要创建实际的数据库。

2、ClusterDB集群节点数据库二个(以下简称节点数据库)。单个话就不是集群了。这不废话吗?,他必需定义好本节点信息(是只读还是读写都可以)与调度与决策处理数据信息。(节点数据库必需创建数据库,即initdb啦)

3、pgreplicateDB调度与决策处理数据库(以下简称调度数据库)。他必需要定义好并行处理数据库信息、节点数据库信息。(调度与决策数据库不需要创建数据库)。


以下为我的推断:

当客户端访问数据库时候的一个流程。

我们访问数据库的时候,是访问平行处理数据库。而不是访问ClusterDB或pgreplicateDB。

由平行数据库询问调度数据库,当前查询或修改使用那个节点。

节点收到平行数据库访问请求事务后,使用二阶段递交,因为每一个查询与修改都是一个事务,事务完成后发送信号到调度数据库。本次查询与修改递交完成。

调度数据库再通知别的节点数据库同步更改。同步节点完成后调度数据库再通知原节点数据库本次事务顺利完成。你可以把结果反回给客户端了。

在这样的一个集群里面我们不需要关心使用那个节点,节点之前怎样同步。
之所以这样推测,是想使大家有一个概念为什么要这样部署,有什么作用。
不能想当然而所以然。

上面讲得可能简单了一点。

但我想读完的朋友,应该会对postgresql集群数据库有一个基础的理论知识了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-302271-1-1.html 上篇帖子: postgresql pgbench 下篇帖子: Python 连接 PostgreSQL
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表