ホームページ データベース mysql チュートリアル Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法

Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法

Jun 07, 2016 pm 05:04 PM
postgresql

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(说白了就是要通过集群的方法在Database0和Database1的JiwanCluster中创建一个叫做user的表);
3.用户通过客户端操作proxy节点在集群上插入多个记录信息到集群的user表上(需要把插入操作分布到两个Database节点上);
4.用户通过客户端操作proxy节点在集群上查询集群上的所有user记录

需求不算难吧,不过很不幸,如果你对PostgreSQL不熟悉的话,你仍然搭建不了数据库(反正我看了原理后,还是搭建不了)。原理嘛,这东西太官方了,来点操作性较强的步骤(版本号需要留意一下,版本不同的话,可能会导致情况大不相同):

第一步:创建三个空的虚拟机器并把这三台虚拟机的网卡设置搞定(比如,是否桥接,是否NAT之类)(有钱的话,自己买三台电脑,3条网线和一个集线器)。

可以创建虚拟机的软件如VMWare, VirtualPC, Xen等等,本文的实验用的是VMWare,原因是我对VMWare比较熟悉;

第二步:三个虚拟机全部安装Ubuntu-10.04

这个嘛,没有什么说的,但是对于新人,这个到西还要再说一下。你可以到Ubuntu的官方网站上找到下载地址,我当时的下载的地址是

第三步:三个虚拟机全部安装PostgreSQL数据库系统

如何安装和配置请参见Ubuntu下 Postgresql-8.4安装及配置

第四步:做个额外的动作,将每台服务器的设定成允许任何机器使用任何账号访问任何数据库(实验嘛,没关系的,照做就行了):

root@ :~# vi /etc/postgresql/8.4/main/pg_hba.conf
—>改变行:host all all 0.0.0.0 0.0.0.0 md5
—>修改为:host all all 0.0.0.0 0.0.0.0 trust
如果没有此行则添加此行,具体说明参见Ubuntu下 Postgresql-8.4安装及配置。

第五步:三个虚拟机全部创建数据库JiwanCluster

root@ :~# psql –U postgres -h 127.0.0.1
postgres=# create database “JiwanCluster”;

创建数据库的详细方法请参见Ubuntu下 Postgresql-8.4安装及配置

——–章节凌乱,先来个“完美分割线”——–
PS:现在的三台机器都能提供数据库服务了,而且在任何一台机器使用客户端都可以自由的访问其他数据库服务器中的”JiwanCluster”数据库,不过他们还不是集群,仅仅是可以相互访问的数据库服务器而已,他们之间没有任何协作关系。下面创建PL/Proxy方式的协作关系(嫌这个词太土?!那就换一个:创建PostgreSQL 数据库集群)。
——–章节凌乱,先来个“完美分割线”——–

第六步:在 proxy 节点上安装过程语言plproxy(安装 plproxy 必须使用 root 用户,否则不能正常安装,我安装后的plproxy版本是plproxy-2.0.4):

sudo apt-get install postgresql-8.4-plproxy

下面是解释,不想了解的话,可以直接跳过。

这一步的目的是:使proxy节点知道怎样指挥集群(实验中,就是指挥database0和database1),换句话就是说,让prxoy知道三件事情:
怎样把用户的SQL请求发送给集群的节点;
怎样接受集群的处理结果;
怎样将处理后的结果返回给用户。

这一步的实质是:复制plproxy.so文件到目录”/user/lib/postgresql/8.5/lib”的下面;复制plproxy.sql文件到目录”/usr/share/postgresql-8.4-plproxy”下面(这个目录是安装程序创建的,plproxy.sql文件是给下一步创建plproxy语言使用的,不是必须的,完全可以在需要的时候自己写相应的SQL语句)。这两个文件的存在是这一步安装成功的一个标志。
需要注意的是:安装过程语言是对数据库系统而言的,可以认为仅仅是复制了一些需要的文件而已,之后使用这个过程语言的之前,还要分别为每一个需要使用此过 程语言的数据库创建这个语言(说白了,就是还要告诉每个数据库到那里找相应的文件plproxy.so文件,下一步有解释)。

执行后在文件浏览器中的效果是:

第七步:为proxy节点上的数据库”JiwanCluster“创建plproxy过程语言(前提是你之前安装过这个语言):

root@ :~# psql -U postgres -h 127.0.0.1 -f /usr/share/postgresql-8.4-plproxy/plproxy.sql JiwanCluster
这条语句的实质是:在数据库系统表pg_language中添加一行记录。
执行后在pgAdmin3客户端观看到的效果是:

linux

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL と PostgreSQL: Web 開発のベスト プラクティス MySQL と PostgreSQL: Web 開発のベスト プラクティス Jul 14, 2023 pm 02:34 PM

MySQL と PostgreSQL: Web 開発のベスト プラクティス はじめに: 現代の Web 開発の世界では、データベースは不可欠なコンポーネントです。データベースを選択する場合、一般的な選択肢は MySQL と PostgreSQL です。この記事では、Web 開発で MySQL と PostgreSQL を使用するためのベスト プラクティスについて説明し、いくつかのコード例を示します。 1. 適用可能なシナリオ MySQL は、ほとんどの Web アプリケーション、特に高いパフォーマンス、スケーラビリティ、使いやすさを必要とするアプリケーションに適しています。

MySQL と PostgreSQL: パフォーマンスの比較と最適化のヒント MySQL と PostgreSQL: パフォーマンスの比較と最適化のヒント Jul 13, 2023 pm 03:33 PM

