Centos7安装GBase8a V9.5_gbase data node端口还是集群服务端口-程序员宅基地

技术标签: gbase8a  数据库  

Centos7安装GBase8a V9.5

提前了解:
1)官方说明内存如果低于2G无法启动服务,所以安装测试环境的话建议机器内存不低于4G;
2)节点数:MPP集群安装的节点数为奇数;
3)软件包:官网可下载(https://www.gbase.cn/download/gbase-8a?category=INSTALL_PACKAGE)。我选择下载 GBase8a_MPP_Cluster-License-9.5.3.14-redhat7.3-x86_64.tar.bz2 ;
4)手册:官网可下载,官方手册里面有详细的安装和使用说明;
5)client连接工具:官网可下载  gccli-9.5.3.14-redhat7.3-x86_64.tar.bz2 ;
6)部署方式:支持两种部署方式:
a)对称部署:把所有服务(GCWare、GCluster、GNode)全部安装部署在同一个节点上,此时,该节点既是Coordinator节点、同时也是Data节点;
b)非对称部署:将GCware、GCluster 和 GNode 安装在不同的节点上,一个节点只属于Coordinator Cluster 或 Data Cluster,也可以既属于 Coordinator Cluster 又属于 Data Cluster;
7)相关端口:
Gcluster          5258          TCP      Coordinator 集群节点对外提供服务的端口
Gnode             5050          TCP      Data 集群节点对外提供服务的端口
Gcware            5918          TCP/UDP  gcware 节点间通讯端口
gcware            5919          TCP      外部连接 gcware 节点端口
syncServer        5288          TCP      syncServer 服务端口
GcrecoverMonit    6268          TCP      Gcrecover 服务端口
数据远程导出端口  16066-16166   TCP      数据远程导出端口

注意:
1)Coordinator Cluster 中要求在同一个网段,网络互通且通信质量优良。不只是能互通、还必须是同一网段;
2)Data Cluster 中要求网络互通且通信质量优良。能互通即可,不要求必须在同一网段;  
3)所有 Coordinator 集群节点的端口要求一致;所有 Data 集群节点的端口要求一致;所有的 gcware 集群节点的端口要求一致;

   
   
一、准备工作

1.基础依赖安装
yum install -y  psmisc  libcgroup  bc  bzip2

python2:一般Centos7默认最小安装会自动包括python2,所以这里无需单独安装。
执行命令 python --version 可查python的看版本信息。

Redhat8/Centos8 需要单独安装 python2,安装完 python2 后使用的命令为 python2,需要将 python2 命令改为默认的 python 命令:alternatives --set python /usr/bin/python2 (或 ln -s 设置软连接 /usr/bin/python)


2.hostname配置
hostnamectl set-hostname gbase8anode01

vi /etc/hosts
192.168.1.162 www.gbase8anode01.com gbase8anode01

vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=gbase8anode01


3.防火墙配置
systemctl  stop firewalld
systemctl  disable firewalld

sed -i "s/SELINUX=enforcing/SELINUX=disabled/g"  /etc/selinux/config
setenforce  0


4.时间&时区配置
timedatectl  set-timezone Asia/Shanghai

timedatectl set-time "2023-10-13 14:00:01"
或者
date -s "2023-10-13 14:00:01"

hwclock -w


5.系统配置:

OS允许的最大进程数设置:
vi /etc/systemd/system.conf
DefaultTasksMax=infinity


虚拟内存设置:

echo "
soft nofile 65535
hard nofile 70000
" >> /etc/security/limits.conf


官方文档时建议设置成无限制:

# ulimit -H -v unlimited
# ulimit -S -v unlimited

或修文件:

#vi /etc/security/limits.conf
* soft as unlimited          
* hard as unlimited

自己根据实际修改,测试环境安装时,此步骤为非必须的步骤。

注意:如果是安装用于生产的环境,则更多的配置优化,可以参考官方的产品手册,我这里只是搭建测试环境,有些官方推荐的其他优化配置这里并未修改。


6.重启
reboot

注意:如果是集群安装,则所有节点都进行上面相关操作,hostname按规划设置。

二、安装数据库

说明:
> 安装成功后会自动生成一个 /home/gbase/.gbase_profile 文件用于设置环境变量。
> GBase 8a MPP Cluster 数据库安装后,会有两个默认数据库用户 root 和 gbase。 
  root 用户密码初始为 “Admin2O11O531”,是数据库的超户。
  gbase 是数据库管理操作(如备份 gcrcman、 gcadmin 等)常用来连接 server 的数据库用户。
  初次登录数据库请使用 root 数据库用户, 在 root 数据库用户下及时更改 root 自己的密码并且给 gbase 数据库用户设置密码,妥善保管 root 数据库用户密码和 gbase 数据库用户密码,以便后续数据库管理操作能够正常连接server。
> 目录说明:
gcware:该目录在安装目录下,用于存储 gcware 的相关文件,包括配置文件和日志等, coordinator 节点有该目录, gnode 节点没有该目录。
gcluster:该目录在安装目录下,用于存储 gcluster 的相关文件,包括配置文件、日志和元数据等。
gnode:该目录在安装目录下,用于存储 gnode 的相关文件,包括配置文件、日志和用户数据等。
/home/dbaUser/:.gbase_profile 文件是数据库安装用户下的环境变量文件。


1.拷贝&解压安装包(root用户操作)
创建安装目
mkdir -p /opt/gbase8a
cp GBase8a_MPP_Cluster-License-9.5.3.14-redhat7.3-x86_64.tar.bz2 /opt/gbase8a
cd /opt/gbase8a
tar -xvf GBase8a_MPP_Cluster-License-9.5.3.14-redhat7.3-x86_64.tar.bz2
解压后会释放一个安装包目录 gcinstall

2.创建DBA对应的OS用户gbase & 创建安装目标目录 & 设置对应目录权限:
1)使用操作系统 root 用户在所有集群节点服务器上创建 DBA 对应的OS用户gbase:
adduser gbase
passwd gbase

2)使用 root 用户将 gcinstall 目录属主更改为 DBA OS用户(gbase):
chown -R gbase:gbase /opt/gbase8a/gcinstall

3)使用操作系统 root 用户在所有集群节点服务器上将安装目标目录的属主更改为 DBA OS用户(gbase),如果安装的目标目录不存在先创建再授权:
mkdir -p /opt/gbase8a
chown -R gbase:gbase /opt/gbase8a

