PL Proxy安裝配置

2021-07-26 22:21:14 字數 3442 閱讀 6069

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...