Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法
Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法
原理只是一个概念,可操作性不强,看了N多的半原理半细节的相关文章,却总是被各种各样的细节困惑住。为了自己下次能够快速的使用PostgreSQL,以流水帐的方式记录配置PostgreSQL集群的步骤,有些结论是自己猜想的或者引用的,以后发现错误再修正吧。
顺便发些感想(跳过下面一段,都是题外话,其实就是废话):
其实很多东西,从原理上说都很简单,几乎我们每个人都能说上一点。但是实际上,原理性的文章一般可操作性都不是很强。我个人觉得,如果目标是给自己看或者目标是让团队的人能够读懂并可以操作的文章,还是应该多一些细节描述,,用文学的观点来说,就是表现手法要细腻一些。
Over,转入正题:
首先解释一下数据库集群:N个数据库堆到一起,找一个当个头头,管理所有的数据库并让它们协同工作。当然了,要不要找个头头,找几个头头,如何协作等等问题这些都可以商量和约定,因此,也就形成了不同的数据库集群。
如果数据库系统是PostgreSQL,这个集群就是PostgreSQL数据库集群。
PostgreSQL数据库管理集群的方法有很多,有人提出了PL/Proxy方式的集群(这才是本文的重点)。这个PL/Proxy方式的集群是这样的:有很多安装了PostgreSQl数据库的计算机,有台计算机是头头,我们把这个头头叫做proxy,其他的叫做database0,database1……。当然名字叫什么是无所谓的,关键是有个是头头,其他的受头头指挥。
看个例子吧:以三台机器的集群为例子,看看PostgreSQL集群的架构是什么。
proxy节点:proxy节点实际上也是一个PostgreSQL数据库 节点,但是所有数据均不存放到proxy节点上,主要做三件事情:
1.接受用户的sql查询;
2.分析用户的sql查询并转换成集群上执行的SQL语句;
3.合并集群执行sql的结果,然后返回给用户。
说白了,就是把用户的sql语句交给database0,database1去执行,然后合并执行结果返回给用户。
database1节点和 database2节点:
就是普通的数据库节点,接收proxy节点的sql查询请求并返回结果给proxy节点,是真正存放数据的节点。
没图没真相,还是来张集群结构图,结构更清晰一些:
看了原理图,是不是觉得很简单,稍微了解技术的人都能想到这种架构。既然这么简单,那就开始创建一个数据库集群吧,需求如下:
1.创建一个如集群结构图所示的集群,数据库集群中均操作同一个ser