4)使用 root 用户在所有节点上给 DBA OS用户(gbase)赋予安装 GBase 相关的权限:
安装前,使用 root 用户将 gcinstall 目录下的 SetSysEnv.py 文件拷贝到集群所有节点服务器上并执行该文件:
cd gcinstall
scp SetSysEnv.py gbase@集群节点IP:/opt/gbase8a/
./SetSysEnv.py --installPrefix=/opt/gbase8a --dbaUser=gbase

说明:
语法:python SetSysEnv.py --dbaUser=* --installPrefix=* [--cgroup] 
参数:
--installPrefix:用户可配安装目录,必须为 demo.options 中 installPrefix 配置一致。集群日志按归档功能使用该参数。
--dbaUser:必须为 demo.options 中的 dbaUser。
--cgroup:使用资源管理功能时,主要用于修改资源管理配置文件。在使用资源管理前必须执行。

注意:

> 安装之前,需要在 gcluster 节点和 gnode 节点上使用 root 用户执行安装包中提供的一键部署脚本 SetSysEnv.py。 如果 GCware 节点独立部署在单独的服务器上, GCware 节点不需要执行 SetSysEnv.py 文件。
> 将该脚本拷贝到要安装集群的各个节点, 每个节点都需要使用 root 执行。
> 集群各个节点在安装之前, 必须存在集群的安装用户, 且拥有安装目录的读写权限。


3.切换到DBA OS用户(gbase),修改安装的配置文件:
su - gbase
vi /opt/gbase8a/gcinstall/demo.options

installPrefix= /opt/gbase8a
coordinateHost = 192.168.151.234,192.168.151.235,192.168.151.237
coordinateHostNodeID = 234,235,237
dataHost = 192.168.151.234,192.168.151.235,192.168.151.237
#existCoordinateHost =
#existDataHost =
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase'
rootPwd = '111111'
#rootPwdFile = rootPwd.json

根据实际情况修改对应的参数。
注意:dbaPwd配置指定gbase OS用户密码,rootPwd指定root OS用户密码,这里指定的是安装时需要用到的OS用户的密码,而不是数据库用户密码,数据库用户密码时安装完成以后会自动生成默认密码,然后再自行修改。

我修改后的内容如下:
installPrefix= /opt/gbase8a
coordinateHost = 192.168.1.162
coordinateHostNodeID = 162
dataHost = 192.168.1.162
#existCoordinateHost =
#existDataHost =
#existGcwareHost=
gcwareHost = 192.168.1.162
gcwareHostNodeID = 162
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'gbase.123'
rootPwd = 'root.123'
#rootPwdFile = rootPwd.json
#characterSet = utf8
#dbPort = 5258
#sshPort = 22

参数说明:

coordinateHost 所有集群调度节点列表,可以是 IPV4、 IPV6、 主机名、 域名, 地址之间用“,”分隔;
coordinateHostNodeID 每个 Coordinator 节点的 nodeid, 在 IPV6 和域名安装时, 必须指定, IPV4 安装时可不指定,与 coordinateHost 中列出的节点列表一一对应, 之间用“,”分隔;
dataHost 所有集群 Data 节点列表, 可以是 IPV4、 IPV6、 主机名、 域名,节点地址之间用“ ,” 分隔; 注意当使用域名方式部署集群时, 必须先在各个节点的 /etc/hosts 中配置域名和 IP 的对应关系;
existCoordinateHost 所有已存在的 Coordinator 节点列表, IP 地址之间用“ ,” 分隔, 在集群扩容安装新节点时使用;
existDataHost 所有已存在的 Data 节点 IP 列表, IP 地址之间用“ ,” 分隔,在集群扩容安装新节点时使用;
existGcwareHost 所有已存在的 Gcware 节点 IP 列表, IP 地址之间用“,” 分隔,在集群扩容安装新节点时使用;
gcwareHost 所有集群 gcware 节点, 可以是 IPV4、 IPV6、 主机名、 域名,必须指定。 地址之间用“,”分隔;
gcwareHostNodeID 每个 gcware 节点的 nodeid, 在 IPV6 和域名安装时, 必须指定, IPV4 安装时可不指定, 与 gcwareHost 中列出的节点列表一一对应, 之间用“,”分隔;
dbaUser 集群的管理员用户, 安装和管理集群时使用的操作系统用户名。 在安装、 扩容、 替换节点前, 集群所有服务器均需先创建相同用户名的用户作为集群管理员用户;
dbaGroup 集群安装和运行时使用的操作系统用户所属的组名;
dbaPwd 集群安装和运行时使用的操作系统用户的密码;注意:这一点V9.5版本和V8.6版本手册介绍有区别;
rootPwd 安装集群节点机器中 linux 操作系统 root 用户的统一密码。注意:这一点V9.5版本和V8.6版本手册介绍有区别;集群在不支持非 root 用户安装的版本中依然需要 root 权限,这些版本升级时, 仍然需要提供用户 root 密码。 其它情况不需要使用;
rootPwdFile 该参数支持 root 用户在多节点不同密码方式, 与参数 rootPwd不能同时使用, 否则报错。 因不支持非 root 用户安装的集群版本依然需要 root 权限, 所以这些版本升级时, 仍然需要提供用户 root 密码。 其它情况不需要使用;
characterSet 系统支持指定字符集安装, 默认不在 demo.options 文件中显示。 953 的默认字符集是 utf8mb4( 4 字节) , 可选值为[utf8,gbk, gb18030, utf8mb4]。
sshPort用于指定集群各节点服务器的 sshd 服务端口号, 要求所有节点 sshd 服务端口号一致。 默认值为 22


4.执行脚本进行安装
以DBA OS用户(gbase)执行安装命令:
cd /opt/gbase8a/gcinstall/
$ ./gcinstall.py --silent=demo.options


语法:
./gcinstall.py --license_file=licenseFile --silent=demo.options [--passwordInputMode]

如果还未获得License,先安装后导入License,则执行安装命令:
./gcinstall.py --silent=demo.options [--passwordInputMode]

参数说明:
--silent:指定集群安装的配置文件;
--license_file:原厂许可文件, 写全路径和文件名。 文件需要在安装之前先获取, 并且有执行集群安装的用户的访问权限。
--passwordInputMode:
gcinstall.py 命令可选参数。用于指定密码获取的方式,通过不同的参数实现不同的获取方式。若指定该参数 ,则demo.options中的密码不必再修改。取值范围为file、pwdsame、pwddiff, 默认值为 file。
取值说明如下:
file : 表示从文件或命令行参数获取,和原有的方式一致,该方式下,文件中的密码是明文的;默认该方式;
pwdsame:表示从终端由用户输入密码,并且所有节点的密码一致情况下使用该参数,对于不同用户密码只输入一次;
pwddiff: 表示从终端由用户输入密码,并且节点间的密码不一致情况下使用该参数,对于不同用户密码每个节点分别输入一次。

