Postgres-XL
0
无    2020-09-03 11:50:19    0    0
myron


Postgres-XL 集群配置

1、集群设计

v-postgres-xl-1 gtm
v-postgres-xl-2 coordinator1
v-postgres-xl-3 coordinator2
v-postgres-xl-4 datanode1
v-postgres-xl-5 datanode2

用户 pgxl
安装目录 $HOME/pg-xl
数据目录 $HOME/data/gtm/data ;gtm
$HOME/data/coor/data ;coordinator
$HOME/data/datanode/data ;datanode

环境变量
---- start of .bash_profile ----


## added by maguirun.
export PGHOME=/home/pgxl/pg-xl
export PGPORT=5432
export PGDATA=$PGHOME/../data/gtm/data
export LANG=en_US.utf8
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH:.
export MANPATH=$PGHOME/share/man:$MANPATH

---- end of .bash_profile ----



注册节点SQL脚本
---- start of pgxl_register.sql ------
drop node coor_1;
drop node coor_2;
drop node db_1;
drop node db_2;
drop node group gp1;
drop node group gp2;
create node coor_1 with(TYPE='coordinator',HOST='v-postgres-xl-2',PORT=5432);
create node coor_2 with(TYPE='coordinator',HOST='v-postgres-xl-3',PORT=5432);
create node db_1 with(TYPE='datanode',HOST='v-postgres-xl-4',PORT=5432,primary=false);
create node db_2 with(TYPE='datanode',HOST='v-postgres-5',PORT=5432,primary=false);
alter node coor_1 with(TYPE='coordinator',HOST='v-postgres-xl-2',PORT=5432);
alter node coor_2 with(TYPE='coordinator',HOST='v-postgres-xl-3',PORT=5432);
alter node db_1 with(TYPE='datanode',HOST='v-postgres-xl-4',PORT=5432,primary=true);
alter node db_2 with(TYPE='datanode',HOST='v-postgres-xl-5',PORT=5432,primary=false);
create node group gp1 with(db_1);
create node group gp2 with(db_2);

select pgxc_pool_reload();
select * from pgxc_node;

---- end of pgxl_register.sql -----

2、安装软件
# useradd pgxl
# su - pgxl
# wget -c http://softlayer-sng.dl.sourceforge.net/project/postgres-xl/Releases/Version_9.2rc/postgres-xl-v9.2-src.tar.gz

# yum install jade docbook-style-dsssl
# mkdir -p $HOME/pg-xl
# tar xzvf postgres-xl-v9.2-src.tar.gz
# cd postgres-xl
# ./configure --prefix=$HOME/pg-xl
# make && make install

3、修改环境变量(参照上文)

4、初始化GTM
# initgtm -Z gtm -D $HOME/data/gtm/data
然后配置GTM的参数,gtm.conf中做如下修改:
port = 6666


5、初始化Datanode
$ initdb -D $HOME/data/datanode/data --nodename db_1
$ initdb -D $HOME/data/datanode/data --nodename db_2

修改两个Datanode的postgresql.conf参数,主要是GTM的选项,如下:
listen_addresses = '*'
port = 5432
gtm_host = 'v-postgres-xl-1'
gtm_port= 6666
pooler_port = 6667

修改两个Datanode的pg_hba.conf参数,配置数据节点的连接和认证,如下:
host all all 10.112.248.0/22 trust
host all all 0.0.0.0/0 md5

6、初始化Coordinator
$ initdb -D $HOME/data/coor/data --nodename coor_1
$ initdb -D $HOME/data/coor/data --nodename coor_2

修改两个Coordinator的postgresql.conf参数,主要是GTM的选项,如下:
listen_addresses = '*'
port = 5432
gtm_host = 'v-postgres-xl-1'
gtm_port= 6666
pooler_port = 6667

修改两个Coordinator的pg_hba.conf参数,配置数据节点的连接和认证,如下:
host all all 10.112.248.0/22 trust
host all all 0.0.0.0/0 md5

7、启动集群。顺序是,GTM->数据节点->协调器,先启动GTM,并查看状态。
$ gtm_ctl start -Z gtm -D $HOME/data/gtm/data/
$ gtm_ctl status -Z gtm -D $HOME/data/gtm/data

也可以简单运行GTM,如下:
$ gtm -D $HOME/data/gtm/data/

