GBase 8a MPP Cluster V9安装部署
GBase 8a MPP Cluster V9安装部署
安装环境准备
节点 | 角色 | 操作系统 | 地址 | 配置 | GBASE版本 |
---|---|---|---|---|---|
gbase01.gbase.cn | GCWARE,COOR,DATA | CentOS 7.9 | 192.168.20.142 | 2C4G | GBase 8a MPP Cluster V9 9.5.3.28.12 |
gbase02.gbase.cn | GCWARE,COOR,DATA | CentOS 7.9 | 192.168.20.143 | 2C4G | GBase 8a MPP Cluster V9 9.5.3.28.12 |
gbase03.gbase.cn | GCWARE,COOR,DATA | CentOS 7.9 | 192.168.20.144 | 2C4G | GBase 8a MPP Cluster V9 9.5.3.28.12 |
VMware下载:https://support.broadcom.com/group/ecx/productdownloads?subfamily=VMware%20Workstation%20Pro
VirtualBox下载:https://www.virtualbox.org/wiki/Downloads
OS 建议下载 CentOS 7.9 安装包。推荐网址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/?spm=a2c6h.25603864.0.0.5cb3f5adC5fVSC
GBase 8a MPP Cluster V9 9.5.3.28.12下载地址:https://www.gbase.cn/download/gbase-8a?category=INSTALL_PACKAGE
gbase01.gbase.cn 为安装和管理主节点
安装系统时建议在“软件选择”中勾选“带GUI的服务器”中的“开发工具”选项。
各节点IP是同一网段,并互相能连通;开启 SSH 服务;关闭防火墙、关闭seLinux服务、开启时钟同步。
查看版本
# cat /etc/centos-release
CentOS Linux release 7.9.2009 (Core)
设置静态IP
我的CentOS 7 容易自动变换IP,所以需要设置成为静态IP。
修改网卡:/etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=b1620999-32cd-4749-b7ab-a15bc2380161
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.20.142
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
DNS1=101.226.4.6
上面是我以gbase01为例做的修改,其他IPADDR=X.X.X.X按需修改,这些内容为需要修改的,主要就是该静态模式、IP、验码、网关、DNS。
BOOTPROTO=static
IPADDR=192.168.20.142
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
DNS1=101.226.4.6
需要注意网关和DNS要写对。网关获取:ip route | grep default | awk ‘{print $3}’
DNS这里使用的是运营商的。
修改完成后,重启网卡
systemctl restart network
设置主机名
使用root用户设置,或者有sudo权限的用户设置,我这里为了方便使用root设置。
在每一个节点分别设置。注意,是分别设置。
hostnamectl set-hostname gbase01.gbase.cn # gbase01
hostnamectl set-hostname gbase02.gbase.cn # gbase02
hostnamectl set-hostname gbase03.gbase.cn # gbase03
修改hosts
在每一个节点执行修改文件/etc/hosts为下面内容
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6# gbase 8a mpp cluster
192.168.20.142 gbase01.gbase.cn gbase01
192.168.20.143 gbase02.gbase.cn gbase02
192.168.20.144 gbase03.gbase.cn gbase03
配置 yum 源
在每一个节点执行
1、若可以联通互联网,可以使用远程源,方便直接下载使用
因为CentOS 7 的服务器已过,官方的yum不可用,所以需要配置第三方源,这里配置的是阿里云源
mkdir /etc/yum.repos.d/yum_bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/yum_bak
curl -o /etc/yum.repos.d/Centos-7.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
2、若是内网环境可直接挂载ISO镜像文件下载
mkdir /mnt/iso
mount -o loop /dev/sr0 /mnt/iso
# 若是没有自动挂载ISO介质,则需要上传ISO文件再挂载。
mount -o loop /root/CentOS-7.9-x86_64-Everything-2009.iso /mnt/iso
制作repo文件
mkdir /etc/yum.repos.d/yum_bak
mv /etc/yum.repos.d/* /etc/yum.repos.d/yum_bak# 创建 local-iso.repo
cat << EOF >> /etc/yum.repos.d/local-iso.repo
[local-iso]
name=Local ISO Repository
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0
EOF
重新制作yum源缓存
yum clean all
yum makecache
配置免密
使用脚本配置互相免密,在安装节点运行脚本就可以了。
ssh-keygen -t rsa -b 2048
ssh-copy-id gbase01
ssh-copy-id base02
ssh-copy-id gbase03
安装集群管理软件
在安装节点上安装 clustershell
yum --enablerepo=extras install epel-release
yum install clustershell
验证,-w 输入需要控制的主机,看能不能正常返回:
[root@gbase01 ~]# clush -w gbase0[1-3] hostname
gbase01: gbase01.gbase.cn
gbase02: gbase02.gbase.cn
gbase03: gbase03.gbase.cn
前提是配置了集群免密。
检查依赖软件
在每一个节点执行检查,最好是使用集群命令统一检查,具体需要哪些依赖,可以在 GBase 8a 安装包内的 dependRpms 文件内查看
yum update -y
rpm -qa | grep psmisc
rpm -qa | grep libcgroup
rpm -qa | grep python2
# ...yum install -y libcgroup libcgroup-tools psmisc ncurses-libs libdb glibc keyutils-libs libidn libgpg-error libgomp libstdc++ libgcc python-libs libgcrypt nss-softokn-freebl# 若python不为python2,设置默认版本为python2
# alternatives --set python /usr/bin/python2
python --version # 验证默认版本
磁盘分区为默认分区,分区格式为默认的xfs,swap为默认不改动。
CPU建议关闭超线程、关闭 CPU 自动降频,我这里是测试虚拟机,所以没有操作。
网络要求三个节点可以互通
防火墙设置
测试环境,防火墙关闭,如果是不能关闭则开放所有需要使用的端口,每一个节点都需要检查
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service
检查端口
GBase 8a MPP Cluster 各服务使用的默认端口如下
组件名称 | 默认端口号 | 端口协议类型 | 端口含义 |
---|---|---|---|
Gcluster | 5258 | TCP | GCluster 集群节点对外提供服务的端口 |
Gnode | 5050 | TCP | Data 集群节点对外提供服务的端口 |
Gcware | 5918 | TCP/UDP | gcware 节点间通讯端口 |
gcware | 5919 | TCP | 外部连接 gcware 节点端口 |
syncServer | 5288 | TCP | syncServer 服务端 |
GcrecoverMonit | 6268 | TCP | Gcrecover 服务端口 |
数据远程导出端口 | 16066~16166 | TCP | 数据远程导出端口 |
lsof -i:5258 -i:5050 -i:5918 -i:5919 -i:5288 -i:6268
检查sshd服务
在每一个节点执行
systemctl status sshd.service
systemctl enable sshd.service
关闭SELinux
在每一个节点执行
sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config
# 查看是否修改成功
grep "^SELINUX=" /etc/selinux/config setenforce 0 # 临时关闭
# 输入 getenforce 返回 Permissive 则是临时关闭状态,
# 重启后是 Disabled ,完全关闭状态。
getenforce
sestatus
设置虚拟内存为unlimited
在每一个节点执行
cat << EOF >> /etc/security/limits.conf
* soft as unlimited
* hard as unlimited
EOF
设置时钟同步服务chrony
在每一个节点执行
systemctl status chronyd.service
systemctl start chronyd.service
systemctl enable chronyd.service
这里为了方便,是直接启动,若是内网环境,或者大集群,最好是把集群内两台同步远程时钟节点,其他节点,同步这两台的时钟,这样会时钟偏差比较小。
安装 GBase 8a
创建DBA账户
在每一个节点执行创建
useradd gbase
echo "gbase:Gbase@2024" | chpasswd
所有节点DBA账户的用户名、密码、uid、gid要一致,否则安装失败
[root@gbase01 opt]# clush -w gbase0[1-3] id gbase
gbase02: uid=1001(gbase) gid=1001(gbase) groups=1001(gbase)
gbase03: uid=1001(gbase) gid=1001(gbase) groups=1001(gbase)
gbase01: uid=1001(gbase) gid=1001(gbase) groups=1001(gbase)
解压 GBase 8a 安装包
上传软件包gbase01:/opt,gbase01为主节点,并解压。
cd /opt
tar xjf GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3.28.12-redhat7-x86_64.tar.bz2
chown -R gbase:gbase /opt/gcinstall
创建 GBase 8a 目录
在每一个节点执行操作
mkdir -p /opt/gbase
chown -R gbase:gbase /opt/gbase
设置系统环境 SetSysEnv.py
官方提供了一个 python 脚本 SetSysEnv.py 用来一键配置系统参数文件
配置系统参数 /etc/systcl.conf 文件
配置 /etc/security/limits.conf 文件
配置 /etc/pam.d/su 文件
配置 /etc/security/limits.d/*-nproc.conf 文件
配置 /etc/cgconfig.conf 文件
使用 clustershell 工具同步文件到每一个节点的 opt下,并执行
clush -w gbase0[1-3] --copy /opt/gcinstall/SetSysEnv.py --dest /opt/
clush -w gbase0[1-3] "python /opt/SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup"
参数 | 描述 |
---|---|
--dbaUser=gbase | dba 用户为 gbase,demo.options中dbaUser与这必须一致 |
--installPrefix=/opt/gbase | 安装目录为 /opt/gbase,demo.options中installPrefix与这必须一致 |
--cgroup | 使用资源管理功能,由 libcgroup-tools 提供 |
修改安装配置 demo.options
在安装节点gbase01上操作
su - gbase
cp /opt/gcinstall/demo.options /opt/gcinstall/demo.options_bakcat << EOF > /opt/gcinstall/demo.options
installPrefix= /opt/gbase
coordinateHost = 192.168.20.142,192.168.20.143,192.168.20.144
coordinateHostNodeID = 101,102,102
dataHost = 192.168.20.142,192.168.20.143,192.168.20.144
#existCoordinateHost =
#existDataHost =
#existGcwareHost=
gcwareHost = 192.168.20.142,192.168.20.143,192.168.20.144
gcwareHostNodeID = 201,202,203
dbaUser = gbase
dbaGroup = gbase
dbaPwd = 'Gbase@2024'
rootPwd = 'Gbase@2024'
#dbRootPwd = ''
#rootPwdFile = rootPwd.json
#characterSet = utf8
#sshPort = 22
EOF
说明:V953 和 V952 版本不同在于,gcware 模块可以单独部署,可以不与 gcluster 节点部署在一起了,demo.options 文件中多了gcware 相关参数(gcwareHost 和 gcwareHostNodeID)。
dbaPwd 是 gbase 账户的密码
rootPwd 是 root 账户的密码
执行安装脚本
在安装节点,需要在dba用户gbase下执行:
su - gbase
/opt/gcinstall
./gcinstall.py --silent=demo.options
cat dependRpms
根据提示,按Y下一步
显示安装完成:InstallCluster Successfully
若安装时显示:
command "lssubsys" not found on host [192.168.20.142]
command "lssubsys" not found on host [192.168.20.144]
command "lssubsys" not found on host [192.168.20.143]
Cgconfig service is not exist on host ['192.168.20.142', '192.168.20.143', '192.168.20.144'], resource manangement can not be used, continue ([Y,y]/[N,n])?
原因是因为系统没有CGroups,可以直接输入 y 继续,或者是安装 libcgroup-tools
查看结果
安装完成环境变了还未加载,需要重新登录一次。
退出登录,再次进入,使用gcadmin查看环境,gcware 和 gcluster 都需要为 OPEN 才是正常。
exit
su - gbase
gcadmin
显示:
[gbase@gbase01 ~]$ gcadmin
CLUSTER STATE: ACTIVE======================================
| GBASE GCWARE CLUSTER INFORMATION |
======================================
| NodeName | IpAddress | gcware |
--------------------------------------
| gcware1 | 192.168.20.142 | OPEN |
--------------------------------------
| gcware2 | 192.168.20.143 | OPEN |
--------------------------------------
| gcware3 | 192.168.20.144 | OPEN |
--------------------------------------
========================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
========================================================
| NodeName | IpAddress | gcluster | DataState |
--------------------------------------------------------
| coordinator1 | 192.168.20.142 | OPEN | 0 |
--------------------------------------------------------
| coordinator2 | 192.168.20.143 | OPEN | 0 |
--------------------------------------------------------
| coordinator3 | 192.168.20.144 | OPEN | 0 |
--------------------------------------------------------
===============================================================
| GBASE CLUSTER FREE DATA NODE INFORMATION |
===============================================================
| NodeName | IpAddress | gnode | syncserver | DataState |
---------------------------------------------------------------
| FreeNode1 | 192.168.20.143 | OPEN | OPEN | 0 |
---------------------------------------------------------------
| FreeNode2 | 192.168.20.142 | OPEN | OPEN | 0 |
---------------------------------------------------------------
| FreeNode3 | 192.168.20.144 | OPEN | OPEN | 0 |
---------------------------------------------------------------0 virtual cluster
3 coordinator node
3 free data node
设置分片信息
生成distribution(coordinator节点)
gcadmin distribution <gcChangelnfo.xml> <p number> [d number] [pattern 1 | 2]
gcChangelnfo.xml:是描述集群内节点和rack(机柜)对应关系的文件,默认存放于qcinstall目录
p:每个数据节点存放的主分片数量。注:pattern 1模式下,p的取值范围为:1<=p<rack内节点数。
d:每个主分片的备份数量,取值为0,1或2。默认值为1。
pattern:描述分片备份规则的模板。1为rack高可用,2为节点高可用。默认为 1。
创建数据的分布模式
1、修改在安装目录下 /opt/gcinstall/gcChangeInfo.xml 文件的 node 为一个 rack,修改后内容如下:
<?xml version="1.0" encoding="utf-8"?>
<servers><rack><node ip="192.168.20.143"/><node ip="192.168.20.142"/><node ip="192.168.20.144"/></rack>
</servers>
2、在安装目录下执行设置
gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1
创建分布信息,每个节点存放2个主分片,每个分片有1个备份,rack高可用。
3、再次查看集群
出现了 DistributionId 列
[gbase@gbase01 gcinstall]$ gcadmin
CLUSTER STATE: ACTIVE
VIRTUAL CLUSTER MODE: NORMAL======================================
| GBASE GCWARE CLUSTER INFORMATION |
======================================
| NodeName | IpAddress | gcware |
--------------------------------------
| gcware1 | 192.168.20.142 | OPEN |
--------------------------------------
| gcware2 | 192.168.20.143 | OPEN |
--------------------------------------
| gcware3 | 192.168.20.144 | OPEN |
--------------------------------------
========================================================
| GBASE COORDINATOR CLUSTER INFORMATION |
========================================================
| NodeName | IpAddress | gcluster | DataState |
--------------------------------------------------------
| coordinator1 | 192.168.20.142 | OPEN | 0 |
--------------------------------------------------------
| coordinator2 | 192.168.20.143 | OPEN | 0 |
--------------------------------------------------------
| coordinator3 | 192.168.20.144 | OPEN | 0 |
--------------------------------------------------------
=========================================================================================================
| GBASE DATA CLUSTER INFORMATION |
=========================================================================================================
| NodeName | IpAddress | DistributionId | gnode | syncserver | DataState |
---------------------------------------------------------------------------------------------------------
| node1 | 192.168.20.143 | 1 | OPEN | OPEN | 0 |
---------------------------------------------------------------------------------------------------------
| node2 | 192.168.20.142 | 1 | OPEN | OPEN | 0 |
---------------------------------------------------------------------------------------------------------
| node3 | 192.168.20.144 | 1 | OPEN | OPEN | 0 |
---------------------------------------------------------------------------------------------------------
查看分布信息 gcadmin showdistribution node:
[gbase@gbase01 gcinstall]$ gcadmin showdistribution nodeDistribution ID: 1 | State: new | Total segment num: 6====================================================================================================================================
| nodes | 192.168.20.143 | 192.168.20.142 | 192.168.20.144 |
------------------------------------------------------------------------------------------------------------------------------------
| primary | 1 | 2 | 3 |
| segments | 4 | 5 | 6 |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate | 3 | 1 | 2 |
|segments 1| 5 | 6 | 4 |
====================================================================================================================================
数据库初始化以后可以在库中直接查询
或者是在数据库中查询:
gbase> show nodes;
+------------+----------------+-------+--------------+----------------+--------+-----------+
| Id | ip | name | primary part | duplicate part | status | datastate |
+------------+----------------+-------+--------------+----------------+--------+-----------+
| 2400495808 | 192.168.20.143 | node1 | n1,n4 | n3,n5 | online | 0 |
| 2383718592 | 192.168.20.142 | node2 | n2,n5 | n1,n6 | online | 0 |
| 2417273024 | 192.168.20.144 | node3 | n3,n6 | n2,n4 | online | 0 |
+------------+----------------+-------+--------------+----------------+--------+-----------+
3 rows in set (Elapsed: 00:00:00.00)
或者查询张表:
select * from information_schema.CLUSTER_TABLE_SEGMENTS a where table_schema='mydb' and table_name='t1';
数据库初始化
在管理节点使用 gccli -u root -p 登录数据库,执行初始化命令 initnodedatamap ,root默认密码为空
[gbase@gbase01 gcinstall]$ gccli -u root -p
Enter password: GBase client Free Edition 9.5.3.28.12509af27. Copyright (c) 2004-2024, GBase. All Rights Reserved.gbase> initnodedatamap;
Query OK, 1 row affected (Elapsed: 00:00:00.44)gbase> exit
Bye
数据库安装完成
使用 GBase 8a
连接
gbase -D gbase -h 192.168.20.142 -u root -P 5258
gbase -Dmydb -hgbase01 -umyuser -pMy@2024 -P 5258
创建用户、数据库
create user myuser identified by 'My@2024';
create database mydb;
grant all on mydb.* to myuser;
show grants for myuser;
gbase -Dmydb -hgbase01 -umyuser -pMy@2024 -P 5258create table t1 (id int(3), name varchar(20));
show create table t1;
增删改查
gbase> create database test;
Query OK, 1 row affected (Elapsed: 00:00:00.06)gbase> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| performance_schema |
| gbase |
| gctmpdb |
| gclusterdb |
| test |
+--------------------+
6 rows in set (Elapsed: 00:00:00.01)gbase> use test;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)gbase> create table t1(id int, name varchar(20));
Query OK, 0 rows affected (Elapsed: 00:00:00.09)gbase> show tables;
+----------------+
| Tables_in_test |
+----------------+
| t1 |
+----------------+
1 row in set (Elapsed: 00:00:00.00)gbase> show create table t1;
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+
| t1 | CREATE TABLE "t1" ("id" int(11) DEFAULT NULL,"name" varchar(20) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' |
+-------+------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (Elapsed: 00:00:00.00)gbase> insert into t1(id,name) values(1,'moshengming');
Query OK, 1 row affected (Elapsed: 00:00:00.09)gbase> insert into t1(id,name) values(2,'luting');
Query OK, 1 row affected (Elapsed: 00:00:00.08)gbase> insert into t1(id,name) values(3,'maoxxxxxx');
Query OK, 1 row affected (Elapsed: 00:00:00.09)gbase> select * from t1;
+------+-------------+
| id | name |
+------+-------------+
| 1 | moshengming |
| 2 | luting |
| 3 | maoxxxxxx |
+------+-------------+
3 rows in set (Elapsed: 00:00:00.05)gbase> delete from t1 where id = 3;
Query OK, 1 row affected (Elapsed: 00:00:00.09)gbase> select * from t1;
+------+-------------+
| id | name |
+------+-------------+
| 1 | moshengming |
| 2 | luting |
+------+-------------+
2 rows in set (Elapsed: 00:00:00.03)gbase> update t1 set name = 'lutinger' where id = 2;
Query OK, 1 row affected (Elapsed: 00:00:00.07)
Rows matched: 1 Changed: 1 Warnings: 0gbase> select * from t1;
+------+-------------+
| id | name |
+------+-------------+
| 1 | moshengming |
| 2 | lutinger |
+------+-------------+
2 rows in set (Elapsed: 00:00:00.03)gbase> truncate table t1;
Query OK, 2 rows affected (Elapsed: 00:00:00.09)gbase> select * from t1;
Empty set (Elapsed: 00:00:00.02)gbase> drop table t1;
Query OK, 0 rows affected (Elapsed: 00:00:00.07)gbase> show tables;
Empty set (Elapsed: 00:00:00.00)gbase>
集群启停
gcluster 和 gcware 都是可以执行启动、停止和查看运行状态的
在系统关闭或者崩溃的时候,需要启动集群。
在安装gcware的节点启动 gcware:gcware_services all start
在所有节点执行启动集群:gcluster_services all start
同理,停止和查看集群可以使用
gcluster_services all stop 和 gcluster_services all info
查看集群状态
#命令
gcluster_services all <start|stop [--force]|restart [--force]|info>
gcware_services all <start|stop [--force]|restart [--force]|info>
gcware_services all start
gcluster_services all start
gcadmin###########
clush -w gbase0[1-3] "gcware_services all start"
clush -w gbase0[1-3] "gcluster_services all start"
clush -w gbase0[1-3] "gcadmin"
用户修改密码
set password for gbase = password('Gbase12345');
使用DBeaver连接
创建驱动
名称 | 值 |
---|---|
驱动名称 | Gbase8a(自己喜好填写) |
驱动类型 | Generic |
类名 | com.gbase.jdbc.Driver |
URL模板 | jdbc:gbase://{host}:{port}/{database} |
默认端口 | 5258 |
默认数据库 | gbase(根据实际填写) |
默认用户 | gbase(根据实际填写) |
在库文件处添加Gbase 8a的驱动就好了
然后创建连接,使用这个驱动填写相关的地址和数据库,用户密码,就可以使用了。
地址填写Gcluster的其中一个就行,当然,多的话可以做负载均衡。
查询数据库大小
通过元数据查询mydb的大小,和mydb.t1的大小。
select table_schema,table_data_size,table_storage_size from information_schema.cluster_tables a where table_schema='mydb';
select table_name,table_data_size,table_storage_size from information_schema.cluster_tables a where table_schema='mydb' and table_name='t1';
数据导出与加载
导出与加载示例,逗号为分隔符
select * from mydb.test1;
select * from mydb.test1 into outfile '/home/gbase/file/outfile01.txt' FIELDS TERMINATED BY ',' FIELDS ENCLOSED BY '"';
create table mydb.test2 like mydb.test1;
load data infile 'file://192.168.20.142/home/gbase/file/outfile01.txt/outfile01.txt'
into table mydb.test2 FIELDS TERMINATED BY ',' FIELDS ENCLOSED BY '"' lines TERMINATED BY '\n';
select * from mydb.test2;
数据库的备份与恢复
首先查看有没有pexpect
python -c "import pexpect" && echo "pexpect is installed" || echo "pexpect is not installed"
安装 Python pexpect,使用pip或者yum任意一种方式安装即可
# 使用 pip 安装
clush -w gbase0[1-3] "wget https://bootstrap.pypa.io/pip/2.7/get-pip.py"
clush -w gbase0[1-3] "python /root/get-pip.py"
clush -w gbase0[1-3] "pip install pexpect"
# 使用 yum 安装
clush -w gbase0[1-3] yum install pexpect -y
使用备份恢复,输入gcrcman.py -V命令不抛出任何错误则表示可用。
# 查看工具的版本与常用命令
gcrcman.py -V
gcrcman.py --help# 创建一个备份目录 /home/gbase/backup 在所有管理节点创建
clush -w gbase0[1-3] "mkdir /home/gbase/gbasedatabackup"
gcrcman.py -d /home/gbase/gbasedatabackup -P Gbase@2024 -p Gbase@2024# 查看备份信息,备份mydb,恢复mydb,恢复的时候数据库不能存在,需要删除。
# backup database vc00001.mydb level 0
show backup
backup database mydb level 0
show backup
recover database mydb
使用gbasedump
gbasedump -h gbase01 -P 5258 -u gbase -p mydb > backup_mydb2.sql
集群卸载
停止所有服务,在所有节点执行停止命令
gcluster_services all stop
停止 gcware 服务,在安装了 gcaware 服务的节点上执行
gcware_services all stop
在主节点上执行卸载命令
cd /opt/gcinstall
./unInstall.py --silent=demo.options
相关文章:

GBase 8a MPP Cluster V9安装部署
GBase 8a MPP Cluster V9安装部署 安装环境准备 节点角色操作系统地址配置GBASE版本gbase01.gbase.cnGCWARE,COOR,DATACentOS 7.9192.168.20.1422C4GGBase 8a MPP Cluster V9 9.5.3.28.12gbase02.gbase.cnGCWARE,COOR,DATACentOS 7.9192.168.20.1432C4GGBase 8a MPP Cluster …...

静态库、动态库、framework、xcframework、use_frameworks!的作用、关联核心SDK工程和测试(主)工程、设备CPU架构
1.1库的概念 库:程序代码的集合,编译好的二进制文件加上头文件供使用,共享程序代码的一种方式。 1.2库的分类 根据开源情况分为:开源库(能看到具体实现)、闭源库(只公开调用的的接口…...

C++ | Leetcode C++题解之第552题学生出勤记录II
题目: 题解: class Solution { public:static constexpr int MOD 1000000007;vector<vector<long>> pow(vector<vector<long>> mat, int n) {vector<vector<long>> ret {{1, 0, 0, 0, 0, 0}};while (n > 0) {…...

网站架构知识之Ansible(day020)
1.Ansible架构 Inventory 主机清单:被管理主机的ip列表,分类 ad-hoc模式: 命令行批量管理(使用ans模块),临时任务 playbook 剧本模式: 类似于把操作写出脚本,可以重复运行这个脚本 2.修改配置 配置文件:/etc/ansible/ansible.cfg 修改配置文件关闭主机Host_key…...

K8s使用nfs
改动点 ip和路径改为自己的 --- apiVersion: v1 kind: ServiceAccount metadata:name: nfs-client-provisioner# replace with namespace where provisioner is deployednamespace: nfs-client --- kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata:nam…...

【大数据学习 | kafka高级部分】kafka的kraft集群
首先我们分析一下zookeeper在kafka中的作用 zookeeper可以实现controller的选举,并且记录topic和partition的元数据信息,帮助多个broker同步数据信息。 在新版本中的kraft模式中可以这个管理和选举可以用kafka自己完成,而不再依赖zookeeper。…...

爬虫策略规避:Python爬虫的浏览器自动化
网络爬虫作为一种自动化获取网页数据的技术,被广泛应用于数据挖掘、市场分析、竞争情报等领域。然而,随着反爬虫技术的不断进步,简单的爬虫程序往往难以突破网站的反爬虫策略。因此,采用更高级的爬虫策略,如浏览器自动…...

Hive 实现查询用户连续三天登录记录
标题:Hive 实现查询用户连续三天登录记录 在数据分析和处理中,经常会遇到需要查询特定条件数据的情况。本文将介绍如何使用 Hive 来查询用户连续三天登录的所有数据记录。 一、问题背景 我们有一个用户登录记录表,其中包含用户的登录日期信…...

OceanBase 4.3.3 功能解析:列存副本
OceanBase 从4.3.0 版本开始,引入了列式存储的支持。用户可以根据业务的具体需求,选择创建列存表、行存表或是行列混存表。无论选择哪种表类型,在不同的Zone内,租户使用的副本模式都是一致的。详见官网文档: https://w…...

2.Python解释器
python解释器程序,用来翻译python代码,并提交给计算机执行。 上一篇博客就是安装了python解释器程序 写一个python文件,在文件中写入多行代码并执行: 进入python后,输入exit()命令退出...

鸿蒙与团结引擎c#与ts简单交互
目录 团结中调用ts代码 鸿蒙中调用团结代码 首先在团结创建代码,需要将代码添加到场景物体中 devecoStudio端编写ts代码 在index页面添加一个测试按钮 团结中调用ts代码 团结引擎 - 手册: Call TypeScript plug-in code from C# scripts 注册函数要跟文件名一致 在u…...

Any 的原理以及实现
序言 在 C17 的更新中引入了一个特别有意思的类型,它提供了一种通用的方式来存储任何类型的数据而不需要提前指定类型, 该类型就是 any。 any 允许你将任意类型的数据存储在一个容器中,并且能够在运行时动态地访问该数据。话不多说…...

SQLI LABS | Less-35 GET-Bypass Add Slashes (we dont need them) Integer Based
关注这个靶场的其它相关笔记:SQLI LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 输入下面的链接进入靶场(如果你的地址和我不一样,按照你本地的环境来): http://localhost/sqli-labs/Less-35/ 话不多说…...

RNN(循环神经网络)详解
1️⃣ RNN介绍 前馈神经网络(CNN,全连接网络)的流程是前向传播、反向传播和参数更新,存在以下不足: 无法处理时序数据:时序数据长度一般不固定,而前馈神经网络要求输入和输出的维度是固定的&a…...

【AI抠图整合包及教程】探索SAM 2:图像与视频分割领域的革新者
在人工智能的浩瀚星空中,Meta公司的Segment Anything Model 2(SAM 2)犹如一颗璀璨的新星,以其前所未有的图像与视频分割能力,照亮了计算机视觉领域的新航道。SAM 2不仅继承了其前身SAM在零样本分割领域的卓越表现&…...

DevExpress中文教程 - 如何使用AI模型检查HTML编辑中的语法?
DevExpress .NET MAUI多平台应用UI组件库提供了用于Android和iOS移动开发的高性能UI组件,该组件库包括数据网格、图表、调度程序、数据编辑器、CollectionView和选项卡组件等。 目前许多开发人员正在寻找多种方法将AI添加到解决方案中(这通常比想象的要…...

python包管理工具pip和conda的使用对比
python包管理工具pip和conda的使用对比 总述1. pip使用2. conda注意虚拟环境之间的嵌套,这个会导致安装包后看不到包,实际是安装到了base环境里 未完待续 总述 pip相对于conda,对应包的依赖关系管理不强,坏处是容易造成包冲突,好…...

Linux案例:DNS服务器配置
Linux案例:DNS服务器配置 实验一:正向解析 服务端配置: [rootserver ~]# setenforce 0 [rootserver ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.70.131/24 ipv4.gateway 192.168.70.2 ipv4.dns 114.114.114.11…...

【Python】__getitem__()方法
getitem() 方法介绍 __getitem__ 方法是 Python 中的一个特殊方法(也被称为魔术方法或特殊方法),用于在类中实现索引访问对象元素的操作。这个方法允许对象实现类似于列表、字典等容器类型的索引操作。当自定义类中定义了 __getitem__ 方法时…...

《Atomic Picnic》进不去游戏解决方法
Atomic Picnic有时候会遇到进不去游戏的情况,这可能是由多种原因造成的,玩家可以采取很多解决方法,比如检查电脑配置、更新系统和驱动或验证游戏文件。 Atomic Picnic进不去游戏怎么办 检查电脑配置 查看自己的电脑配置是否达到了游戏的要求…...

学习日志007--python函数 学完再练习练
函数小练习 一、函数的概念 1.定义 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 2.作用 函数能提高应用的模块性,和代码的重复利用率 3.定义 函数代码块以 def 关键词开头,后接函数标识符…...

DOM操作和事件监听综合练习——轮播图
下面制作一个如下图所示的轮播图(按Enter键可以控制轮播的开启和关闭,或者点击按钮“第几张”即可跳转到第几张): 下面是其HTML和CSS代码(还没有设置轮播): <!DOCTYPE html> <html …...

nodejs:下载,安装,系统环境配置,更换镜像
下载 地址:https://nodejs.org/zh-cn/download/prebuilt-installer 安装包 开始安装 安装完成 配置环境变量 将原来的用户变量-> Path D:\nodejs\node_global 【系统变量】 添加Path–>变量名:NODE_PATH-> 变量值:D: \…...

【Django】视图函数
【Django】视图函数 视图函数的本质是Python中的函数,视图函数负责处理用户的请求并返回响应,该响应可以是网页的HTML内容、重定向、404错误、XML文档、图像或者任何东西,一般在应用中的views.py编写,示例代码如下: …...

MySQL查询-补充
数据准备: -- 部门表 create table dept(deptno int primary key, -- 部门编号 主键:唯一,非空dname varchar(14), -- 部门名称loc varchar(13) -- 部门地址 );insert into dept values (10,accounting,n…...

【Python Tips】多个条件判断——一种更加简洁清晰的写法
一、引言 在python写条件判断 if 语句时,有时会遇到多种条件的真假判断考虑,比如要同时考虑A和B两个变量的True or False,只有当两者都为真,或都为假,或任意为真为假,再继续处理。此时如果用 if,…...

【Vue】简易博客项目跟做
项目框架搭建 1.使用vue create快速搭建vue项目 2.使用VC Code打开新生成的项目 端口号简单配置 修改vue.config.js文件,内容修改如下 所需库安装 npm install vue-resource --save --no-fund npm install vue-router3 --save --no-fund npm install axios --save …...

【HarmonyOS】PixelMap转化为Uri
【HarmonyOS】PixelMap转化为Uri 问题背景 鸿蒙中的PixelMap类型,其实类似于Android和IOS中的bitmap,是对图片数据信息进行描述的一种逻辑运算使用的图片类型。 而鸿蒙中的Uri类型,本质其实是带file头的文件存储地址,是用来指向…...

【架构论文-2】架构设计中存在的问题和改进方向
一、性能优化相关 当前情况 在高负载情况下,系统的响应时间出现了一定程度的延迟。特别是在业务高峰期,大量并发请求导致部分关键业务模块的处理效率降低,影响了用户体验。改进方向 计划引入性能分析工具对系统进行全面的性能剖析࿰…...

go语言中的结构体含义和用法详解
在Go语言中,结构体(struct)是一种聚合数据类型,可以将多个不同类型的数据组合成一个更复杂的类型。结构体类似于面向对象编程中的“类”,但是Go语言没有类和继承的概念,而是通过结构体和接口实现面向对象编程的特性。 1. 结构体的定义 结构体是一组字段(field)的集合…...