安装过程中,shell界面进行交互提示输入和确认:

Do you accept the above licence agreement ([Y,y]/[N,n])? y
Cgconfig service is not exist on host ['192.168.1.162'], resource manangement can not be used, continue ([Y,y]/[N,n])? y    # 操作系统没cgroup(资源管理)组件,输入 Y 回车忽略、继续安装
Are you sure to install GCluster on these nodes ([Y,y]/[N,n])? y

安装完成:
192.168.1.162         install gcware and cluster on host 192.168.1.162 successfully.


5.查看集群状态
安装成功后,通过 gcadmin 可以查看集群状态。
要先退出后重新进入gbase用户shell先执行,否则安装后直接执行会报命令不存在(环境变量未生效的原因),也可以直接执行 source ~/.bash_profile 使环境变量生效:

$ source ~/.bash_profile
或者退出重新登录生效
$ exit
# su - gbase
$ gcadmin
CLUSTER STATE:         ACTIVE

=======================================
|  GBASE GCWARE CLUSTER INFORMATION   |
=======================================
| NodeName |    IpAddress    | gcware |
---------------------------------------
| gcware1  | 192.168.1.162 |  OPEN  |
---------------------------------------
=========================================================
|         GBASE COORDINATOR CLUSTER INFORMATION         |
=========================================================
|   NodeName   |    IpAddress    | gcluster | DataState |
---------------------------------------------------------
| coordinator1 | 192.168.1.162 |  CLOSE   |     0     |
---------------------------------------------------------
================================================================
|           GBASE CLUSTER FREE DATA NODE INFORMATION           |
================================================================
| NodeName  |    IpAddress    | gnode | syncserver | DataState |
----------------------------------------------------------------
| FreeNode1 | 192.168.1.162 | CLOSE |    OPEN    |     0     |
----------------------------------------------------------------

由于License文件还没有申请和导入,所以 gcluster 状态、gnode 状态目前都是 CLOSE 状态。

6.生成License指纹、用于申请License用途:
我用了GBase8a V8.6文档介绍的License的生成方式,也可以:
# su - gbase
$ cd /opt/gbase8a/gcinstall
$ ./gethostsid -n 192.168.1.162 -f fingerprint -u gbase -p gbase.123

语法:./gethostid -n IP1,IP2…… IPn -f fingerprint -u gbase -p pwd; 
-n 指定集群IP地址。注意:如果集群多节点的话,需要指定所有节点的IP地址,逗号分割。
-f 指定采集指纹保存(输出)的文件。
-u 指定OS用户 gbase
-p 指定OS用户 gbase 的密码

然后发邮件给官方申请 License,申请邮件描述 OS版本(Centos7.8-x86-64)和这里生成的指纹文件 fingerprint。

后来才发现V9.5的手册关于License的生成和导入描述上有区别:

V9.5的手册和V8.6有区别,V9.5手册描述如下:
Gcware 节点上运行 gcware 的用户提前生成 SSH 私钥, 并保存在默认位置。 ESN 的GBase 8a MPP Cluster 产品手册 3 集群安装升级与卸载文档版本 953( 2022-04-10) 南大通用数据技术股份有限公司 59
生成需要从 SSH 私钥取得公钥进行计算。 合法性校验时, 使用计算得到的 ESN 节点指纹。
1)生成SSH私钥
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key(/root/.ssh/id_rsa)

注意保护和备份好 SSH 私钥, 如果私钥变更会导致本批次申请的 license 文件失效。

2)获取ESN
$ cd gcinstall
$ ./getesn.py –silent=<demo.options>

发邮件申请获得许可后,指定License文件方式进行安装:
$ gcinstall.py –license_file=LICENSE_FILE –silent=demo.options

3)License检查
checkLicense
或者
show license

Licesne过期重新申请或导入:
importLicense FILENAME

我没有按照V9.5的方式操作。

7.安装客户端连接工具 gccli (非必须的步骤,为了导入License后能够进行数据库连接测试,所以我先安装 gccli 工具)

为了方便后续导入License后登录数据库、先安装客户端连接工具 gccli

解压gccli、然后拷贝解压后的文件夹gccli_install内的内容到安装路径,在安装路径下执行安装程序:

