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进不去游戏怎么办 检查电脑配置 查看自己的电脑配置是否达到了游戏的要求…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
C++ 基础特性深度解析
目录 引言 一、命名空间(namespace) C 中的命名空间 与 C 语言的对比 二、缺省参数 C 中的缺省参数 与 C 语言的对比 三、引用(reference) C 中的引用 与 C 语言的对比 四、inline(内联函数…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...