人大金仓KingBase之分析型数据库KADB的安装和使用
简介
官网:https://www.kingbase.com.cn/
在线文档:https://help.kingbase.com.cn/kadb/admin/intro/index.html
KingbaseAnalyticsDB 官网:https://kingbase.com.cn/fxxsjk/index.htm
KingbaseAnalyticsDB 官方文档:https://kingbase.com.cn/kadb_wdxz/index.htm
KingbaseAnalyticsDB 下载使用:https://kingbase.com.cn/kadb_rjxz/index.htm
金仓分析型数据库系统KingbaseAnalyticsDB(以下简称为 KADB)是北京人大金仓信息技术股份有限公司推出的MPP数据库产品。产品应大数据时代海量数据分析处理的需求,采用shared-nothing分布式架构,具有高性能,高扩展性能力,承载了人大金仓在大规模并行计算和数据库管理领域先进的研发成果,它定位于数据分析类应用市场,可以处理TB-PB级别的数据,并能集成多种异构数据源进行数据挖掘和分析。在处理复杂查询,如:多表连接、聚合等,也体现出了很好的性能。适用于数据仓库、决策支持、高级分析等分析类应用场景。
KingbaseAnalyticsDB(简称KADB)是人大金仓为应对大数据时代海量数据分析处理的需求推出的具备高性能、高扩展能力的MPP数据库。它具有分布式集群部署、数据分片无共享存储、大规模并行处理技术(MPP)、数据分区、行列混存、数据库内压缩、MapReduce、在线扩容、内嵌数十种AI算法等技术特点,能满足当前各行业对大量数据采集、存储、挖掘及分析等多种需求的能力。
目前,该产品主要定位于数据分析类应用市场,可处理PB级甚至更大存储量的数据,并能集成多种异构数据源进行数据挖掘和分析,在处理多表连接、聚合等各类复杂查询方面也体现出了很好的性能。
产品优势
多源数据整合
- 提供高效数据加载工具,面向异构数据源,支持更简洁的源端与目标端映射方式,更方便的清洗转化规则设计
- 同时支持联邦查询,部分场景下免去复杂ETL过程1
海量数据存储
- 支持多存储引擎及行列混存技术,1:20的高压缩比有效减少I/O开销
- 支持多种数据分布及表分区策略,满足不同场景查询性能需求
并行计算能力
- 基于MPP+SN的分布式架构,所有数据节点能力完全对等,充分利用集群中的计算资源完成任务
- 存储及计算能力随节点扩展线性提升,扩展过程简单,对在线业务无影响
智能多维分析
- 支持流水线执行器,支持多种索引,支持热数据内存驻留,并在高并发场景进行优化,上亿级别数据点查毫秒级响应
- 基于SQL2003标准,提供OLAP扩展及基于SQL的GIS计算、机器学习、图计算及扩展自定义计算类型支持,以满足不同业务计算需求
高可用易拓展
- 全面的容错体系,具备不间断服务能力
- 支持管理/数据节点自动failover及接口重连重试机制,最大限度保障数据不丢,连接不断
- 在线扩容缩容,不影响生产业务,性能线性增长
深度兼容适配
- 兼容主流linux操作系统、主流服务器架构,包括国产操作系统、国产服务器架构等
- 深度适配国内外主要GIS产品, 形成联合解深度适配国内外主要GIS产品, 形成联合解决方案。
配套工具
KStudio For KADB
KStudio For KADB 是金仓自主研发的一款功能强大的分析型数据库管理工具。请参考:https://www.kingbase.com.cn/kstudioforkadb/index.htm
下载:https://kingbase.oss-cn-beijing.aliyuncs.com/KADB/KStudio/KStudio.zip
KMonitor For KADB
KMonitor For KADB是一款针对金仓分析型数据库的全方位监控平台。请参考:https://www.kingbase.com.cn/kmonitorforkadb/index.htm
下载: https://kingbase.oss-cn-beijing.aliyuncs.com/KADB/KMonitor/KMonitor.zip
软件下载适用
下载适用:https://www.kingbase.com.cn/kadb_rjxz/index.htm
产品架构
KADB的数据库服务器部分采用MPP+无共享式的分布式架构。集群组件包括集群中包括主控(Master)节点以及计算(Segment)节点。
图 2 MPP架构
主控(Master)节负责接收应用连接、为应用的请求生成执行计划并将计划分派给计算(Segment)节点执行并将执行结果汇总返回给应用。
计算(Segment)节点是独立的数据存储和查询执行引擎,用户数据以分片的方式存储在计算(Segment)节点上。计算(Segment)节点会执行主控节点分派的计算任务和将本节点的数据分发给需要数据的其他计算节点。
KADB数据库是一种大规模并行处理(MPP)数据库服务器,其架构特别针对管理大规模分析型数据仓库以及商业智能工作负载而设计。
MPP(也被称为shared nothing架构)指有两个或者更多个处理器协同执行一个操作的系统,每一个处理器都有其自己的内存、操作系统和磁盘。 KADB使用这种高性能系统架构来分布数T字节数据仓库的负载并且能够使用系统的所有资源并行处理一个查询。
KADB数据库是基于PostgreSQL开源技术的。它本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数据库管理系统(DBMS)。 它基于PostgreSQL 9.4开发,其SQL支持、特性、配置选项和最终用户功能在大部分情况下和PostgreSQL非常相似。 与KADB数据库交互的数据库用户会感觉在使用一个常规的PostgreSQL DBMS。
KADB数据库可以使用追加优化(append-optimized,AO)的存储格式来批量装载和读取数据,并且能提供HEAP表上的性能优势。 追加优化的存储为数据保护、压缩和行/列方向提供了校验和。行式或者列式追加优化的表都可以被压缩。
KADB数据库和PostgreSQL的主要区别在于:
- 在基于Postgres查询规划器的常规查询规划器之外,可以利用GPORCA进行查询规划。
- KADB数据库可以使用追加优化的存储。
- KADB数据库可以选用列式存储,数据在逻辑上还是组织成一个表,但其中的行和列在物理上是存储在一种面向列的格式中,而不是存储成行。 列式存储只能和追加优化表一起使用。列式存储是可压缩的。当用户只需要返回感兴趣的列时,列式存储可以提供更好的性能。 所有的压缩算法都可以用在行式或者列式存储的表上,但是行程编码(RLE)压缩只能用于列式存储的表。KADB数据库在所有使用列式存储的追加优化表上都提供了压缩。
为了支持KADB数据库的并行结构,PostgreSQL的内部已经被修改或者增补。 例如,系统目录、优化器、查询执行器以及事务管理器组件都已经被修改或者增强,以便能够在所有的并行PostgreSQL数据库实例之上同时执行查询。 KADB的interconnect(网络层)允许在不同的PostgreSQL实例之间通讯,让系统表现为一个逻辑数据库。
KADB数据库也可以使用声明式分区和子分区来隐式地生成分区约束。
KADB数据库也包括为针对商业智能(BI)负载优化PostgreSQL而设计的特性。 例如,KADB增加了并行数据装载(外部表)、资源管理、查询优化以及存储增强,这些在PostgreSQL中都是无法找到的。 很多KADB开发的特性和优化都在PostgreSQL社区中找到了一席之地。例如,表分区最初是由KADB开发的一个特性,现在已经出现在了标准的PostgreSQL中。
KADB数据库的查询使用一种火山式查询引擎模型,其中的执行引擎拿到一个执行计划并且用它产生一棵物理操作符树,然后通过物理操作符计算表,最后返回结果作为查询响应。
KADB数据库通过将数据和处理负载分布在多个服务器或者主机上来存储和处理大量的数据。 KADB数据库是一个由基于PostgreSQL 8.3的数据库组成的阵列,阵列中的数据库工作在一起呈现了一个单一数据库的景象。 Master是KADB数据库系统的入口。客户端会连接到这个数据库实例并且提交SQL语句。 Master会协调与系统中其他称为Segment的数据库实例一起工作,Segment负责存储和处理数据。
Figure 1. 高层的KADB数据库架构
选择KADB安装方式
KADB数据库安装提供两种安装方式,一种为单机、一种为多机。
- 单机安装
安装 KADB 在一台服务器上,master、segment使用同一IP不同端口运行,适合在于适配、介绍、开发以及功能测试等工作中使用,无法确保高可用。
- 多机安装
安装 KADB 在多台服务器上,master、segment及其备用节点使用不同IP不同端口运行,适合在部署、上线、POC以及性能测试等工作中使用。
环境申请
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | -- 网卡 docker network create --subnet=172.72.0.0/16 lhrnw -- 若是多台主机,则可以考虑使用swarm网络 /*-- manager node1节点 docker swarm init --advertise-addr 172.18.0.15 docker info docker node ls -- node2和node3节点加入swarm docker swarm join --token SWMTKN-1-3hpzg7r6t8ql15ttyxxpe3g80hmv54s5k9l1lny55058o4qt1x-6lypi3esbdn7mvoe7yvxuv0vv 172.18.0.15:2377 -- node1主节点 docker network rm lhrnw docker network create --subnet=172.72.0.0/16 -d overlay lhrnw --attachable */ docker rm -f kmdw docker run -itd --name kmdw -h kmdw \ --net=lhrnw --ip 172.72.6.60 \ -p 6432:5432 -p 10000-10004:10000-10004 -p 28086:28080 -p 622:22 -p 63389:3389 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ --add-host='kmdw:172.72.6.60' \ --add-host='ksdw1:172.72.6.62' \ --add-host='ksdw2:172.72.6.63' \ lhrbest/lhrcentos76:9.2 \ /usr/sbin/init docker rm -f ksdw1 docker run -itd --name ksdw1 -h ksdw1 \ --net=lhrnw --ip 172.72.6.62 -p 622:22 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ --add-host='kmdw:172.72.6.60' \ --add-host='ksdw1:172.72.6.62' \ --add-host='ksdw2:172.72.6.63' \ lhrbest/lhrcentos76:9.2 \ /usr/sbin/init docker rm -f ksdw2 docker run -itd --name ksdw2 -h ksdw2 \ --net=lhrnw --ip 172.72.6.63 -p 622:22 \ -v /sys/fs/cgroup:/sys/fs/cgroup \ --privileged=true \ --add-host='kmdw:172.72.6.60' \ --add-host='ksdw1:172.72.6.62' \ --add-host='ksdw2:172.72.6.63' \ lhrbest/lhrcentos76:9.2 \ /usr/sbin/init docker cp ./ kmdw:/soft/ -q |
所有节点创建用户和目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | groupadd -g 530 mppadmin useradd -g 530 -u 530 -m -d /home/mppadmin -s /bin/bash mppadmin mkdir -p /home/mppadmin/mpp/bin/ mkdir -p /home/mppadmin/dbdata/master mkdir -p /home/mppadmin/dbdata/primary mkdir -p /home/mppadmin/dbdata/mirror mkdir -p /home/mppadmin/dbbackup chown -R mppadmin:mppadmin /home/mppadmin echo "mppadmin:lhr" | chpasswd cat > /home/mppadmin/allhostfile <<EOF kmdw ksdw1 ksdw2 EOF cat >/home/mppadmin/seghostfile <<EOF ksdw1 ksdw2 EOF |
创建数据目录/dbdata,备份目录/dbbackup。如果用户提供单独磁盘,建议直接软链接到/home/mppadmin/dbdata和dbbackup目录
1 2 3 4 5 6 7 8 9 10 11 | #软链接 gpssh -f /home/mppadmin/hostfile -e 'ln -s /dbdata /home/mppadmin/' gpssh -f /home/mppadmin/hostfile -e 'ln -s dbbackup /home/mppadmin/' #如果全部空间在/home下,建议如下创建目录 gpssh -f /home/mppadmin/hostfile -e 'mkdir -p /home/mppadmin/dbdata' gpssh -f /home/mppadmin/hostfile -e 'mkdir -p /home/mppadmin/dbbackup' #创建次一级master实例目录和segment实例目录 gpssh -f /home/mppadmin/hostfile -e 'mkdir -p /home/mppadmin/dbdata/master' gpssh -f /home/mppadmin/hostfile -e 'mkdir -p /home/mppadmin/dbdata/primary' |
免密配置
只在master节点(172.72.6.60)操作:
1 2 3 4 5 | ./sshUserSetup.sh -user root -hosts "kmdw ksdw1 ksdw2" -advanced -noPromptPassphrase ./sshUserSetup.sh -user mppadmin -hosts "kmdw ksdw1 ksdw2" -advanced -noPromptPassphrase # 所有节点 chmod 600 /home/mppadmin/.ssh/config |
1、为了后续的维护方便,建议root和mppadmin用户都做互信的配置。
2、必须给600权限,否则会报错“.Bad owner or permissions on /home/mppadmin/.ssh/config”
安装数据库软件(以下内容都只在master节点操作)
上传KADB介质及license文件到搭建集群的master节点的/soft目录下。
安装软件
然后执行安装:
1 2 | su - mppadmin sh /soft/KingbaseAnalyticsDB-V003R002C001B0181-CENTOS7-x86_64.run /home/mppadmin/mpp |
也可以自定义安装路径,为方便管理,建议安装路径为/home/mppadmin/mpp。
安装licence.dat
将license拷贝到/home/mppadmin/mpp/bin目录下:
1 2 3 4 5 | cp /home/mppadmin/license.dat /home/mppadmin/mpp/bin/license.dat [mppadmin@kmdw mpp]$ ll /home/mppadmin/mpp/bin/license.dat -rw-rw-r-- 1 mppadmin mppadmin 1278 Jan 12 15:18 /home/mppadmin/mpp/bin/license.dat [mppadmin@kmdw mpp]$ |
注意:在正式的生产环境中,master和master standby的license都会根据网卡的mac地址生产,需要将license放到相对应的主机的KADB目录中,且license的名字必须为licence.dat。
环境变量配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | su - mppadmin cat >> /home/mppadmin/.bashrc <<EOF source /home/mppadmin/mpp/mpp_path.sh export MASTER_DATA_DIRECTORY=/home/mppadmin/dbdata/master/mppseg-1 export PGDATABASE=postgres EOF source /home/mppadmin/.bashrc -- 加入其它节点 cat >> /home/mppadmin/.bashrc <<EOF source /home/mppadmin/mpp/mpp_path.sh EOF source /home/mppadmin/.bashrc |
在mpp_path.sh里设置SSH_PORT端口号(默认端口为22),如端口号为默认端口则跳过此步骤:
1 2 3 4 5 | cat >>/home/mppadmin/mpp/mpp_path.sh <<EOF export SSH_PORT=更改后的端口号 EOF |
其它节点安装软件
其实就是拷贝软件到其它节点:
1 | gpseginstall -f /home/mppadmin/allhostfile -u mppadmin |
日志:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | [mppadmin@kmdw ~]$ gpseginstall -f /home/mppadmin/allhostfile -u mppadmin 20230706:15:59:17:005035 gpseginstall:kmdw:mppadmin-[INFO]:-Installation Info: link_name None binary_path /home/mppadmin/mpp binary_dir_location /home/mppadmin binary_dir_name mpp 20230706:15:59:17:005035 gpseginstall:kmdw:mppadmin-[INFO]:-check cluster password access 20230706:15:59:17:005035 gpseginstall:kmdw:mppadmin-[INFO]:-de-duplicate hostnames 20230706:15:59:17:005035 gpseginstall:kmdw:mppadmin-[INFO]:-master hostname: kmdw 20230706:15:59:18:005035 gpseginstall:kmdw:mppadmin-[INFO]:-rm -f /home/mppadmin/mpp.tar; rm -f /home/mppadmin/mpp.tar.gz 20230706:15:59:18:005035 gpseginstall:kmdw:mppadmin-[INFO]:-cd /home/mppadmin; tar cf mpp.tar mpp 20230706:15:59:20:005035 gpseginstall:kmdw:mppadmin-[INFO]:-gzip /home/mppadmin/mpp.tar 20230706:16:00:01:005035 gpseginstall:kmdw:mppadmin-[INFO]:-remote command: mkdir -p /home/mppadmin 20230706:16:00:01:005035 gpseginstall:kmdw:mppadmin-[INFO]:-remote command: rm -rf /home/mppadmin/mpp 20230706:16:00:01:005035 gpseginstall:kmdw:mppadmin-[INFO]:-scp software to remote location 20230706:16:00:08:005035 gpseginstall:kmdw:mppadmin-[INFO]:-remote command: gzip -f -d /home/mppadmin/mpp.tar.gz 20230706:16:00:31:005035 gpseginstall:kmdw:mppadmin-[INFO]:-md5 check on remote location 20230706:16:00:34:005035 gpseginstall:kmdw:mppadmin-[INFO]:-remote command: cd /home/mppadmin; tar xf mpp.tar 20230706:16:00:53:005035 gpseginstall:kmdw:mppadmin-[INFO]:-remote command: rm -f /home/mppadmin/mpp.tar 20230706:16:00:53:005035 gpseginstall:kmdw:mppadmin-[INFO]:-rm -f /home/mppadmin/mpp.tar.gz 20230706:16:00:54:005035 gpseginstall:kmdw:mppadmin-[INFO]:-version string on master: gpssh version 6.0.0 build dev.V003R002C001B0181.d354cc9215 20230706:16:00:54:005035 gpseginstall:kmdw:mppadmin-[INFO]:-remote command: . /home/mppadmin/mpp/mpp_path.sh; /home/mppadmin/mpp/bin/gpssh --version 20230706:16:00:55:005035 gpseginstall:kmdw:mppadmin-[INFO]:-SUCCESS -- Requested commands completed [mppadmin@kmdw ~]$ |
KADB数据库初始化(最重要一步,只在master操作)
数据库初始化主要功能是创建实例,并生成相应master和segment的数据目录。使用之前的hostfile中的主机创建集群,确定某一个节点为master,其它节点为segment。首先创建配置文件,命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | cat > /home/mppadmin/gpinitsystem_config <<EOF ARRAY_NAME="MPP" #segment节点名prefix SEG_PREFIX=mppseg #segment节点基础端口,每多一个segment会自动增加1,默认为40000 PORT_BASE=40000 MIRROR_PORT_BASE=50000 #用于申明segment目录地址以及共多少个segment,其中每台主机有多少个segment就对应多少个文件夹,下面为两个文件夹,暨每台主机2个segment declare -a DATA_DIRECTORY=(/home/mppadmin/dbdata/primary /home/mppadmin/dbdata/primary ) declare -a MIRROR_DATA_DIRECTORY=(/home/mppadmin/dbdata/mirror /home/mppadmin/dbdata/mirror ) #master主机地址 MASTER_HOSTNAME=kmdw #master目录 MASTER_DIRECTORY=/home/mppadmin/dbdata/master #master端口,默认为5432 MASTER_PORT=5432 TRUSTED_SHELL=ssh CHECK_POINT_SEGMENTS=8 ENCODING=UNICODE DATABASE_NAME=lhrgpdb #选择需要初始化segment的主机名,列出到seghostfile目录 MACHINE_LIST_FILE=/home/mppadmin/seghostfile EOF |
初始化集群:
1 | gpinitsystem -c /home/mppadmin/gpinitsystem_config -a |
若有问题,请删除集群后继续初始化:
1 | gpdeletesystem -d /home/mppadmin/dbdata/master/mppseg-1/ |
远程访问(只在master操作)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | cat >> /home/mppadmin/dbdata/master/mppseg-1/pg_hba.conf <<EOF host all all 0.0.0.0/0 md5 EOF #重载配置文件 gpstop -u -- 修改密码 [mppadmin@kmdw ~]$ psql -d postgres psql (9.4.24) Type "help" for help. postgres=# \password mppadmin Enter new password: Enter it again: postgres=# postgres=# create user lhr password 'lhr' superuser; CREATE ROLE #进入后可以创建表及插入数据 psql -U mppadmin -h 172.18.0.15 -p 6432 -d postgres create table t1 (i int, j int);se insert into t1 values (1,1),(2,2),(3,3); CREATE TABLE t_hash AS SELECT id, md5(id::text) FROM generate_series(1, 2000000) AS id; lhrgpdb=# \dt+ t_hash 关联列表 架构模式 | 名称 | 类型 | 拥有者 | 持续的 | 大小 | 描述 ----------+--------+--------+--------+--------+--------+------ public | t_hash | 数据表 | lhr | 永久的 | 130 MB | (1 行记录) |
系统性能环境测试
使用脚本检测集群节点间网络和各节点I/O是否正常。
1 2 3 4 5 | #假设数据所在目录为/home/mppadmin/dbdata #检查网络 gpcheckperf -f /home/mppadmin/hostfile -r N -D -d /home/mppadmin/dbdata #检查磁盘,注意如果不带-S参数,默认生成服务器内存大小的数据 gpcheckperf -f /home/mppadmin/hostfile -d /home/mppadmin/dbdata -r d -D -v |
卸载KADB
删除集群
保持集群启动
使用gpdeletesystem删除集群。
1 | gpdeletesystem -d /home/mppadmin/dbdata/master/mppseg-1/ |
删除程序
确认集群停止,然后在所有节点上删除相应的KADB目录即可。
1 | rm -rf /home/mppadmin/mpp |
gpcc安装和卸载(不能使用)
安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | su - mppadmin cat >> /home/mppadmin/dbdata/master/mppseg-1/pg_hba.conf <<EOF local all gpmon trust host all gpmon 127.0.0.1/28 trust host all gpmon ::1/128 trust host all gpmon samenet trust host all all 0.0.0.0/0 md5 EOF gpstop -u create user gpmon password 'lhr' superuser; psql -U gpmon CREATE DATABASE gpperfmon; su - mppadmin source /home/mppadmin/mpp/mpp_path.sh export MASTER_DATA_DIRECTORY=/home/mppadmin/dbdata/master/mppseg-1 unzip greenplum-cc-web-6.9.0-gp6-rhel7-x86_64.zip cd greenplum-cc-web-6.9.0-gp6-rhel7-x86_64/ ./gpccinstall-6.9.0 -W -- 路径输入/home/mppadmin ,不启用SSL/TLS,语言选择Chinese echo 'source /home/mppadmin/greenplum-cc/gpcc_path.sh' >> /home/mppadmin/.bashrc source /home/mppadmin/.bashrc cd /home/mppadmin/greenplum-cc/gppkg gppkg -i MetricsCollector-6.9.0_gp_6.0.0-rhel7-x86_64.gppkg gpstop -M fast -ar gpcc start ; gpcc status echo '*:5432:gpperfmon:gpmon:lhr' > ~/.pgpass chmod 600 /home/mppadmin/.pgpass gpconfig -c shared_preload_libraries -v metrics_collector --masteronly gpconfig -c shared_preload_libraries -v pg_stat_statements,passwordcheck,security_enhance,identity_auth,gpexpand_rw,gp_shrink,force_view,metrics_collector gpconfig -c gp_enable_query_metrics -v on gpconfig -c track_activities -v on gpconfig -s shared_preload_libraries gpconfig -s gp_enable_query_metrics gpconfig -s track_activities gpstop -M fast -ra gpcc stop ; gpcc start ; gpcc status /home/mppadmin/dbdata/master/mppseg-1/postgresql.conf -- find /home/mppadmin/ -name postgresql.conf vi /home/mppadmin/dbdata/primary/mppseg0/postgresql.conf vi /home/mppadmin/dbdata/primary/mppseg1/postgresql.conf vi /home/mppadmin/dbdata/mirror/mppseg3/postgresql.conf vi /home/mppadmin/dbdata/mirror/mppseg2/postgresql.conf vi /home/mppadmin/dbdata/primary/mppseg2/postgresql.conf vi /home/mppadmin/dbdata/primary/mppseg3/postgresql.conf vi /home/mppadmin/dbdata/mirror/mppseg1/postgresql.conf vi /home/mppadmin/dbdata/mirror/mppseg0/postgresql.conf |
故障处理:Error occurred: non-zero rc: 1
在修改shared_preload_libraries参数后,启动KADB报错:
1 2 3 4 5 6 7 8 9 10 11 12 | 20230707:14:12:02:086181 gpstart:kmdw:mppadmin-[INFO]:-Starting Master instance in admin mode 20230707:14:12:02:086181 gpstart:kmdw:mppadmin-[CRITICAL]:-Failed to start Master instance in admin mode 20230707:14:12:02:086181 gpstart:kmdw:mppadmin-[CRITICAL]:-Error occurred: non-zero rc: 1 Command was: 'env GPSESSID=0000000000 GPERA=None $GPHOME/bin/pg_ctl -D /home/mppadmin/dbdata/master/mppseg-1 -l /home/mppadmin/dbdata/master/mppseg-1/pg_log/startup.log -w -t 600 -o " -p 5432 -c gp_role=utility " start' rc=1, stdout='waiting for server to start.... stopped waiting ', stderr='pg_ctl: could not start server Examine the log output. -- tailf /home/mppadmin/dbdata/master/mppseg-1/pg_log/startup.log 2023-07-07 13:36:37.621838 CST,,,p82170,th485660800,,,,0,,,seg-1,,,,,"FATAL","XX000","could not load library ""/home/mppadmin/mpp/lib/postgresql/metrics_collector.so"": /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /home/mppadmin/mpp/lib/postgresql/metrics_collector.so)",,,,,,,,"internal_load_library","dfmgr.c",240,1 0xae2cda postgres errstart (elog.c:557) 2 0xae7000 postgres <symbol not found> (dfmgr.c:237) |
解决(所有节点都做操作):
1 2 3 4 5 6 | strings /usr/lib64/libstdc++.so.6 | grep 'CXXABI' -- 从centos8中拷贝文件/usr/lib64/libstdc++.so.6.0.25,然后做快捷方式 -- 直接下载: wget https://cdn.frostbelt.cn/software/libstdc%2B%2B.so.6.0.26 ln -sf /usr/lib64/libstdc++.so.6.0.25 /usr/lib64/libstdc++.so.6 |
libc.so.6: version `GLIBC_2.18' not found
启动KADB报错:
1 2 3 4 | 20230707:14:24:56:087504 gpstart:kmdw:root-[CRITICAL]:-Error occurred: non-zero rc: 1 Command was: '$GPHOME/bin/postgres --gp-version' rc=1, stdout='', stderr='/home/mppadmin/mpp/bin/postgres: libc.so.6: version `GLIBC_2.18' not found (required by libstdc++.so.6) |
解决(所有节点都做操作):
1 2 3 4 5 6 7 8 9 10 11 12 13 | -- 安装 curl -O http://ftp.gnu.org/gnu/glibc/glibc-2.18.tar.gz tar zxf glibc-2.18.tar.gz cd glibc-2.18/ mkdir build cd build/ export LD_LIBRARY_PATH= ../configure --prefix=/usr make -j12 make install -j12 -- 检查 strings /usr/lib64/libc.so.6 | grep '^GLIBC' |
最后重启KADB和gpcc即可:
1 2 3 | gpstop -M fast -ra gpcc stop ; gpcc start ; gpcc status |
due to bash: 08:00: command not found
启动gpcc报错:
1 2 3 4 5 6 | 2023-07-07 15:10:04 Failed to start agent on ksdw2 due to bash: 08:00: command not found 2023-07-07 15:10:04 Failed to start agent on kmdw due to bash: 08:00: command not found 2023-07-07 15:10:04 Failed to start agent on ksdw1 due to bash: 08:00: command not found 2023-07-07 15:10:05 Failed to start agent on ksdw2. Please check logs on ksdw2 and run gpcc start to restart agents. 2023-07-07 15:10:05 Failed to start agent on kmdw. Please check logs on kmdw and run gpcc start to restart agents. 2023-07-07 15:10:05 Failed to start agent on ksdw1. Please check logs on ksdw1 and run gpcc start to restart agents. |