IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Postgres-XL数据库集群安装 -> 正文阅读

[大数据]Postgres-XL数据库集群安装

第一部分

本文档以postgres-xl-9.5r1.6为例,安装集群环境(1GTM + 2CN + 2DN),不同版本安装步骤相似。

1.1 Postgres-XL官方文档

https://www.postgres-xl.org/documentation/intro-whatis-postgres-xl.html

1.2 Postgres-XL安装规划

操作系统版本:rhel7.6
Postgres-XL版本:postgres-xl-9.5r1.6

部署规划

1.3 Postgres-XL组件简介

https://www.postgres-xl.org/documentation/intro-whatis-postgres-xl.html
组件介绍

GTM:全局事务管理器,确保群集范围内的事务一致性。
GTM负责发放事务ID和快照作为其多版本并发控制的一部分。
集群可以配置一个或多个备用GTM,以改进可用性。
集群可以在协调器间配置GTM代理, 可用于改善可扩展性,减少GTM的通信量。
GTM Proxy:GTM需要与所有的Coordinators通信,为了降低压力,可以在每个Coordinator机器上部署一个GTM Proxy。

Coordinator:协调员管理用户会话,并与GTM和数据节点进行交互。
协调员解析、查询计划,并给语句中的每一个组件发送下一个序列化的全局性计划。
为节省机器,通常此服务和数据节点部署在一起。

Data Node:数据节点是数据实际存储的地方。
数据的分布可以由DBA来配置。为了提高可用性,可以配置数据节点的热备以便进行故障转移准备。

总结:GTM是负责ACID的,保证分布式数据库全局事务一致性。得益于此,就算数据节点是分布的,但是在主节点操作增删改查事务时,就如同只操作一个数据库一样简单。
Coordinator是调度的,将操作指令发送到各个数据节点。
datanodes是数据节点,分布式存储数据。

第二部分

2.1 修改系统主机名

hostnamectl set-hostname 主机名

2.2 关闭防火墙

#关闭运行中的服务
systemctl stop firewalld

#关闭操作系统自启动
systemctl disable firewalld

#检查关闭情况
systemctl is-enabled firewalld
systemctl status firewalld | grep -i "Active"

2.2 关闭SELINUX

sed -i "s/SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config
setenforce 0
getenforce

2.4 创建安装用户

useradd postgres
passwd postgres

2.5 上传安装包

下载地址:https://www.postgres-xl.org/download/

# 使用工具上传安装包(所有节点)
bzip2 -d postgres-xl-9.5r1.6.tar.bz2
tar xf postgres-xl-9.5r1.6.tar -C /home/postgres

2.6 配置环境变量

su – mongod
vim ~/.bashrc
export PGHOME=/home/pg/pgxl
export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH
export PATH=$PGHOME/bin:$PATH
export PGUSER=postgres
export PGXC_CTL_HOME=/home/pg/pgxl/bin 
source ~/.bash_profile

2.7 创建相应目录

#创建配置文件目录(所有节点)
mkdir -p /home/pg/pgxl
mkdir -p /home/pg/pgxc/nodes
mkdir -p /home/postgres/pgxc/conf

2.8 编译安装数据库

#安装系统依赖(所有节点)
yum install -y flex bison readline-devel zlib-devel openjade docbook-style-dsssl  gcc

cd /home/postgresql/postgres-xl-9.5r1.6
./configure --prefix=/home/postgresql/pgxl
make -j4
make install 
cd /home/postgresql/postgres-xl-9.5r1.6/contrib
make -j4
make install

2.9 配置用户免密登录

#所有节点执行
su - postgresql
ssh-keygen -t rsa 
ssh-copy-id server1
ssh-copy-id server2
ssh-copy-id server3
ssh-copy-id server4

2.10 创建集群配置文件模板

#若需要生成模板文件,可执行 pgxc_ctl,输入PREPARE可获取模板文件
cat > /home/postgres/pgxc/conf/pgxc_ctl.conf <<EOF
#!/usr/bin/env bash
######################### 基本信息 ######################### 
pgxcInstallDir=$HOME/pgxl
pgxcOwner=$USER
pgxcUser=$pgxcOwner
tmpDir=/tmp
localTmpDir=$tmpDir
configBackup=n
configBackupHost=pgxc-linker
configBackupDir=$HOME/pgxc
configBackupFile=pgxc_ctl.bak

######################### GTM ######################### 
gtmName=gtm
gtmMasterServer=server1
gtmMasterPort=20001
gtmMasterDir=$HOME/pgxc/nodes/gtm
gtmExtraConfig=none
gtmMasterSpecificExtraConfig=none

gtmSlave=n
gtmSlaveName=gtmSlave
gtmSlaveServer=server1_bak
gtmSlavePort=20001
gtmSlaveDir=$HOME/pgxc/nodes/gtm
gtmSlaveSpecificExtraConfig=none

####################### GTM Proxy ####################### 
gtmProxyDir=$HOME/pgxc/nodes/gtm_pxy
gtmProxy=y
gtmProxyNames=(gtm_pxy1 gtm_pxy2)
gtmProxyServers=(server2 server3)
gtmProxyPorts=(20001 20001)		
gtmProxyDirs=($gtmProxyDir $gtmProxyDir)	# Not used if it is not configured.
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=(5432 5432)
poolerPorts=(20010 20010)
coordPgHbaEntries=(192.168.56.0/24)
coordMasterServers=(server2 server3)
coordMasterDirs=($coordMasterDir $coordMasterDir)
coordMaxWALsernder=5
coordMaxWALSenders=($coordMaxWALsernder $coordMaxWALsernder)

