1、環境
三颱虛擬機器
系統:red hat6.5
ip 192.168.11.65 **資料庫
192.168.11.66 資料節點 db1
192.168.11.67 資料節點db2
三颱機器上均安裝好postgresql
資料庫版本:postgresql9.4..4
2、在p1上安裝plroxy
[postgres@barman ~]$ tar xvf plproxy-2.5.tar.gz
[postgres@barman ~]$ cd plproxy-2.5.tar.gz
[postgres@barman plproxy-2.5]$ make
[postgres@barman plproxy-2.5]$ make install
建立乙個新資料庫proxydb
[postgres@barman plproxy-2.5]$ createdb proxydb;
進入資料庫建立plproxy;
[postgres@barman plproxy-2.5]$ psql proxydb
psql (9.4.4)
type "help" for help.
postgers=#create extension plproxy;
建立好模式
postgres=#create schema plproxy;
3、在d1和d2上建好資料庫datadb
postgres@barman1 ~]$ createdb datadb;
4、 在p1上初始化設定
#plproxy的配置是通過三個函式(過程)實現的,這三個函式的標準模版如下:
#這個函式是讓plproxy可以找到對應的集群,將三個函式建立在proxydb中
create or replace function plproxy.get_cluster_partitions(cluster_name text)
returns setof text as $$
begin
if cluster_name ='cluster1' then
return next 'dbname=datadb host=192.168.11.66';
return next 'dbname=datadb host=192.168.11.67';
return;
end if;
raise exception 『unknown cluster』;
end;
$$ language plpgsql;
#這個函式是plproxy用於判斷是否給前端返回已經cache過的結果用的
create or replace function plproxy.get_cluster_version(cluster_name text)
returns int4 as $$
begin
if cluster_name = 'cluster1' 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;
6. 在d1,d2節點上設定
#給每個資料庫節點都建立一張表users
create table users (
username text,
email text
);#給每個資料庫節點都建立乙個插入函式
create or replace function insert_user(i_username text, i_emailaddress text)
returns integer as $$
insert into users (username, email) values ($1,$2);
select 1;
$$ language sql;
7. 在p1節點上設定
#在 plproxy 節點上建立乙個同名的插入函式,用於進行集群檢索
create or replace function insert_user(i_username text, i_emailaddress text)
returns integer as $$
cluster 'cluster1';
run on hashtext(i_username);
$$ language plproxy;
#在 plproxy 節點上建立乙個查詢函式,用於進行集群檢索
create or replace function get_user_email(i_username text)
returns text as $$
cluster 'cluster1';
run on hashtext(i_username) ;
select email from users where username = i_username;
$$ language plproxy;
8. 在p1上測試結果
postgres@barman plproxy-2.5]$ psql -d plproxydb
select insert_user('zhangsan','[email protected]');
#被儲存到d2, 可以用select hashtext('zhangsan') & 1驗證,被hash到 partition 1
select insert_user('lisi', '[email protected]');
#被儲存到d2, 可以用select hashtext('lisi') & 1驗證,被hash到 partition 1
select insert_user('wangwu','[email protected]');
#被儲存到d1, 可以用select hashtext('wangwu') & 1驗證,,被hash到 partition 0
select get_user_email('zhangsan');
select get_user_email('lisi');
select get_user_email('wangwu');
的安裝配置 Manjaro Linux安裝配置
安裝wmtools 1.解除安裝舊版本 sudo pacman r open vm tools git clone 3.執行指令碼進行安裝 cd vmware tools patches sudo patched open vm tools.sh 安裝vim sudo pacman s vim 更新...
python配置安裝 配置安裝
scrapy框架安裝 安裝請參考 scrapy安裝 windows安裝方式 1.先確定windows是否安裝了python c users administrator python python 2.7.13 v2.7.13 a06454b1afa1,dec 17 2016,20 53 40 msc...
Fedora 安裝配置
1,sudo 的配置 chmod w etc sudoers echo mirandam all all nopasswd all etc sudoers chmod w etc sudoers sudo 2,安裝源 產生新增第三方源 安裝驅動 sudo yum install kmod nvidi...