pgSQL 集群过程

需求: 工作需要
     3种集群模式
     pgCluster.................全热备集群....都读写....每台节点都保持数据完整
     pg Slony-I or II..........主从集群.....从只读....主读写
     pg plporxy................分流特性.....负载平衡.....分布到节点上

目的: 在 plproxy 上做查询,从node返回结果.
环境: 3台centos:  1台做plproxy   2台做node
步骤: 如下:
 
     1. 安装pgsql,所有pgsql都要装

版本3.xx........编译源码,rpm 都可以.安装方法看readme或者install文档.
       
源码安装.............默认都装在/usr/local/pgsql/下.
       
处理一下环境变量的问题.........export PATH=$PATH:/usr/local/pgsql/bin
      
初始化数据库目录.................initdb -D /usr/local/pgsql/data
       
生成一个数据库................createdb 数据库名
       
添加plpgsql语言支持..................createlang plpgsql 数据库名

修改 pgsql 的配置文件.......vi /usr/local/pgsql/data/postgresql.conf
      
取消注释.........listen_addresses = '*'
    ............port = 5432
      
添加用户认证...............host 数据库名 用户名 ip地址 trust
       
     2   安装plproxy.....只在proxy上安装,node不用安装
       
解包........make && make install
       
添加plproxy支持..psql -f /usr/local/pgsql/share/contrib/plproxy.sql 数据库名
       

       
在P1上创建schema

psql testproxy ..............用psql客户端连接数据库

create schema plproxy; ........生成schema.

vi MyClusterInit.sql,然后把下面的内容保存:(去掉注释)

#################   begin    ###################

CREATE OR REPLACE FUNCTION plproxy.get_cluster_partitions(cluster_name text)
RETURNS SETOF text AS $$
BEGIN
    IF cluster_name = 'MyCluster' THEN
        RETURN NEXT 'dbname=test1 host=192.168.1.190';<----节点ip
        RETURN NEXT 'dbname=test2 host=192.168.1.193';<----节点ip

        RETURN;
    END IF;
    RAISE EXCEPTION 'Unknown cluster';
END;
$$ LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION plproxy.get_cluster_version(cluster_name text)
RETURNS int4 AS $$
BEGIN
    IF cluster_name = 'MyCluster' THEN
        RETURN 1;
    END IF;
    RAISE EXCEPTION 'Unknown cluster';
END;
$$ LANGUAGE plpgsql;

create or replace function plproxy.get_cluster_config(cluster_name text, out key text, out val text)
returns setof record as $$
begin
    key := 'statement_timeout';
    val := 60;
    return next;
    return;
end; $$ language plpgsql;

################   end    #################

psql -f MyClusterInit.sql -d testproxy...........执行上述sql语句.

以上proxy设置完成..............................................

开始节点的设置:

给每个节点都创建一个函数:方法同上:vi到一个文件中,然后执行这个文件.内容如下:
#########################   begin   ########################

        .......................在数据节点上生成一个表usertable,
       然后可以插入一些数据测试:
       select * from public.ddlexec(
       'insert into usertable(id,username) values(1,'aaa')');
      
      
6. 如果失败请:  参考 pgsql
官方手册

你可能感兴趣的:(数据库)