MySQL と PostgreSQL: パフォーマンスの比較と最適化のヒント Web アプリケーションを開発する場合、データベースは不可欠なコンポーネントです。データベース管理システムを選択する場合、MySQL と PostgreSQL の 2 つが一般的な選択肢となります。これらはどちらもオープンソースのリレーショナル データベース管理システム (RDBMS) ですが、パフォーマンスと最適化にはいくつかの違いがあります。この記事では、MySQL と PostgreSQL のパフォーマンスを比較し、最適化のヒントをいくつか紹介します。 2 つのデータベース管理を比較したパフォーマンスの比較

MySQL と PostgreSQL: データ セキュリティとバックアップ戦略 MySQL と PostgreSQL: データ セキュリティとバックアップ戦略 Jul 13, 2023 pm 03:31 PM

MySQL と PostgreSQL: データ セキュリティとバックアップ戦略 はじめに: 現代社会では、データはビジネスと個人の生活に不可欠な部分になっています。データベース管理システムでは、データを損失や損傷から保護し、回復されたデータの信頼性と整合性を確保するために、データ セキュリティとバックアップ戦略が非常に重要です。この記事では、2 つの主流のリレーショナル データベース システム、MySQL と PostgreSQL のデータ セキュリティとバックアップ戦略に焦点を当てます。 1. データセキュリティ: (1) ユーザーの権利

PHP プログラミングで PostgreSQL データベースを使用するにはどうすればよいですか? PHP プログラミングで PostgreSQL データベースを使用するにはどうすればよいですか? Jun 12, 2023 am 09:27 AM

データベース技術の発展に伴い、データベース管理システムにもさまざまな選択肢があり、開発者はニーズや好みに応じて最適なデータベースを選択できます。高度なオープンソース リレーショナル データベース システムとして、PostgreSQL は開発者によってますます注目され、使用されています。では、PHP プログラミングで PostgreSQL データベースを使用するにはどうすればよいでしょうか? 1. PostgreSQL データベースのインストールと設定 PostgreSQL を使用する前に、PostgreSQL データベースをインストールして設定する必要があります。初め

Go での PostgreSQL の使用: 完全ガイド Go での PostgreSQL の使用: 完全ガイド Jun 18, 2023 am 09:28 AM

Go 言語は、Web サービスやバックエンド アプリケーションの構築に適した高速かつ効率的なプログラミング言語です。 PostgreSQL は、より高い信頼性、拡張性、データ セキュリティを提供するオープンソースのリレーショナル データベース管理システムです。この記事では、Go での PostgreSQL の使用について詳しく説明し、いくつかの実用的なコード例とヒントを提供します。 PostgreSQL のインストールとセットアップ まず、PostgreSQL をインストールしてセットアップする必要があります。公式ウェブサイトでご覧いただけます

Go 言語でデータベース関数を学習し、PostgreSQL データの追加、削除、変更、クエリ操作を実装します。 Go 言語でデータベース関数を学習し、PostgreSQL データの追加、削除、変更、クエリ操作を実装します。 Jul 31, 2023 pm 12:54 PM

Go 言語でデータベース関数を学習し、PostgreSQL データの追加、削除、変更、クエリ操作を実装する現代のソフトウェア開発において、データベースは不可欠な部分です。 Go 言語は強力なプログラミング言語として、データベースの追加、削除、変更、クエリ操作を簡単に実装できる豊富なデータベース操作関数とツールキットを提供します。この記事では、Go言語でデータベース機能を学び、実際の運用でPostgreSQLデータベースを利用する方法を紹介します。ステップ 1: 各データベースに Go 言語でデータベース ドライバーをインストールする

PHP はオープンソースの PostgreSQL リレーショナル データベースを実装します PHP はオープンソースの PostgreSQL リレーショナル データベースを実装します Jun 18, 2023 am 08:40 AM

インターネットの発展に伴いデータ量は増加し続けており、データ管理の必要性はますます高まっています。リレーショナル データベースはデータ管理の重要な方法であり、その中でも PostgreSQL はその柔軟性、拡張性、セキュリティの点で人気があります。この記事では、PHP 言語を使用してオープン ソースの PostgreSQL リレーショナル データベースを実装する方法を紹介します。これが、対応するニーズを持つ開発者の役に立つことを願っています。概要 PostgreSQL は、SQL 標準に準拠した強力なリレーショナル データベース システムであり、多くの機能を備えています。

MySQL と PostgreSQL: データベース クエリのパフォーマンスを最適化するには? MySQL と PostgreSQL: データベース クエリのパフォーマンスを最適化するには? Jul 12, 2023 pm 03:15 PM

MySQL と PostgreSQL: データベース クエリのパフォーマンスを最適化するには?概要: データベース クエリのパフォーマンスは、アプリケーションを開発する際の重要な考慮事項です。クエリのパフォーマンスが優れていると、アプリケーションの応答性とユーザー エクスペリエンスが向上します。この記事では、一般的に使用される 2 つのデータベース、MySQL と PostgreSQL に焦点を当てて、データベース クエリのパフォーマンスを最適化する方法をいくつか紹介します。データベース インデックスの最適化: データベース インデックスは、クエリのパフォーマンスを向上させる重要な要素です。インデックスを使用すると、データ検索が高速化され、クエリのスキャン時間が短縮されます。

See all articles