pl proxy 集群示例配置过程
来源:互联网 发布:excel矩阵 进度表 编辑:程序博客网 时间:2024/05/16 00:50
看了一下pl/proxy,文档很多,都当参考吧,转载其中两篇,这是其一
参考:
http://plproxy.projects.pgfoundry.org/doc/tutorial.html
http://www.tbdata.org/archives/723
http://bbs.chinaunix.net/thread-1859285-1-1.html
http://blog.chinaunix.net/uid-15145533-id-2775843.html
http://blog.chinaunix.net/uid-15145533-id-2775844.html
http://blog.163.com/digoal@126/blog/static/1638770402010411113114315/
http://blog.163.com/digoal@126/blog/static/163877040201192535630895/
http://bbs.chinaunix.net/thread-1859285-1-1.html
http://blog.chinaunix.net/uid-15145533-id-2775824.html
以下转自:http://www.blogjava.net/Ilovby/archive/2013/01/28/394849.html
零、参考资料
1、http://plproxy.projects.pgfoundry.org/doc/tutorial.html
2、http://www.tbdata.org/archives/723
一、缘起
本来淘宝这篇博客已经说得很清楚了,但是它需要三台虚拟机,呃,自己对虚拟机完全不熟悉,加上硬盘不够,就不想折腾了,然后找单机版的pl proxy方法,到处没有找到,然后就只有看官方文档了,就是第一个参考资料了啦,发现其实可以在一个linux下建立3个数据库就可以模拟了。
二、基本信息
1、linux版本:ubuntu 12.10
2、postgresql版本:9.1
3、pl proxy版本:postgresql-9.1-plproxy
4、postgresql已经能使用了
5、在pgadmin3中执行sql语句的方法如下
(1)打开query tool(按住ctrl+E)就可以打开
(2)在query tool中粘贴sql语句
(3)按F5就可以执行了
(4)执行成功或者失败都会有提醒,挺好使。
三、配置过程
1、emacs /etc/postgresql/9.1/main/pg_hba.conf
—>改变行:host all all 127.0.0.1/32 md5
—>修改为:host all all 127.0.0.1/32 trust
2、创建三个数据库,分别是proxy,database0,database1,我用的创建工具是pgadmin3,创建数据库的sql代码分别如下(把其中的proxy代替为database0,database1就可以分别使用了)
-- DROP DATABASE proxy;
CREATE DATABASE proxy
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1;
psql -U postgres -h 127.0.0.1 -f /usr/share/postgresql/9.1/extension/plproxy--2.4.0.sql proxy
4、在pgadmin3中选择proxy数据库,打开query tool,输入如下sql语句并按f5执行
create language plpgsql;
得到的结果是
ERROR: language "plpgsql" already exists
********** Error **********
ERROR: language "plpgsql" already exists
SQL state: 42710
证明这一步没有必要做,其实已经有了
5、在pgadmin3中选择proxy数据库,打开query tool,输入如下语句并执行
create schema plproxy
6、在pgadmin3中选择proxy数据库的plproxy模式(刚创建的),打开query tool ,输入如下建立3个函数的语句并执行
(1)建立plproxy.get_cluster_config函数
RETURNS SETOF record AS
$BODY$
BEGIN
key := 'statement_timeout';--就是给 key 变量赋值,赋的值为’statement_timeout’
val := 60;--就是给 val 变量赋值,赋的值为 60
RETURN NEXT;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION plproxy.get_cluster_config(text)
OWNER TO postgres;
RETURNS SETOF text AS
$BODY$
BEGIN
IF cluster_name = 'testcluster' THEN --cluster_name 是群集的名字
RETURN NEXT 'dbname=database0 host=127.0.0.1'; --数据库节点的数据库名和 IP 地址
RETURN NEXT 'dbname=database1 host=127.0.0.1'; --数据库节点的数据库名和 IP 地址
RETURN;
END IF;
RAISE EXCEPTION 'Unknown cluster'; --如果群集名不存在,抛出异常,这个是在数据库内部处理的,最终会写入日志中。‘Unknown cluster’是报错信息
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION plproxy.get_cluster_partitions(text)
OWNER TO postgres;
RETURNS integer AS
$BODY$
BEGIN
IF cluster_name = 'testcluster' THEN
RETURN 1;
END IF;
RAISE EXCEPTION 'Unknown cluster';
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION plproxy.get_cluster_version(text)
OWNER TO postgres;
(1)建立public.ddlexec(sql_request text)函数
RETURNS SETOF integer AS
$BODY$
CLUSTER 'testcluster';
RUN ON ALL;
$BODY$
LANGUAGE plproxy VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION ddlexec(text)
OWNER TO postgres;
RETURNS SETOF integer AS
$BODY$
CLUSTER 'testcluster';
RUN ON ANY;
$BODY$
LANGUAGE plproxy VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION dmlexec(text)
OWNER TO postgres;
RETURNS SETOF record AS
$BODY$
CLUSTER 'testcluster';
RUN ON ALL;
$BODY$
LANGUAGE plproxy VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION dqlexec(text)
OWNER TO postgres;
create language plpgsql;
如果已经有这个语言了,就会和上面第四步一样报错,不管,继续往下走就行了。
9、在pgadmin3中选择database0 和database1数据库的public模式(默认就有的),打开query tool ,输入如下建立3个函数的语句并执行
(1)建立public.ddlexec(sql_request text)函数
RETURNS integer AS
$BODY$
declare
ret integer;
begin
execute query;
return 1;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
RETURNS integer AS
$BODY$
declare
ret integer;
begin
execute query;
return 1;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
(3)建立public.dqlexec(sql_request text)函数
RETURNS SETOF record AS
$BODY$
declare
ret record;
begin
for ret in execute query loop
return next ret;
end loop;
return;
end;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100
ROWS 1000;
(1)创建表usertable
在pgadmin3中选择proxy数据库,打开query tool ,输入如下建立usertable的语句并执行
(2)在usertable表中插入数据
在pgadmin3中选择proxy数据库,打开query tool ,输入如下建立usertable的语句并执行
select dmlexec('insert into usertable values(1)');
select dmlexec('insert into usertable values(2)');
select dmlexec('insert into usertable values(3)');
select dmlexec('insert into usertable values(4)');
select dmlexec('insert into usertable values(5)');
select dmlexec('insert into usertable values(6)');
select dmlexec('insert into usertable values(7)');
select dmlexec('insert into usertable values(8)');
select dmlexec('insert into usertable values(9)');
select dmlexec('insert into usertable values(10)');
(3)搜索usertable表中数据
在pgadmin3中选择proxy数据库,打开query tool ,输入如下建立usertable的语句并执行
3
4
5
6
7
8
10
0
1
2
9
好了,到这就算完成了。。。。
- pl proxy 集群示例配置过程
- 搭pl/proxy集群
- PostgreSQL 数据库集群和PL/Proxy配置安装指南
- [转]PostgreSQL 数据库集群和PL/Proxy配置安装指南
- PostgreSQL 数据库集群和PL/Proxy配置安装指南
- Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法
- Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法
- Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法
- Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法
- PL/Proxy安装配置
- PL/Proxy安装配置
- PL/SQL存储过程示例及图解
- Weblogic集群配置过程
- hadoop集群配置过程
- Spark 分布式集群配置示例
- linux下配置squid http proxy过程
- JBOSS SESSION集群配置过程
- hadoop2.7.1集群配置过程
- ACM 588. [NOIP1999] 拦截导弹(dp+最长不上升子序列)
- MySQL5.6安装步骤(windows7/8_64位)
- Java集合框架-4.【集合工具类:Collections、Arrays】【JDK1.5新特性】
- Linux服务器下安装jdk
- 免安装Oracle客户端使用PL/SQL
- pl proxy 集群示例配置过程
- 数字证书的制作和格式转换
- Web APP 阻止 IOS触摸滚动
- JavaScript执行环境及作用域链(摘自JavaScript高级程序设计第三版第4.2节)
- Java之Socket的TCP
- 【开源夏令营】PFIF公益寻人平台(九)结题报告
- 电报加密 描述: 发送电报保密是一项重要的工作,尤其是在军事领域,所以,为了安全的需要常常会对发送的内容进行加密,然后,接收方再进行解密,这样就达到了安全的需要。 本次我们完成一个简单的对字母加密程
- hdu1890 Robotic Sort splay+懒惰标记+翻转
- centos系统各个信息的查看(不断添加更新)