
注意事项:由于 wordpress 会自动将半角单引号转换为全角单引号,引用代码时
需要手动修改为单引号
原理只是一个概念,可操作性不强,看了 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
节点,是真正存放数据的节点。
没图没真相,还是来张集群结构图,结构更清晰一些:
看了原理图,是不是觉得很简单,稍微了解技术的人都能想到这种架构。既然这
么简单,那就开始创建一个数据库集群吧,需求如下:
评论