底蕴深厚的意思:GridSQL搭建postgresql集群

来源:百度文库 编辑:中财网 时间:2024/04/29 23:48:24

GridSQL搭建postgresql集群  

2011-05-25 14:50:27|  分类: postgresql |字号 订阅

(一)版本信息:
        postgresql-9.0.4.tar.bz2
        gridsql-2.0-0.tar.gz

(二)环境架构:
        服务器--vmware虚拟机 3台
        coordinator node0: 192.168.204.131    安装gridsql和用于存储元数据库的pogresql数据库
        underlying   node1: 192.168.204.132    安装postgresql数据库,用于作为节点1
        underlying   node2: 192.168.204.133    安装postgresql数据库,用于作为节点2

(三)系统环境
         1)shared memory配置,2G为例
              #vi /etc/sysctl.conf
                 ##########################################
                 linux kernel settings
                 kernel.shmmax = 68719476736
                 kernel.shmmni = 4096
                 kernel.shmall = 4294967296
                 kernel.sem = 1000 128000 100 128
                 ##########################################
         2)number of open file
               /etc/security/limits.conf
         3)java  Runtime  Environment 6 update 18或以上
               http://java.sun.com/javase/downloads/index.jsp
         4)环境变量
               ###############################################
              export PGDATA=/usr/local/pgsql/data
              export PATH=/usr/local/gridsql-2.0/bin:/usr/local/pgsql/bin:/usr/local/jre1.6.0_25/bin:$PATH
               ###############################################

(四)在三台服务器上安装postgreslq数据库
           1)安装命令及过程
          #################################################
          #useradd postgres
          #tar jxf postgresql-9.0.4.tar.bz2
          #./configure --prefix=/usr/local/pgsql/
          #gmake
          #gmake install
          #mkdir /usr/local/pgsql/data
          #chown postgres /usr/local/pgsql/data
          #su - postgres
          #/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
          #################################################
         2)修改配置文件
              postgresql.conf 配置文件
              listen_address='*'     数据库服务的监听地址(去掉只在127.0.0.1这个地址上进行监听的限制)
                                               当一台服务器上启动多个服务,可以设定每个服务在不同 的网卡和IP地址上进行监听
              pg_hba.conf 配置文件
              允许哪个账户和客户端可以连接到本服务器
              ############################################
              # TYPE DATABASE USER CIDR-ADDRESS METHOD
                 host all all 192.168.204.0/24 md5
              ############################################
          3)启动数据库并在各个node上创建用户
               #/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l logfile start
               #/usr/local/pgsql/bin/createuser -d -E gridsql -U postgres -p
          4)在coordinator node0上建立密码文件
                #touch /home/postgres/.pgpass
                #chmod 600 /home/postgres/.pgpass
                文件格式:hostname:port:database:username:password
                文件内容:########################################
                                 192.168.204.131:5432:*:gridsql:123456
                                 192.168.204.132:5432:*:gridsql:123456
                                 192.168.204.133:5432:*:gridsql:123456
                                  #########################################
                 这样从node0(192.168.204.131)连接个underly database的node上,就不需要输入密码了
                 测试命令:
                                #/usr/local/pgsql/bin/createdb -h 192.168.204.131 -U gridsql test
                                #/usr/local/pgsql/bin/createdb -h 192.168.204.132 -U gridsql test
                                #/usr/local/pgsql/bin/createdb -h 192.168.204.133 -U gridsql test

(五)在node0上 安装GridSQL
           1)安装软件
                 ##############################################
                 tar zxf gridsql-2.0-0.tar.gz -C /usr/local/
                 chown postgres:postgres -R /usr/local/gridsql-2.0
                 chmod 700 /usr/local/gridsql-2.0/bin/*.sh
                 chmod 775 /usr/local/gridsql-2.0/log
                 chmod 755 /usr/local/gridsql-2.0/bin/gs-cmdline.sh
                 chmod 600 /usr/local/gridsql-2.0/config/*
                 ##############################################
           2)环境变量  ,脚本/usr/local/gridsql-2.0/gridsql_env.sh
                 ######################################################################
                 export GSPATH=/usr/local/gridsql-2.0
                 export CLASSPATH=$GSPATH/lib/edb-jdbc14.jar
                 export PATH=$PATH:$GSPATH/bin
                 执行脚本/usr/local/gridsql-2.0/gridsql_env.sh,或者把以上变量加入系统环境变量中
                 ######################################################################   
            3)修改配置文件  /usr/local/gridsql-2.0/conf/gridsql.conf
                   修改连接underly database node 的默认用户名、密码、端口号
                    xdb.default.dbusername=gridsql
                    xdb.default.dbpassword=123456
                    xdb.default.dbport=5432

                    修改node的个数及IP地址
                    xdb.nodecount=2
                    xdb.node.1.dbhost=192.168.204.132
                    xdb.node.2.dbhost=192.168.204.133
                    
                    元数据库名称及IP地址
                    xdb.metadata.database=XDBSYS
                    xdb.metadata.dbhost=localhost

               4)初始化gridsql 并启动相关服务
                     创建初始化数据库XDBSYS,并创建默认用户admin,密码secret
                     #gs-createmddb.sh -u admin -p secret
                     启动gridsql服务
                     #gs-server.sh
                        ###########################################################################
                         启动时,同时将某个数据库bing online,
                         gs-server.sh -d xtest
                         或者在gs-server.sh启动后,使用命令gs-dbstart 将某个数据库bring online
                        ##########################################################################
                     创建数据库
                     #gs-createdb.sh -d xtest -u admin -p secret -n 1,2
                     测试数据库
                     #gs-cmdline.sh -d xtest -u admin -p secret
                       GridSQL->create table mytable (id int) partitioning key id on all;
                       GridSQL->select * from mytable;
                       GridSQL->drop table mytable;

                     将GridSQL database bring online or offline or dop
                         #gs-dbstart.sh -d xtest -u admin -p secret
                         #gs-dbstop.sh -d xtest -u admin -p secret
                         #gs-dropdb.sh -d xtest -u admin -p secret

              测试一下,性能:
              测试表结构:create table mytest1 (id int,name varchar(30),address varchar(30),job varchar(30));
              数据量:20000
              需时间: 906.018820047(秒)

              同样,连接单独的postgre服务器,性能:
              需时间:34.7737448215(秒)

              性能差别太大了,不知道是不是没有优化的原因,因为gridsql服务,使用的是java,。
              有条件在生产服务器上,测试一下。
             
              总结:
              1)gridsql-2.0-0.tar.gz 是和 postgresql-8.4配套的,用了最新版的postgresql-9,不知道会不会出问题
              2)gridsql-2.0-0.tar.gz是enterprise DB公司与其付费产品Postgres Plus Advanced Server是捆绑在一起的
                             虽然开源的postgresql也可以使用,并且配置成功,相关其他方面是否有缺陷,不确定
              3)相关的性能需要仔细配置,并实验,此部分工作还未完成,是否能用于生产环境,不确定
              4)对相关的查询统计可以做到在多台服务器上分布式并行执行,提高效率,但是对join及其他操作,有限制
              5)在正式使用建库和建表之前,关于 database schema和 partitioning strategies,要查看文档
                              《GridSQLPlanningGuide.PDF》,否则会引起性能问题。