最近要做一些有关PostgreSQL多实例运行的例子,一般都普遍需要在不同的机器上安装上PostgreSQL Server,然后在不同的机器上进行配置,比如通过plproxy进行一些demo的设置。当然这样的需求可以通过多个虚拟机的方式实现,比如创建多个vmware的虚拟机,大家一起跑就是了。不过这样有点资源浪费,而且需要维护不同的机器。尝试着在同一台机器上运行多个PostgreSQL Server实例来完成需要。
目标: 在一台机器上运行多个PostgreSQL Server实例.
运行环境:Ubnntu 8.04.1(vmware中运行)
1. 首先通过sudo apt-get install postgresql安装上PostgreSQL Server。在安装的过程中会建议安装其它有关的pkg,可以都装上,最后安装完成后最好有以下包列表:
postgresql
postgresql-8.3
postgresql-client-8.3
postgresql-client-common
postgresql-common
安装完成后,apt-get会自动根据安装脚本完成PostgreSQL的数据库初始化工作,并启动一个PostgreSQL实例(称为一个cluster),且该实例的名称是:main. 请记住main,我们在后面还会用到。
2. 修改文件
2.1 修改/usr/bin/pg_ctlcluster
/usr/bin/pg_ctlcluster是用以控制PostgreSQL Server启动、停止、重启的脚本,便于完成对PostgreSQL Server的控制。默认的PostgreSQL cluster只能通过本地访问,不能通过TCP/IP以网络方式进行。修改/usr/bin/pg_ctlcluster文件,把253行修改为以下内容:
通过加上 -i 参数,使得通过pg_ctlcluster启动的PostgreSQL Cluster能够接受网络访问。
2.2 修改/etc/postgresql/8.3/main/pg_hba.conf文件
该文件是PostgreSQL Server完成对客户身份鉴别的配置文件,详细内容可参见 这里。在此文件内容中添加一行如下的内容(如果是线上的机器,千万别这么做,太危险了。):
然后运行sudo -u postgres /usr/bin/pg_ctlcluster 8
目标: 在一台机器上运行多个PostgreSQL Server实例.
运行环境:Ubnntu 8.04.1(vmware中运行)
1. 首先通过sudo apt-get install postgresql安装上PostgreSQL Server。在安装的过程中会建议安装其它有关的pkg,可以都装上,最后安装完成后最好有以下包列表:
postgresql
postgresql-8.3
postgresql-client-8.3
postgresql-client-common
postgresql-common
安装完成后,apt-get会自动根据安装脚本完成PostgreSQL的数据库初始化工作,并启动一个PostgreSQL实例(称为一个cluster),且该实例的名称是:main. 请记住main,我们在后面还会用到。
2. 修改文件
2.1 修改/usr/bin/pg_ctlcluster
/usr/bin/pg_ctlcluster是用以控制PostgreSQL Server启动、停止、重启的脚本,便于完成对PostgreSQL Server的控制。默认的PostgreSQL cluster只能通过本地访问,不能通过TCP/IP以网络方式进行。修改/usr/bin/pg_ctlcluster文件,把253行修改为以下内容:
- 253 my $postmaster_opts = '-i';
- 254 if (!(PgCommon::get_conf_value $version, $cluster, 'postgresql.conf', 'unix_socket_directory')) {
- 255 $postmaster_opts .= '-c unix_socket_directory="' . $info{ 'socketdir'} . '"';
- 256 }
2.2 修改/etc/postgresql/8.3/main/pg_hba.conf文件
该文件是PostgreSQL Server完成对客户身份鉴别的配置文件,详细内容可参见 这里。在此文件内容中添加一行如下的内容(如果是线上的机器,千万别这么做,太危险了。):
- host all all 0.0.0.0 0.0.0.0 trust