Postgres集群安装

postgres-xl-9.5r1.6.tar.bz2下载地址:点击进入
(注意:本文由于格式原因,$符号后有一个空格,如需复制,请注意修改)

1. 集群规划(根据需求自己增减配置)

共三个节点,建议GTM单独放一个节点

节点名ip服务名
Pgxl1192.168.x.xgtm
Pgxl2192.168.x.xcoordinator1 DataNode1 gtm_proxy1
Pgxl3192.168.x.xcoordinator2 DataNode2 gtm_proxy2

2.配置环境变量

在主节点上执行以下步骤,内容如下:(hostip.properties是IP配置文件,录入ip即可在这里插入图片描述该程序主要完成以下工作:
关闭防火墙、关闭selinux、关闭networkmanager(未安装该服务不用执行)、修改主机名、修改主机名映射。
注意:如果指定主机名,不使用默认的pgxl1等,查看更改主机名小节,参照操作。

3.安装依赖包并创建用户

主节点执行以下步骤,内容如下:
在这里插入图片描述
该过程主要是安装一些依赖、创建用于postgres集群的用户。
依赖:flex bison readline-devel zlib-devel openjade readline-devel gcc*
注意:1. 当出现时,输入y/n决定是否继续安装。
2.脚本执行时需要输入自定义的用户密码,且每台主机的用户默认都是postgres,如果想要自己定义,请根据脚本内容自行创建。

将masterssh.sh和installpg.sh拷贝至postgres用户根目录/home/postgres下,在主节点登录postgres用户,两个脚本都在postgres用户下执行

4.配置主节点免密登录

执行 以下步骤,内容如下:

配置主机ssh免密登录到从节点
验证是否成功(第一次登录需要输密码):
[postgres@pgxl1 ~]$ ssh pgxl2
[postgres@pgxl2 ~]$ exit
[postgres@pgxl1 ~]$ ssh pgxl3

5.安装postgres-xl

#创建规划目录
执行 以下步骤进行pg安装。
在这里插入图片描述
注意:脚本中刷新 .bashrc环境变量可能不成功

6.修改配置文件并初始化

在/pgxl/bin执行: ./pgxc_ctl
再在 PGXC 下输入prepare回车
会在/home/postgres/pgxc_ctl下生成pgxc_ctl.conf
根据需要修改这个文件(重点是加粗部分):

#!/usr/bin/env bash
pgxcInstallDir=$ HOME/pgxc
pgxcOwner=$ USER
pgxcUser=$ pgxcOwner
tmpDir=/tmp
localTmpDir=$ tmpDir
configBackup=n
configBackupHost=pgxc-linker
configBackupDir=$ HOME/pgxc
configBackupFile=pgxc_ctl.bak
#---- GTM
#---- GTM Master -----------------------------------------------
gtmName=gtm
gtmMasterServer=pgxl1
gtmMasterPort=20001
gtmMasterDir=$ HOME/pgxc/nodes/gtm
#---- Configuration —
gtmExtraConfig=none
gtmMasterSpecificExtraConfig=none
#---- GTM Slave -----------------------------------------------
gtmSlave=n #是否启用gtmSlave
gtmSlaveName=gtmSlave
gtmSlaveServer=pgxl2
gtmSlavePort=20002
gtmSlaveDir=$ HOME/pgxc/nodes/gtm
#---- GTM Proxy
gtmProxyDir=$ HOME/pgxc/nodes/gtm_pxy
gtmProxy=y #是否启用gtmProxy
gtmProxyNames=(gtm_pxy1 gtm_pxy2)
gtmProxyServers=(pgxl2 pgxl3)
gtmProxyPorts=(20001 20001)
gtmProxyDirs=($ gtmProxyDir $ gtmProxyDir)
#---- Configuration ----
gtmPxyExtraConfig=none
gtmPxySpecificExtraConfig=(none none)
coordMasterDir=$ HOME/pgxc/nodes/coord
coordSlaveDir=$ HOME/pgxc/nodes/coord_slave
coordArchLogDir=$ HOME/pgxc/nodes/coord_archlog
coordNames=(coord1 coord2) # 名称
coordPorts=(20004 20005) # 端口
poolerPorts=(20010 20011) # Master pooler ports
coordPgHbaEntries=(192.168.204.0/24) (虚拟机的ip网段)
#coordPgHbaEntries=(::1/128)
#---- Master -------------
coordMasterServers=(pgxl2 pgxl3) #主机名
coordMasterDirs=($ coordMasterDir $ coordMasterDir)
coordMaxWALsernder=0 # needed to configure slave. If zero value is specified,
coordMaxWALSenders=($ coordMaxWALsernder $ coordMaxWALsernder)
#---- Slave -------------
coordSlave=n # 是否启用协调coordSlave
coordSlaveSync=y
coordSlaveServers=(node07 node08 node09 node06)
coordSlavePorts=(20004 20005 20004 20005)
coordSlavePoolerPorts=(20010 20011 20010 20011)
coordSlaveDirs=($ coordSlaveDir $ coordSlaveDir $ coordSlaveDir $ coordSlaveDir)
coordArchLogDirs=($ coordArchLogDir $ coordArchLogDir $ coordArchLogDir $ coordArchLogDir)
cat > $ coordExtraConfig <<EOF
#================================================
#Added to all the coordinator postgresql.conf
#Original: $ coordExtraConfig
log_destination = ‘stderr’
logging_collector = on
log_directory = ‘pg_log’
listen_addresses = ‘*’
max_connections = 100
EOF
coordSpecificExtraConfig=(none none)
coordExtraPgHba=none
coordSpecificExtraPgHba=(none none)
#----- Additional Slaves -----
coordAdditionalSlaves=n
coordAdditionalSlaveSet=(cad1)
#configured
cad1_Sync=n
cad1_Servers=(node08 node09 node06 node07)
cad1_dir=$ HOME/pgxc/nodes/coord_slave_cad1
cad1_Dirs=($ cad1_dir $ cad1_dir $ cad1_dir $ cad1_dir)
cad1_ArchLogDir=$ HOME/pgxc/nodes/coord_archlog_cad1
cad1_ArchLogDirs=($ cad1_ArchLogDir $ cad1_ArchLogDir $cad1_ArchLogDir $ cad1_ArchLogDir)
#---- Datanodes
datanodeMasterDir=$ HOME/pgxc/nodes/dn_master
datanodeSlaveDir=$ HOME/pgxc/nodes/dn_slave
datanodeArchLogDir=$ HOME/pgxc/nodes/datanode_archlog
primaryDatanode=datanode1 # Primary Node.
datanodeNames=(datanode1 datanode2)
datanodePorts=(20008 20009 ) # Master ports
datanodePoolerPorts=(20012 20013) # Master pooler ports
datanodePgHbaEntries=(192.168.204.0/24)
#---- Master ----------------
datanodeMasterServers=(pgxl2 pgxl3)
datanodeMasterDirs=($ datanodeMasterDir $ datanodeMasterDir)
datanodeMaxWalSender=0
datanodeMaxWALSenders=($ datanodeMaxWalSender $ datanodeMaxWalSender)
#---- Slave -----------------
datanodeSlave=n #是否启用datanodeSlave
datanodeSlaveServers=(node07 node08 node09 node06)
datanodeSlavePorts=(20008 20009 20008 20009)
datanodeSlavePoolerPorts=(20012 20013 20012 20013)
datanodeSlaveSync=y
datanodeSlaveDirs=($ datanodeSlaveDir $ datanodeSlaveDir $ datanodeSlaveDir $ datanodeSlaveDir)
datanodeArchLogDirs=($ datanodeArchLogDir $ datanodeArchLogDir $ datanodeArchLogDir $ datanodeArchLogDir )
#---- Configuration files —
datanodeExtraConfig=none
datanodeSpecificExtraConfig=(none none )
datanodeExtraPgHba=none
datanodeSpecificExtraPgHba=(none none )
#----- Additional Slaves -----
datanodeAdditionalSlaves=n
#---- WAL archives
walArchive=n
walArchiveSet=(war1 war2)
war1_source=(master)
wal1_source=(slave)
wal1_source=(additiona_coordinator_slave_set additional_datanode_slave_set)
war1_host=node10
war1_backupdir=$ HOME/pgxc/backup_war1
wal2_source=(master)
war2_host=node11
war2_backupdir=$ HOME/pgxc/backup_war2
#=============<< End of future extension demonistration >>
修改好之后,在/pgxl/bin命令执行:./ pgxc_ctl –c pgxc_ctl.conf init all
进行初始化。
注意:1. 执行pgxc_ctl文件的时候,如读取的信息是/pgxc_ctl/pgxc_ctl.conf会显示找不到该文件,此时需要在环境配置.bashrc中里面增加一项
在这里插入图片描述
2. 初始化完毕后可能出现以下问题:



这些都是环境变量问题(.bashrc文件),将环境变量改为:(根据自己的安装目录修改)
在这里插入图片描述
刷新环境变量,重新初始化即可(若出现gtm已经存在,要将安装目录下gtm文件删除)
3. 无法开始事务的办法是将数据节点上pgxc/gtm_proxy/gtm_proxy.conf文件中的gtm_host=‘pgxl2’的主机名改为主节点主机名

7. 安装可能遇到的问题

7.1 Readline可能未安装:Yum search readline搜索一下

(也可能是其他的找不到,先搜索一下,然后安装缺失依赖文件即可)


yum -y install readline-devel

7.2 如图连接被拒绝在这里插入图片描述

解决办法:http://www.cnblogs.com/dagestar/articles/3557306.html
如不能解决:修改pgxc_ctl.conf文件:
coordPgHbaEntries=(192.168.233.0/24)
datanodePgHbaEntries=(192.168.233.0/24)
将括号中改为:0.0.0.0/0,然后重新初始化
或者修改pgxc/nodes/coord和pgxc/nodes/dn_master中的pg_hba.conf,内容如下:
在这里插入图片描述
每行中的第二个all可改为自己指定的用户

8. 语法命令

8.1 登录服务器

-U指定登录用户,-d指定数据库,-h指定服务器,-p指定端口
psql -h pgxl01 -p 20004 -U test –d cgg

8.2 关闭数据库服务器

关闭:postgres@lgr-pc:~$ pg_ctl stop
重启:postgres@lgr-pc:~$ pg_ctl restart

8.1 常用命令

\h:查看SQL命令的解释,比如\h select。
?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\i: 从指定文件中读取命令。
\conninfo:列出当前数据库和连接的信息。
\password 设置密码
\q: 退出

8.3 sql语法

添加列:ALTER TABLE user_tbl ADD email VARCHAR(40);
修改列名:ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
删除列:ALTER TABLE user_tbl DROP COLUMN email;
更新结构:ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
修改表名:ALTER TABLE user_tbl RENAME TO backup_tbl;

8.4 创建用户与导入导出数据

创建用户 https://blog.csdn.net/zhangzeyuaaa/article/details/77941039
导入导出数据 https://blog.csdn.net/liujiayu2/article/details/50600058

指定主机名

如果客户指定主机名,不使用默认主机名,则需要更改部分步骤

  1. 需要先更改ssh配置
  2. 修改使用hostip.properties,在ip后加上主机名,用空格分隔开
    执行以下步骤:
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值