coordSlave=n
coordSlaveSync=y
coordSlaveServers=(server3 server2)
coordSlavePorts=(20004 20005 20004 20005)
coordSlavePoolerPorts=(20010 20011 20010 20011)
coordSlaveDirs=($coordSlaveDir $coordSlaveDir $coordSlaveDir $coordSlaveDir)
coordArchLogDirs=($coordArchLogDir $coordArchLogDir $coordArchLogDir $coordArchLogDir)
coordExtraConfig=coordExtraConfig

cat > $coordExtraConfig <<EOF
log_destination = 'stderr'
logging_collector = on
log_directory = 'pg_log'
listen_addresses = '*'
max_connections = 100
EOF

coordSpecificExtraConfig=(none none)
coordExtraPgHba=none
coordSpecificExtraPgHba=(none none)
coordAdditionalSlaves=n
coordAdditionalSlaveSet=(cad1)
cad1_Sync=n
cad1_Servers=(server2 server3)
cad1_dir=$HOME/pgxc/nodes/coord_slave_cad1
cad1_Dirs=($cad1_dir $cad1_dir)
cad1_ArchLogDir=$HOME/pgxc/nodes/coord_archlog_cad1
cad1_ArchLogDirs=($cad1_ArchLogDir $cad1_ArchLogDir)

######################### 数据节点 ######################### 
datanodeMasterDir=$HOME/pgxc/nodes/dn_master
datanodeSlaveDir=$HOME/pgxc/nodes/dn_slave
datanodeArchLogDir=$HOME/pgxc/nodes/datanode_archlog

primaryDatanode=datanode1
datanodeNames=(datanode1 datanode2)
datanodePorts=(20008 2008)
datanodePoolerPorts=(20012 20012)
datanodePgHbaEntries=(192.168.56.0/24)
datanodeMasterServers=(server2 server3)
datanodeMasterDirs=($datanodeMasterDir $datanodeMasterDir)
datanodeMaxWalSender=5
datanodeMaxWALSenders=($datanodeMaxWalSender $datanodeMaxWalSender)

datanodeSlave=n
datanodeSlaveServers=(server3 server2)
datanodeSlavePorts=(20008 20008)
datanodeSlavePoolerPorts=(20012 20012)
datanodeSlaveSync=y
datanodeSlaveDirs=($datanodeSlaveDir $datanodeSlaveDir)
datanodeArchLogDirs=( $datanodeArchLogDir $datanodeArchLogDir)

datanodeExtraConfig=none
datanodeSpecificExtraConfig=(none none)
datanodeExtraPgHba=none
datanodeSpecificExtraPgHba=(none none)
datanodeAdditionalSlaves=n

walArchive=n
walArchiveSet=(war1 war2)
war1_source=(master)
wal1_source=(slave)
wal1_source=(additiona_coordinator_slave_set)
war1_host=server2
war1_backupdir=$HOME/pgxc/backup_war1
wal2_source=(master)
war2_host=server3
war2_backupdir=$HOME/pgxc/backup_war2
EOF

2.11 启动Postgres-XL服务

2.11.1. 初始化Postgresql-XL

pgxc_ctl -c /home/postgres/pgxc/conf/pgxc_ctl.conf init all

2.11.2. 停止Postgresql-XL服务

pgxc_ctl -c /home/postgres/pgxc/conf/pgxc_ctl.conf stop all

2.11.3. 启动Postgresql-XL服务

pgxc_ctl -c /home/postgres/pgxc/conf/pgxc_ctl.conf stop all

2.12 测试Postgresql连接

#连接协调节点
psql -h 192.168.56.112 --port=5432 -U postgres -d postgres

2.13 Postgres-XL使用测试

2.13.1. 创建replication表

create table repltab (id int, value text) distribute by replication;

#创建distribute表
create table disttab (id int, value text) distribute by hash(id);

#创建测试数据
#随机产生150W条数据,插入reptab表
insert into repltab(id, value) 
select n, md5(random()::text) from generate_series(1, 1500000) n;

#随机产生150W条数据,插入disttab表
insert into disttab(id, value)
select n, md5(random()::text) from generate_series(1, 1500000) n;

2.13.2. 查看分片表的数据分布情况

postgres=# select xc_node_id, count(*) from repltab group by xc_node_id;
 xc_node_id |  count
------------+---------
  888802358 | 1500000

postgres=# select xc_node_id, count(*) from disttab group by xc_node_id;
 xc_node_id | count
------------+--------
  888802358 | 751007
 -905831925 | 748993

#replication表即复制表,表的内容在每个节点完全相同
#distribute表即分片表,按照分片规则,数据会被分配到不同的数据节点中,通过协调节点查询完整的数据集合。

2.13.3. 不同的抽样方式对照

#system抽样方法
explain analyze select * from disttab tablesample system(1);

system抽样

#bernoulli抽样方法
explain analyze select * from disttab tablesample Bernoulli(1);

bernoulli抽样

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 10:00:40  更:2022-05-14 10:02:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 6:28:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码