Datanode数据节点启动也有两种方式,如下:
$ pg_ctl start -D $HOME/data/datanode/data -Z datanode
$ pg_ctl status -D $HOME/data/datanode/data -Z datanode

$ postgres -X -D $HOME/data/datanode/data

Coordinator协调器启动和数据节点类似也有两种方式,如下:
$ pg_ctl start -D $HOME/data/coor/data -Z coordinator
$ pg_ctl status -D $HOME/data/coor/data -Z coordinator

$ postgres -X -D $HOME/data/datanode/data

8、关闭集群的顺序是相反的,协调器->数据节点->GTM。
$ pg_ctl stop -D $HOME/data/coor/data -Z coordinator
$ pg_ctl stop -D $HOME/data/coor/data -Z coordinator

$ pg_ctl stop -D $HOME/data/datanode/data -Z datanode
$ pg_ctl stop -D $HOME/data/datanode/data -Z datanode

$ gtm_ctl stop -Z gtm -D $HOME/data/gtm/data/


9、最后一步是注册各个节点,分别登陆协调者节点1和2,数据节点1和2,运行pg_xl_register.sql脚本:

$ psql -d postgres -f pgxl_register.sql


10、创建数据库,创建用户,测试功能
[ v-postgres-xl-2 ~]$ createuser -P -a -d -e user1
Enter password for new role:
Enter it again :
CREATE ROLE user1 PASSWORD 'md54426b91565912288ca3272c5f74440a9' SUPERUSER CREATEDB CREATEROLE INHERIT LOGIN;


miger@miger-Latitude-E6400-ATG:~$ psql -h 10.112.250.173 -U user1 -W mgr
Password for user user1:
psql (9.1.7, server 9.2.4 (Postgres-XL 9.2.0))
WARNING: psql version 9.1, server version 9.2.
Some psql features might not work.
Type "help" for help.

mgr=# create table test_table(id int);
CREATE TABLE
mgr=# insert into test_table values (1);
INSERT 0 1
mgr=# insert into test_table values (2);
INSERT 0 1
mgr=# insert into test_table values (3);
INSERT 0 1
mgr=# insert into test_table values (4);
INSERT 0 1
mgr=#

_________________________________________________________________

PG 优化

影响postgresql性能的几个重要参数
本人现在开发的所有项目都使用postgresql,应用下来对它很是满意,现就影响postgresql性能的几个重要参数介绍如下,希望对PG的初学者有所帮助,如果你在实际应用中遇到什么问题,可给我留言,我们一起解决:
PG的配置文件是数据库目录下的postgresql.conf文件,8.0以后的版本可支持K,M,G这样的参数,只要修改相应参数后重新启动PG服务就OK了。

shared_buffers:这是最重要的参数,postgresql通过shared_buffers和内核和磁盘打交道,因此应该尽量大,让更多的数据缓存在shared_buffers中。通常设置为实际RAM的10%是合理的,比如50000(400M)

work_mem: 在pgsql 8.0之前叫做sort_mem。postgresql在执行排序操作时,会根据work_mem的大小决定是否将一个大的结果集拆分为几个小的和 work_mem查不多大小的临时文件。显然拆分的结果是降低了排序的速度。因此增加work_mem有助于提高排序的速度。通常设置为实际RAM的2% -4%,根据需要排序结果集的大小而定,比如81920(80M)

effective_cache_size:是postgresql能够使用的最大缓存,这个数字对于独立的pgsql服务器而言应该足够大,比如4G的内存,可以设置为3.5G(437500)

maintence_work_mem:这里定义的内存只是在CREATE INDEX, VACUUM等时用到,因此用到的频率不高,但是往往这些指令消耗比较多的资源,因此应该尽快让这些指令快速执行完毕:给maintence_work_mem大的内存,比如512M(524288)

max_connections: 通常,max_connections的目的是防止max_connections * work_mem超出了实际内存大小。比如,如果将work_mem设置为实际内存的2%大小,则在极端情况下,如果有50个查询都有排序要求,而且都使 用2%的内存,则会导致swap的产生,系统性能就会大大降低。当然,如果有4G的内存,同时出现50个如此大的查询的几率应该是很小的。不过,要清楚 max_connections和work_mem的关系。

————————————————————————————

Putty
文档导航