# su - gbase
$ mkdir -p /opt/gbase8a/gccli
$ cp gccli-9.5.3.14-redhat7.3-x86_64.tar.bz2 /opt/gbase8a/gccli
$ cd /opt/gbase8a/gccli
$ tar -xvf gccli-9.5.3.14-redhat7.3-x86_64.tar.bz2
$ chmod u+x ./gccli_install/gccli_install.sh
$ cp /opt/gbase8a/gccli/gccli_install/*  /opt/gbase8a/   # 把解压后的目录下的所有文件(gccli_install.sh 和 gccli_standalone.tar.bz2)拷贝到我的gbase数据库的安装路径 /opt/gbase8a 后再执行安装脚本
$ cd /opt/gbase8a
$ ./gccli_install.sh gccli_standalone.tar.bz2    # 安装 gccli 工具


安装 gccli 以后,会在 /opt/gbase8a/gcluster/server/bin 目录下生成 gccli 软连接:
$ whereis gccli
gccli: /opt/gbase8a/gcluster/server/bin/gccli


安装 gccli 以后,就可以使用 gccli 工具连接 gbase8a 数据库:

帮助:
$ gccli  --help
gccli ver 9.5.3.14.121230, for unknown-linux-gnu (x86_64) using readline 6.3
Copyright 2004-2023 General Data Technology Co.Ltd.
Usage: gccli [OPTIONS] [database]

语法:
gccli –u<username> -p<password> [-h<ipaddress>] [-P<port>] [-D<databasename>] [--nice_time_format] [-c] [-f] [-v[v][v]] [-e] [<]

–u<username> 连接数据库的用户名称;
-p<password> 连接数据库的用户密码;
-h<ipaddress> 登录集群节点的IP 地址,默认127.0.0.1,可选参数。如果指定多个IP地址,则启动 gccli 的高可用功能,IP 地址之间采用英文逗号分隔,例如:192.168.1.101,192.168.1.102,192.168.1.103;
-P<port> 可选参数,指定连接的数据库服务端口,默认端口5258;
-D<databasename>  可选参数,指定登录时默认的数据库(数据库必须存在);
--nice_time_forma 指定用户操作耗时的最小精度,使用此参数,精确到毫秒,不使用,精确到秒。可选参数;
-c 使用此参数,用于使用 hint 优化方式。可选参数;
--force,-f 批量执行SQL文件时,如果中间有SQL执行报错,强制执行后续SQL,可选参数;
--verbose,-v 冗长模式。产生更多的输出。可以多次使用该选项以产生更多的输出。(例如,-v -v -v甚至可以在批处理模式产生表输出格式)。
--version,-V 显示版本信息并退出。
--vertical,-E 垂直输出查询输出的行。没有该选项,可以用\G结尾来指定单个语句的垂直输出。
--execute=statement, -e statement 执行语句并退出,可以是多个语句,多个SQL以“;”隔开,可选参数;
--silent,-s 沉默模式。产生少的输出。可以多次使用该选项以产生更少的输出。
--skip-column-names,-N 在结果中不写列名;
--skip-line-numbers,-L 在错误信息中不写行号。当你想要比较包括错误消息的结果文件时有用;
--html,-H 产生HTML输出;
< EOF接收输入的方式,可用于批量执行SQL文件,可选参数。

 注意:

如果要指定端口,通过-P参数指定:

gccli -h192.168.1.101 -ugbase -P5258 -p

gccli -h192.168.1.101 -ugbase -P5050 -p

默认5258端口为GBase8a Coordinator 集群节点对外提供服务的端口,而5050为Data 集群节点对外提供服务的端口。集群上如果使用单节点对外端口5050连接可能会导致部分命令执行失败(例如:LOAD加载命令)。

GBase8a服务默认端口如下:

查看当前连接的是data node端口还是集群服务端口,可以执行下面命令通过 gcluster_hash_version 来查看

集群服务端口5258连接执行结果:
gbase>  SHOW VARIABLES LIKE '%VERSION';
+----------------------------+-----------------+
| Variable_name              | Value           |
+----------------------------+-----------------+
| gbase_kafka_broker_version |                 |
| gbase_show_version         | 1               |
| gcluster_hash_version      | 1               |
| protocol_version           | 10              |
| version                    | 9.5.3.14.121230 |
+----------------------------+-----------------+

data node端口5050连接执行结果:
gbase>  SHOW VARIABLES LIKE '%VERSION';
+----------------------------+-----------------+
| Variable_name              | Value           |
+----------------------------+-----------------+
| gbase_kafka_broker_version |                 |
| gbase_show_version         | 1               |
| protocol_version           | 10              |
| version                    | 9.5.3.14.121230 |
+----------------------------+-----------------+

8.导入License文件

导入License文件之前,先说一下关于账号密码:
默认情况下,在gbase8a集群安装完毕后,集群会创建两个默认的数据库超级帐号 root 账号和 gbase 账号。
初次登录请使用 root 数据库用户登录, 首次登录 GBase 8a MPP Cluster 后,管理员必须为 root 帐号和 gbase 账号设置一个安全的数据库账号密码。
操作系统OS用户 root,密码为手工设置的
操作系统OS用户 gbase,密码为手工设置的
数据库超级帐号 root,默认密码为空(V8.6的默认密码为 Admin2O11O531)
数据库超级用户 gbase,密码为root登录数据库以后手工设置的

申请拿到License文件以后,使用License工具导入License到集群的每个节点,语法如下:
License -n IP1, IP2, ……, IPn <-f /path/name.lic> <-u username> <-p password> License --hosts=demo.hosts <-f /path/name.lic> <-u username> <-p password>

参数说明:
-n 用于导入单个节点或少数几个节点 License。
--hosts 用于导入多个节点 License。
-f 待导入的 LICENSE 文件路径及文件名称。
-u 指定集群的 DBA 用户。
-p 指定集群 DBA 用户的密码。==> 官方手册虽然描述如此,但实测为:这里指定的密码必须是OS用户密码、不能是数据库用户连接密码,否则导入License时会提示登录login失败;

注意:
1)--hosts=demo.hosts 指定的 demo.hosts 文件中包含需要进行指纹采集的 IP 列表(逗号分割):
vi demo.hosts
Hosts = 192.168.1.162
如果集群多节点则需要逗号分割指定所有IP:
Hosts = 192.168.1.162,192.168.1.163,192.168.1.164
2)License导入工具在 gcinstall 安装目录,执行License导入时,需要进入对应工具目录执行导入操作;


拷贝License文件&执行License导入:

# su - gbase
$ cp 20231016-01.lic /opt/gbase8a/
$ cd /opt/gbase8a/gcinstall
$ ./License -n 192.168.1.162 -u gbase -p gbase.123 -f /opt/gbase8a/20231016-01.lic
======================================================================
Successful node nums:   1
======================================================================

或者指定配置文件的方式执行License导入:

$ ./License --hosts=demo.hosts -u gbase -p gbase.123 -f /opt/gbase8a/20231016-01.lic


注意:
1)如果是集群多节点,需要 -n 指定所有IP,逗号分割;
2)这里指定的密码必须是OS用户密码、不能是数据库用户连接密码,否则导入License时会提示登录login失败:
[('192.168.1.162', 'Fail to login 192.168.1.162. errno: -1, errmsg: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).')]
Node:   192.168.1.162
Information:    Fail to login 192.168.1.162. errno: -1, errmsg: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).


导入成功后,可使用 LICENSE 检测工具获取 license 状态信息,包括集群节点是否全部具备 LICENSE 文件, LICENSE 为试用版还是商用版,如果是试用版 LICENSE, 会显示 LICENSE 到期日期:
语法:
chkLicense <-n IP1,IP2,……IPn | --hosts=demo.hosts > -u username -p password chkLicense -f /path /filename -u username -p password


$ ./chkLicense -n 192.168.1.162 -u gbase -p gbase.123
======================================================================
192.168.1.162
is_exist:yes
version:trial
expire_time:20240116
is_valid:yes

9.重启集群服务 & 查看集群状态
gcluster_services

语法:
gcluster_services help
gcluster_services <gbase|gcluster|gcrecover|syncserver|all> <start|stop [--force]|restart [--force]|info>

重启集群服务:
$ gcluster_services all restart
Stopping GCMonit success!
Stopping gcrecover :                                       [  OK  ]
Stopping gcluster :                                        [  OK  ]
Stopping gbase :                                           [  OK  ]
Stopping syncserver :                                      [  OK  ]
Starting gcluster :                                        [  OK  ]
Starting gcrecover :                                       [  OK  ]
Starting gbase :                                           [  OK  ]
Starting syncserver :                                      [  OK  ]


查看集群服务状态:
$ gcluster_services all info
gcluster is running
gcrecover is running
gbase is running
syncserver is running


$ gcadmin
CLUSTER STATE:         ACTIVE

=======================================
|  GBASE GCWARE CLUSTER INFORMATION   |
=======================================
| NodeName |    IpAddress    | gcware |
---------------------------------------
| gcware1  | 192.168.1.162 |  OPEN  |
---------------------------------------
=========================================================
|         GBASE COORDINATOR CLUSTER INFORMATION         |
=========================================================
|   NodeName   |    IpAddress    | gcluster | DataState |
---------------------------------------------------------
| coordinator1 | 192.168.1.162 |   OPEN   |     0     |
---------------------------------------------------------
================================================================
|           GBASE CLUSTER FREE DATA NODE INFORMATION           |
================================================================
| NodeName  |    IpAddress    | gnode | syncserver | DataState |
----------------------------------------------------------------
| FreeNode1 | 192.168.1.162 | OPEN  |    OPEN    |     0     |
----------------------------------------------------------------

0 virtual cluster
1 coordinator node
1 free data node

这里显示的 0 virtual cluster,部署完后还没有初始化,后面会进行初始化操作。


使用 gccli 首次以root数据库账号登录,修改数据库连接的root密码和gbase用户密码:
注意:官方文档介绍数据库安装后的默认root密码为 Admin2O11O531 ,但我安装后实际 root 数据库连接密码为空,不指定 -p 参数登录并查看版本信息:
$ gccli -uroot
$ gbase> select version();
+-----------------+
| version()       |
+-----------------+
| 9.5.3.14.121230 |
+-----------------+
1 row in set (Elapsed: 00:00:00.00)

10.初始化配置

GBase8a集群安装完成以后,必须进行初始化配置,才能使用。

说明:
1)单 VC 时建议使用兼容模式,需要进行初始配置,官方产品手册--3.2.3.1 单 VC 模式(兼容模式)初始配置中有纤细介绍;
2)多 VC 时,参考官方产品手册--3.2.3.2 多 VC 模式初始配置;
3)单 VC 模式是跳过手动创建 VC 步骤,直接创建 distribution 的模式。单 VC 模式下如果手动创建增加 VC, 则集群自动转换为多 VC 模式;
   多 VC 模式不支持回退为单 VC 模式,如果删除新增的 VC 只保留最初的一个 VC,集群的模式仍然是多 VC 模式。

初始化时,两种模式二选一,进行对应的初始化操作。

模式1:单 VC 模式(兼容模式)初始配置(对应官方产品手册--3.2.3.1 单 VC 模式(兼容模式)初始配置)

"兼容模式" 是为了兼容 GBase 8a MPP Cluster V86 版本的使用习惯,由 GBase 8a MPP Cluster V9.5.2 之前的版本升级的集群,或者安装 GBase 8a MPP Cluster V9.5.2 后不创建 VC,直接创建 distribution 后的集群。
此时 GBase 8a MPP Cluster 集群会生成一个默认 VC, vcname 为 vcname000001。
在兼容模式下,集群使用习惯 GBase 8a MPP Cluster V86 版本相同, 使用 gcadmin showcluster 命令看不到 VC 的相关信息。


1)创建 distribution

使用 dbaUser 用户(即 demo.options 中的 dbaUser 用户)配置 gcChangeInfo.xml。在集群安装成功后,在安装包目录下会生成一个 gcChangeInfo.xml 文件。
$ cat /opt/gbase8a/gcinstall/gcChangeInfo.xml

<?xml version="1.0" encoding="utf-8"?>
<servers>
 <rack>
  <node ip="192.168.1.162"/>
 </rack>
</servers>


创建 distribution

语法:
gcadmin distribution <gcChangeInfo.xml> <p num> [d num] [pattern 1|2] [db_user user_name] [db_pwd password] [dba_os_password password]

参数说明:
gcChangeInfo.xml 指定生成 distribution 规则的配置文件。
p number 每个数据节点存放的分片数量,最小值为 1。
d number 每个分片的备份数量,取值为 0, 1 或 2。若不输入参数 d,默认值为 1。
pattern number 生成 distribution 所使用模式,取值为 1 或 2, pattern 1 为负载均衡模式, pattern 2 为高可用模式。若不输入参数 pattern,默认使用 pattern 1 生成 distribution。
db_user 数据库用户名,扩容生成新的 distribution 时需指定。
db_pwd 数据库密码,扩容生成新的 distribution 时需指定。
dba_os_password DBA 用户操作系统密码,扩容生成新的 distribution,或在新的 vc 中创建 distribution 时需指定。


执行创建 distribution 命令:
$ gcadmin distribution gcChangeInfo.xml p 1 d 0

注意:rack data server number >= segment + duplicate segment number,否则执行会报错。例如,我单节点,如果执行 p 1 d 1 就会报错。

查看 distribution
创建 distribution 以后,查看主备数据分片分布信息,可以执行下面命令查看:
gcadmin showdistribution [node | f] [vc vc_name]

$ gcadmin showdistribution
$ gcadmin showdistribution node


其他相关命令介绍:

删除 distribution

语法:
gcadmin rmdistribution [ID] [vc vc_name]
从集群中删除指定 id 的 distribution。若不输入 distribution id, 则默认删除创建时间较早的 distribution, 集群中只有一个 distribution 时则默认删除该 distribution。

参数说明:
ID distribution id。
vc vc_name 指定删除的 distribution 的 vc 的名称。如果集群只有一个 vc,不需要指定 vcname。

例如:
$ gcadmin rmdistribution 1 vc vc1


保存 distribution到指定的xml文件:
getdistribution(将指定 ID 的 distribution 信息保存到指定的文件中):

将指定 ID 的 distribution 信息保存到指定的文件中, 生成的文件为 xml 文件, 用户可修改该文件中的分片信息, 然后使用该文件重新生成 distribution。
gcadmin getdistribution <ID> <file_name.xml> [vc vc_name]


gcadmin addnodes gcChangeInfo.xml [vc_name | single_vc_add_to_rc]
gcadmin addnodes gcChangeInfo.xml vc1
gcadmin showcluster vc vc1  #查看集群状态

gcadmin rmnodes gcChangeInfo.xml [vc_name | single_vc_rm_to_rc]
cp gcChangeInfo.xml gcRm_vc1.xml
vi gcRm_vc1.xml  #修改 gcRm_vc1.xml 其中对应 nodeip 内容为待删除的节点 IP
gcadmin rmnodes gcRm_vc1.xml vc1
gcadmin  #查看删除效果


2)集群初始化
集群安装完毕、且创建了 distribution 之后,在首次执行 SQL 命令之前,需要对数据库系统做初始化操作(initnodedatamap),才能正确执行所有的 SQL 操作。

使用数据库用户 root/gbase 登录,执行 initnodedatamap 初始化命令:
$ gccli –uroot
gbase> initnodedatamap;

注意:
1)我初始安装后数据库root用户的密码为空,所以不需要指定-p,官方手册说是会生成一个默认密码,请根据实际情况来操作;
2)此命令只需执行一次,如果重复执行,会报告如下信息:
ERROR 1707 (HY000): gcluster command error: (GBA-02CO-0004) nodedatamap is already initialized.

如果不进行初始化,直接执行SQL的话,会报错,例如,直接执行下面建库 SQL 则会报错:
gbase> create database test;
ERROR 1707 (HY000): gcluster command error: (GBA-02CO-0003)
nodedatamap is not initialized.


3)安装后的检查
集群安装完成后,管理员可以通过 gcadmin 查看集群的运行状态。
a)查看集群各节点状态是否正常(是否OPEN状态)
  $ gcadmin
  
  
  CLUSTER STATE:         ACTIVE
VIRTUAL CLUSTER MODE:  NORMAL

=======================================
|  GBASE GCWARE CLUSTER INFORMATION   |
=======================================
| NodeName |    IpAddress    | gcware |
---------------------------------------
| gcware1  | 192.168.1.162   |  OPEN  |
---------------------------------------
=========================================================
|         GBASE COORDINATOR CLUSTER INFORMATION         |
=========================================================
|   NodeName   |    IpAddress    | gcluster | DataState |
---------------------------------------------------------
| coordinator1 | 192.168.1.162   |   OPEN   |     0     |
---------------------------------------------------------
=========================================================================================================
|                                    GBASE DATA CLUSTER INFORMATION                                     |
=========================================================================================================
| NodeName |                IpAddress                 | DistributionId | gnode | syncserver | DataState |
---------------------------------------------------------------------------------------------------------
|  node1   |             192.168.1.162                |       1        | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------

[gbase@gbase8av95 gcinstall]$ 

b)查看集群数据分片分布相关信息
  $ gcadmin showdistribution
  
  $ gcadmin showdistribution

                                 Distribution ID: 1 | State: new | Total segment num: 1

             Primary Segment Node IP                   Segment ID                 Duplicate Segment node IP
========================================================================================================================
|                192.168.1.162                   |         1          |                                                |
========================================================================================================================
[gbase@gbase8av95 gcinstall]$ 
  

模式2:多 VC 模式初始配置(对应官方产品手册--3.2.3.2 多 VC 模式初始配置)

“多 VC 模式”是指安装集群后,使用 gcadmin createvc 命令将数据节点划分为多个 VC 的集群模式。此时使用 gcadmin 命令可看到多个 VC 的相关信息。
多 VC 模式,需要首先创建 VC,之后在每个 VC 上再创建 distribution。

例如,假设部署了5节点的集群,free node 4 个节点,则可以创建2个vc,将4个 free node 节点中的2个节点给vc1、另外2个分给vc2。

1)创建多VC和每个VC的distribution(多个VC间不能共享)

a)创建vc1和vc1的distribution

i)创建vc1
生成创建 VC1 的配置示范文件
$ cd /opt/gbase8a/gcinstall
$ gcadmin createvc e create_vc1.xml

$ vi create_vc1.xml

<?xml version='1.0' encoding="utf-8"?>
<servers>
<rack>
<node ip="192.168.1.101"/>
<node ip="192.168.1.102"/>
</rack>
<vc_name name="vc1"/>
<comment message="vc1_comments"/>
</servers>


执行vc1创建命令:
$ gcadmin createvc create_vc1.xml


语法说明:
gcadmin createvc <create_vc.xml | e example_file_name>

用配置文件中指定的数据节点生成虚拟集群。
注意:
1)用户创建虚拟集群需使用安装集群时 demo.options 中填写的 dbaUser 用户;
2)gcadmin createvc 命令一次只能创建一个 vc,即配置文件中只能有一个要创建 vc 的信息。

参数说明:
create_vc.xml 生成 vc 所使用的配置文件, 包含所有生成指定 vc 的数据节点的 IP 和可选参数 vc name 及 comment 信息。
e 生成创建 vc 的配置示范文件,使用该参数时将不会生成 vc。
example_file_name 生成的创建 vc 的配置时反问句的名称。
注意:安装脚本会自动生成包含所有 data node 节点 ip 信息的配置文件gcChangeInfo.xml,用户可根据自己需求修改。


ii)在 VC1 上创建 distribution
多 VC 模式,需要在每个 VC 下创建 distribution。

$ cd /opt/gbase8a/gcinstall
$ vi gcChangeInfo_vc1.xml

<?xml version="1.0" encoding="utf-8"?>
<servers>
<rack>
<node ip="192.168.1.101"/>
<node ip="192.168.1.102"/>
</rack>
</servers>

创建vc1下的distribution
$ gcadmin distribution gcChangeInfo_vc1.xml p 1 d 1 vc vc1


b)创建vc2和vc2的distribution

i)创建vc2
生成创建 VC2 的配置示范文件
$ cd /opt/gbase8a/gcinstall
$ cp create_vc1.xml create_vc2.xml
也可以:
$ gcadmin createvc e create_vc2.xml


$ vi create_vc2.xml

<?xml version='1.0' encoding="utf-8"?>
<servers>
<rack>
<node ip="192.168.1.103"/>
<node ip="192.168.1.104"/>
</rack>
<vc_name name="vc2"/>
<comment message="vc2_comments"/>
</servers>


执行创建vc1命令:
$ gcadmin createvc create_vc2.xml

ii)在 VC2 上创建 distribution

$ cd /opt/gbase8a/gcinstall
$ cp gcChangeInfo_vc1.xml  gcChangeInfo_vc2.xml
$ vi gcChangeInfo_vc2.xml

<?xml version="1.0" encoding="utf-8"?>
<servers>
<rack>
<node ip="192.168.1.103"/>
<node ip="192.168.1.104"/>
</rack>
</servers>

创建vc2下的distribution
$ gcadmin distribution gcChangeInfo_vc2.xml p 1 d 1 db_user user_name db_pwd password dba_os_password password vc vc2


2)集群初始化
每个 VC 在创建完 distribution 后必须先执行 initnodedatamap。
使用数据库用户 root/gbase 登录,执行 initnodedatamap 命令。
$ gccli –uroot –p******
gbase> use vc vc1;
gbase> initnodedatamap;

gbase> use vc vc2;
gbase> initnodedatamap;

3)安装后的检查
集群安装完成后,管理员可以通过 gcadmin 查看集群的运行状态。
a)查看集群各节点状态是否正常(是否OPEN状态)
  $ gcadmin
b)查看集群数据分片分布相关信息
  $ gcadmin showdistribution vc vc1
  $ gcadmin showdistribution vc vc2


到此为止GBase8a安装配置 & License导入 & 初始化都已经完成。

接下来,修改数据库账号密码。

初始安装默认生成的数据库账号 root 账号无密码,修改root密码、并设置 gbase 数据库用户的密码:
$ gccli -uroot
gbase> SET PASSWORD = PASSWORD('admin.1q2w3e');
gbase> SET PASSWORD FOR gbase = PASSWORD('1q2w3e');

创建测试库:
gbase> CREATE DATABASE testdb01;

远程连接测试:
$ quit;
$ gccli -ugbase -p -h127.0.0.1 -Dtestdb01
$ gccli -ugbase -p -h127.0.0.1 -P5258 -Dtestdb01
$ gccli -ugbase -p -h192.168.1.162 -P5258 -Dtestdb01

按照官方手册安装完毕以后,发现使用 gbase 命令也可以登录:

$ gbase -h192.168.1.162 -ugbase -Dtestdb01 -p
gbase> quit;

查看 gccli 信息:

$ whereis gccli
gccli: /opt/gbase8a/gcluster/server/bin/gccli
$ ls -l /opt/gbase8a/gcluster/server/bin/gccli
lrwxrwxrwx 1 gbase gbase 38 Oct 13 15:54 /opt/gbase8a/gcluster/server/bin/gccli -> /opt/gbase8a/gcluster/server/bin/gbase

发现原来 gccli 其实就是 gbase 的一个软链接。

如果端口不是默认的5258,则-P指定端口,数据库连接端口配置文件为:$GBASE_BASE/gcluster/config/gbase_8a_gcluster.cnf


其他相关命令参考:

查看数据库:
SHOW DATABASES;

创建数据库:
CREATE DATABASE testdb01;

创建用户:
CREATE USER test_user IDENTIFIED BY '1q2w3e';

用户重命名:
RENAME USER old_user TO new_user;

删除用户:
DROP USER user_name;

修改密码:
SET PASSWORD [FOR user] = PASSWORD('newpassword')
SET PASSWORD FOR gbase = PASSWORD('1q2w3e')

修改当前登录用户的密码:
SET PASSWORD = PASSWORD('1q2w3e');

授权SELECT权限:
GRANT SELECT ON *.* TO test_user;

授予超级用户权限(全部权限):
GRANT ALL ON *.* TO user_test;


JDBC连接:
jdbc:gbase://[host][,failoverhost...][:port]/[database][?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]...

user 用户名
password 密码
hostList 一组调度节点 coordinator 的IP列表,用逗号分割
failoverEnable 故障转移。连接集群时,如果当前IP(比如jdbc的最前面的IP)无法连接,则自动从 hostlist 里面挨个尝试连接,直到连接成功返回,或者均不可用报错退出。下一次连接,同样从第一个IP开始。默认为 false
gclusterId 负载均衡。和 falioverEnable、hostList 组合成负载均衡模式(循环轮询模式 round-robin)。要求 failoverEnable=true 且 hostList 参数不为空。每次获取连接时,将从所有IP列表(包括最前面的第一个IP和hostList里指定的IP)里,按顺序检查IP能否连接。下一次连接,将从下一个IP开始,如果到达末尾,则返回第一个IP。
gclusterId 以 a-z 任意字符开头的字符串,长度最大20。注意:在同一应用程序中(JVM), 如果有多个不同用途的URL,则gclusterId必须唯一,否则会导致访问了不属于本服务负责的集群。
useUnicode 处理字符串时指定驱动是否使用Unicode编码。是否只在驱动无法决定字符集映射的时候使用,或者在不考虑 GBase 是否有本地化支持的情况 下,尝试驱动使用该字符集(例如 UTF-8)。默认为false。
characterEncoding 如果 useUnicode 设置为 true,驱动在处理字符串时使用的编码。默认为 autodetect。
connectTimeout 在socket连接时的超时时间。
socketTimeout socket读写操作时的超时参数。一般和connectTimeout参数一起配置。
allowMultiQueries 允许多个SQL语句,通过默认的分号分割后,一次下发执行。默认为 false。
useSSL 启用SSL连接功能。默认 false。详情请参考 GBase 8a集群SSL配置-JDBC。
rewriteBatchedStatements 针对 insert values 方式的快速批量写入方式优化参数。
useOldAliasMetadataBehavior 返回的是别名还是列名。涉及功能 ResultSetMetaData.getColumnName( ),ResultSetMetaData.getTableName()。当 useOldAliasMetadataBehavior = true 时,返回值为别名,否则默认 false ,返回列名。
autoReconnect 自动重连。

===============================

vc的其他相关常用操作命令

删除虚拟集群

gcadmin rmvc <vc_name>

注意:
1)删除虚拟集群前需要先删除 vc 下的所有用户库表及其他数据库对象,删除镜像关系,删除拓扑信息。
2)删除 VC 前需要将 gbase 库中对应的表(
  gbase.consumer_group,
  gbase.consumer_group_user, 
  gbase.resource_plan, 
  gbase.resource_pool,
  gbase.resource_plan_directive, 
  gbase.resource_config,
  gbase.cluster_resource_pool_usage_history, 
  gbase.resource_pool_events 等)中该 VC 的资源管理信息删除掉,否则将无法删除 VC;
3)gcadmin rmvc 命令一次只能删除一个 VC;如果指定删除的 VC 不存在,执行会报错。


导入虚拟集群
将已有集群的所有数据节点导入到当前集群,成为当前集群的一个 VC。
gcadmin importvc <import_vc.xml | e example_file_name>

import_vc.xml 导入 vc 所使用的配置文件。
e 生成导入 vc 的配置示范文件,使用该参数时将不会导入 vc。
example_file_name 生成导入 vc 的配置示范文件名称。


生成创建 VC 的配置示范文件:
$ gcadmin importvc e import_vc.xml
$ vi import_vc.xml


启动虚拟集群
gcadmin startvc <vc_name1 vc_name2 ...> <os_dba_user_name> <os_dba_password>

停止虚拟集群
gcadmin stopvc <vc_name1 vc_name2 ...> <os_dba_user_name> <os_dba_password>

重命名虚拟集群
gcadmin renamevc <old_vc_name> <new_vc_name>


如果要卸载GBase8a数据库:
gcluster_services all stop

su - gbase
cd /opt/gbase8a/gcinstall
./unInstall.py --silent=demo.options

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sunny05296/article/details/133865019

智能推荐

软件测试常用模块测试点(登录)_模块测试软件-程序员宅基地

文章浏览阅读8.6k次,点赞6次,收藏39次。1、登录的测试点1.1输入框功能: (1)输入合法的用户名和密码,登录成功(2)输入合法的用户名和不合法的密码,登录失败,并给出合理提示(3)输入不合法的用户名和合法的密码,登录失败,并给出合理提示(4)输入不合法的用户名和不合法的密码,登录失败,并给出合理提示 1.2快捷键的使用是否正常 (1)Tab键的使用是否正确(2)上下左右键的使用是否正确(..._模块测试软件

laradock环境下 配置免费ssl证书_laradock nginx ssl-程序员宅基地

文章浏览阅读1.4k次。一.方法1:去https://certbot.eff.org/下载免费的证书,默认是3个月到期,所以需要自己写个crontab,每三个月更新一次 。 方法2:用腾讯云提供的服务获取免费一年的证书,因为的服务器是腾讯云的,所以图个方便,就按照方法2来。二.把证书放在docker容器下映射主机路径:三.nginx.conf 的配置四.重启容器五.输入域名,看到..._laradock nginx ssl

JSP与servlet的区别_jsp和servlet区别-程序员宅基地

文章浏览阅读6.3k次。一、了解Servlet的概念Servlet定义:Servlet是基于Java技术的Web组件,由容器管理并产生动态的内容。Servlet引擎作为WEB服务器的扩展提供支持Servlet的功能。Servlet与客户端通过Servlet容器实现的请求/响应模型进行交互。注意:Servlet不是从命令行启动的,而是由包含Java虚拟机的Web服务器进行加载1)Servlet是按照Servlet规范编写的Java类。2)Servlet应用请求/响应模型,扩展了服务器的功能。Servlet是WEB_jsp和servlet区别

Educoder练习-String&StringBuilder&StringBuffer类_string类和stringbuffer类练习-程序员宅基地

文章浏览阅读1.2k次。补充完代码后,点击测评,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。测试输入:https://www.educoder.net/预期输出:educoderEDUCODERpublic class StringTest { public static void main(String[] args) { Scanner sc = new..._string类和stringbuffer类练习

Django中使用admin的多选widget插件FilteredSelectMultiple_django widget插件filteredselectmultiple复选框的显示数据-程序员宅基地

文章浏览阅读7.5k次,点赞3次,收藏3次。Django 的自带后台admin中多于manytomany类型可以进行_django widget插件filteredselectmultiple复选框的显示数据

计算机小学数学辅助教学缺点及对策 论文,小学数学第二学段图形与几何领域的作业设计研究...-程序员宅基地

文章浏览阅读2.6k次。本研究的学段是第二学段。在教学实施过程中采用的教材是北京师范大学出版社出版的《义务教育教科书》数学(教育部审定2013)。下面是第二学段图形与几何领域教学内容图形与几何(一)图形的认识1.结合实例了解线段、射线和直线。2.体会两点间所有连线中线段最短,知道两点间的距离。3.知道平角与周角,了解周角、平角、钝角、直角、锐角之间的大小关系。4.结合生活情境了解平面上两条直线的平行和相交(包括垂直)关系..._小学数学第二学段“图形与几何”非书面作业设计与研究的重难点

随便推点

层层递进!MySQL性能优化步骤演进,一顿饭的时间我就会了_sql 预编译会慢嘛?-程序员宅基地

文章浏览阅读668次,点赞4次,收藏13次。业界公认MySQL单表容量在1千万以下是最佳状态,因为这时它的BTREE索引树高在3~5之间思考:为什么MySQL单表1千万的索引树高是3~5?建表优化字段设计基本原则:1、满足需求的情况下尽可能选择小的数据类型和指定短的长度2、拆出变长大字段到单独的表中小字段主要有两个影响(InnoDB默认数据页大小16K):1、相同表记录数的情况下,索引KEY越小,索引树高度就越小,可以减少索引查询次数2、数据行存储的数据越少,每张数据页就能存更多的数据行,查询的时候减少跨页查询,也就是减少了一次磁_sql 预编译会慢嘛?

antv s2表格渲染报 removeEventListener of undefined_antv s2 settheme icon-程序员宅基地

文章浏览阅读347次。报错如题原因:多次render了表格解决方案:去掉多余的render即可_antv s2 settheme icon

CodeForces - 1272D Remove One Element (动态规划)_remove one element codeforces - 1272d-程序员宅基地

文章浏览阅读203次。求一个序列最多删去一个元素后的最长连续的递增子序列长度。序列 a[l…r] 内元素严格递增,即al < al+1 <⋯ < ar。Input第一行输入序列元素个数 n (2≤n≤2⋅10^5 )第二行输入n个序列元素 a1,a2,…,an (1≤ai≤10^9)Output输出最多删除一个元素后的最长连续的递增子序列长度Examples..._remove one element codeforces - 1272d

cdh6.3.2安装apache-kylin-3.0.2-bin-cdh60_cdh6.3.2部署kylin-程序员宅基地

文章浏览阅读1.2k次。首先,由于本人是cdh6.3.2,故点击下载选择下图cdh60包[root@cdh632-worker03 ~]# cd /opt/soft/[root@cdh632-worker03 soft]# tar zxf apache-kylin-3.0.2-bin-cdh60.tar.gz -C /opt/module/[root@cdh632-worker03 soft]# cd /opt/module/apache-kylin-3.0.2-bin-cdh60/为解决报错01:[root@cdh_cdh6.3.2部署kylin

STIHL(斯蒂尔集团) EDI解决方案_德国stihl集团规模怎样-程序员宅基地

文章浏览阅读606次。STIHL斯蒂尔集团德国斯蒂尔集团STIHL是一家具有92年历史的顶尖机械用具品牌,发明了世界上第一台电锯,被称作“电锯之父”和“世界电锯之王”。2016年,知行软件助力供应商实现了与STIHL的EDI直连对接, 通过知行RSSBus EDI系统,供应商可以直接接收到STIHL的物料需求计划,并发送提前发货通知给STIHL。满足STIHL对于业务数据安全传输要求,增强供应商国际竞争力。业..._德国stihl集团规模怎样

R语言︱异常值检验、离群点分析、异常值处理_r语言异常值处理-程序员宅基地

文章浏览阅读10w+次,点赞43次,收藏393次。笔者寄语:本文是《R语言数据分析与挖掘实战》异常值处理一般分为以下几个步骤:异常值检测、异常值筛选、异常值处理。其中异常值检测的方法主要有:箱型图、简单统计量(比如观察极值)异常值处理方法主要有:删除法、插补法、替换法。提到异常值不得不说一个词:鲁棒性。就是不受异常值影响,一般是鲁棒性高的数据,比较优质。一、异常值检验异常值大概包括缺失值、离群值、重复值_r语言异常值处理

推荐文章

热门文章

相关标签