gbase8a MPP Cluster V9 953安装

今天有幸 安装 gbase8a,把安装过程整理出来,给有需要的人用

网上952居多,本文以953为例,其实安装步骤差不多。

目录

1.规划机器

2.软件下载

  3.安装文档

4.操作系统准备

  4.1 操作系统安装

      4.2 主机名及域名解析

  4.3 关闭防火墙及selinux

5.创建用户及目录权限

6.设置安装环境

  6.1 上传软件到主节点

    6.2 使用root用户解压安装包

  6.3 拷贝环境设置脚本到其他两台机器

    6.4 配置安装环境(三台机器都要执行)

7.修改主节点的安装配置文件-demo.options

8.执行安装脚本

9.查看集群状态

10.创建数据库

  10.1 设置分片信息

10.2 数据库初始化

10.3 创建数据库及表

11.客户端连接

12.基础命令

  12.1 停止服务

  12.2 启动服务

  12.3 卸载 集群


1.规划机器


  192.168.133.10 centos7.9 管理,数据,主节点
  192.168.133.11 centos7.9 管理,数据节点
  192.168.133.12 centos7.9 管理,数据节点

  资源:4c/8g/50g

2.软件下载


  数据库安装包:
  https://www.gbase.cn/download/gbase-8a?category=INSTALL_PACKAGE/GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3.28.12-redhat7-x86_64.tar.bz2

  企业管理器工具包:  
  https://www.gbase.cn/download/gbase-8a?category=TOOLKIT/GBaseDataStudio_9.5.2.0_build21_Windows_x86_64.zip

  
3.安装文档


  https://www.gbase.cn/docs/gbase-8a/%E4%BA%A7%E5%93%81%E6%89%8B%E5%86%8C/cluster-install-update-uninstall/cluster-install/

4.操作系统准备


  4.1 操作系统安装


    操作系统,要求:centos 7.x ,选择 server with gui


    
  4.2 主机名及域名解析


    hostnamectl set-hostname gbase10
    hostnamectl set-hostname gbase11
    hostnamectl set-hostname gbase12

    cat /etc/hosts
    192.168.133.10 gbase10
    192.168.133.11 gbase11
    192.168.133.12 gbase12


  4.3 关闭防火墙及selinux


    systemctl stop  firewalld
    systemctl disable  firewalld

    vim /etc/selinux/config
    SELINUX=disabled

5.创建用户及目录权限


   useradd gbase
   echo gbase | passwd --stdin gbase   

   mkdir -p /opt/gbase
   chown gbase:gbase /opt/gbase
   chown gbase:gbase /tmp

6.设置安装环境


  6.1 上传软件到主节点


  把数据库集群安装包上传到主节点 (192.168.133.10),位置:/opt


  
  6.2 使用root用户解压安装包


  tar xvf /opt/GBase8a_MPP_Cluster-NoLicense-FREE-9.5.3.28.12-redhat7-x86_64.tar.bz2 -C /opt
   


  6.3 拷贝环境设置脚本到其他两台机器


  cp /opt/gcinstall/SetSysEnv.py /opt/.
  scp /opt/gcinstall/SetSysEnv.py 192.168.133.11:/opt/.
  scp /opt/gcinstall/SetSysEnv.py 192.168.133.12:/opt/.


  
  6.4 配置安装环境(三台机器都要执行)


      执行 SetSysEnv.py  
      python /opt/SetSysEnv.py --dbaUser=gbase --installPrefix=/opt/gbase --cgroup

7.修改主节点的安装配置文件-demo.options


  在主节点上执行
  su - gbase
  cd /opt/gcinstall
  cp demo.options demo.options.bak
  vim demo.options
  
  [gbase@gbase10 gcinstall]$ cat demo.options

  installPrefix= /opt/gbase
  coordinateHost = 192.168.133.10,192.168.133.11,192.168.133.12
  coordinateHostNodeID = 10,11,12
  dataHost = 192.168.133.10,192.168.133.11,192.168.133.12
  #existCoordinateHost =
  #existDataHost =
  #existGcwareHost=
  gcwareHost = 192.168.133.10,192.168.133.11,192.168.133.12
  gcwareHostNodeID = 10,11,12
  dbaUser = gbase
  dbaGroup = gbase
  dbaPwd = 'gbase'
  rootPwd = 'sztech@4U'
  #dbRootPwd = ''
  #rootPwdFile = rootPwd.json
  #characterSet = utf8
  #sshPort = 22

  
  
  备注:
  dbaPwd 是 gbase 账户的密码
  rootPwd 是 root 账户的密码

8.执行安装脚本


  在主节点上执行

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

  先进行环境检查,可能会有错,列出缺少rpm依赖包名称,说明操作系统没有安装全必须的rpm包,需要根据rpm包的名称去各节点逐个安装。
  8a需要的必备依赖包列表,请查看安装目录gcinstall下的 dependRpms 文件
  
  [gbase@gbase10 gcinstall]$ cat /opt/gcinstall/dependRpms
ncurses-libs
libdb
glibc
keyutils-libs
libidn
libgpg-error
libgomp
libstdc++
libgcc
python-libs
libgcrypt
nss-softokn-freebl

  然后checking Cgconfig service这步,如果操作系统没cgroup(资源管理)组件,会出现如下警告,不管他,直接 输入 Y 回车即可继续执行:

checking Cgconfig service
command "lssubsys" not found on host [192.168.133.10]
command "lssubsys" not found on host [192.168.133.11]
command "lssubsys" not found on host [192.168.133.12]
Cgconfig service is not exist on host ['192.168.133.10', '192.168.133.11', '192.168.133.12'], resource manangement can not be used, continue ([Y,y]/[N,n])?

  然后会让我们确认安装信息,输入Y确认,然后开始安装。
直到InstallCluster Successfully。
  。。。
  192.168.133.12          install gcware and cluster on host 192.168.133.12 successfully.
  192.168.133.11          install gcware and cluster on host 192.168.133.11 successfully.
  192.168.133.10          install gcware and cluster on host 192.168.133.10 successfully.
  Starting all gcluster nodes ...
  adding new datanodes to gcware ...
  InstallCluster Successfully

9.查看集群状态


  在任意节点gbase 用户下,执行
  su - gbase
  
  gcadmin
  
  [gbase@gbase10 ~]$ gcadmin
CLUSTER STATE:         ACTIVE

======================================
|  GBASE GCWARE CLUSTER INFORMATION  |
======================================
| NodeName |   IpAddress    | gcware |
--------------------------------------
| gcware1  | 192.168.133.10 |  OPEN  |
--------------------------------------
| gcware2  | 192.168.133.11 |  OPEN  |
--------------------------------------
| gcware3  | 192.168.133.12 |  OPEN  |
--------------------------------------
========================================================
|        GBASE COORDINATOR CLUSTER INFORMATION         |
========================================================
|   NodeName   |   IpAddress    | gcluster | DataState |
--------------------------------------------------------
| coordinator1 | 192.168.133.10 |   OPEN   |     0     |
--------------------------------------------------------
| coordinator2 | 192.168.133.11 |   OPEN   |     0     |
--------------------------------------------------------
| coordinator3 | 192.168.133.12 |   OPEN   |     0     |
--------------------------------------------------------
===============================================================
|          GBASE CLUSTER FREE DATA NODE INFORMATION           |
===============================================================
| NodeName  |   IpAddress    | gnode | syncserver | DataState |
---------------------------------------------------------------
| FreeNode1 | 192.168.133.11 | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------
| FreeNode2 | 192.168.133.10 | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------
| FreeNode3 | 192.168.133.12 | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------

0 virtual cluster
3 coordinator node
3 free data node

10.创建数据库


  10.1 设置分片信息


  在主安装节点的 /opt/gcinstall 目录中生成 gcChangeInfo.xml 文件,默认一个rack包围一个节点,我们要修改为一个 rack 包围所有 node 的格式:
  
[gbase@gbase10 gcinstall]$ cat gcChangeInfo.xml 
<?xml version="1.0" encoding="utf-8"?>
<servers>
    <rack>
        <node ip="192.168.133.10"/>
        <node ip="192.168.133.11"/>
        <node ip="192.168.133.12"/>
    </rack>
</servers>

  
  gbase用户在主节点的 /opt/gcinstall 目录中执行:
   

  gcadmin distribution gcChangeInfo.xml p 2 d 1 pattern 1
  
  备注:
  p number    每个数据节点存放的分片数量,最小值为1。
  d number    每个分片的备份数量,取值为0,1或2。若不输入参数d,默认值为1。
  pattern number    生成distribution所使用模式,取值为1或2,pattern 1为负载均衡模式,pattern 2为高可用模式。若不输入参数pattern,默认使用pattern 1生成distribution。

  
  再次查看集群状态(出现了 DistributionId 列)
  
   
  [gbase@gbase10 gcinstall]$ gcadmin
CLUSTER STATE:         ACTIVE
VIRTUAL CLUSTER MODE:  NORMAL

======================================
|  GBASE GCWARE CLUSTER INFORMATION  |
======================================
| NodeName |   IpAddress    | gcware |
--------------------------------------
| gcware1  | 192.168.133.10 |  OPEN  |
--------------------------------------
| gcware2  | 192.168.133.11 |  OPEN  |
--------------------------------------
| gcware3  | 192.168.133.12 |  OPEN  |
--------------------------------------
========================================================
|        GBASE COORDINATOR CLUSTER INFORMATION         |
========================================================
|   NodeName   |   IpAddress    | gcluster | DataState |
--------------------------------------------------------
| coordinator1 | 192.168.133.10 |   OPEN   |     0     |
--------------------------------------------------------
| coordinator2 | 192.168.133.11 |   OPEN   |     0     |
--------------------------------------------------------
| coordinator3 | 192.168.133.12 |   OPEN   |     0     |
--------------------------------------------------------
=========================================================================================================
|                                    GBASE DATA CLUSTER INFORMATION                                     |
=========================================================================================================
| NodeName |                IpAddress                 | DistributionId | gnode | syncserver | DataState |
---------------------------------------------------------------------------------------------------------
|  node1   |              192.168.133.11              |       1        | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------
|  node2   |              192.168.133.10              |       1        | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------
|  node3   |              192.168.133.12              |       1        | OPEN  |    OPEN    |     0     |
---------------------------------------------------------------------------------------------------------

也可以执行如下命令查看发布信息
 [gbase@gbase10 gcinstall]$ gcadmin showdistribution node
                                      Distribution ID: 1 | State: new | Total segment num: 6

====================================================================================================================================
|  nodes   |            192.168.133.10             |            192.168.133.11             |            192.168.133.12             |
------------------------------------------------------------------------------------------------------------------------------------
| primary  |                  1                    |                  2                    |                  3                    |
| segments |                  4                    |                  5                    |                  6                    |
------------------------------------------------------------------------------------------------------------------------------------
|duplicate |                  3                    |                  1                    |                  2                    |
|segments 1|                  5                    |                  6                    |                  4                    |
====================================================================================================================================


10.2 数据库初始化


  
在管理节点上执行如下命令(数据库root密码默认为空,输入密码处直接回车)
 
gccli -u root -p

初始化:

gbase> initnodedatamap;

至此,安装配置GBase 8a所有操作完毕。

看一下状态
gbase> status
--------------
gccli ver 9.5.3.28.12509af27, for redhat-linux (x86_64) using readline 6.3

Connection id:          8
Current database:
Current user:           root@localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         9.5.3.28.12509af27
Protocol version:       10
Connection:             Localhost via UNIX socket
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /opt/gbase/192.168.133.10/gcluster_5258.sock
Uptime:                 Elapsed: 00:11:34.00

Threads: 5  Questions: 73  Slow queries: 0  Opens: 31  Flush tables: 1  Open tables: 22  Queries per second avg: 0.105

--------------

10.3 创建数据库及表

gbase> show databases;
  +--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| gbase              |
| gctmpdb            |
| gclusterdb         |
+--------------------+
5 rows in set (Elapsed: 00:00:00.00)

gbase> 

有点熟悉,对,默认就是兼容mysql

gbase> create database test;
Query OK, 1 row affected (Elapsed: 00:00:00.04)

gbase> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| performance_schema |
| gbase              |
| gctmpdb            |
| gclusterdb         |
| test               |
+--------------------+
6 rows in set (Elapsed: 00:00:00.00)

gbase> use test;
Query OK, 0 rows affected (Elapsed: 00:00:00.01)

gbase> create table emp(empid int,last_name varchar(20));
Query OK, 0 rows affected (Elapsed: 00:00:00.06)

gbase> show tables;
+----------------+
| Tables_in_test |
+----------------+
| emp            |
+----------------+
1 row in set (Elapsed: 00:00:00.00)

gbase> 


11.客户端连接


  在windows上直接解压 GBaseDataStudio_9.5.2.0_build21_Windows_x86_64.zip,使用java打开程序
  
  \GBaseDataStudio_9.5.2.0_build21_Windows_x86_64\GBaseDataStudio\GBaseDataStudio.exe
  直接就可以用

  选择GBase8a MPP,连接一个cluster节点:
  


12.基础命令


  12.1 停止服务


  
  停止所有节点的所有集群服务,在所有节点执行:
  
  gcluster_services all stop

  停止 gcware 服务,在安装了 gcaware 服务的节点上执行:
 
  gcware_services all stop

  关机

  12.2 启动服务


  操作系统起来,默认没有启动服务

  在所有机器上执行
  su - gbase 
 
  gcware_services all start
  gcluster_services all start

  检查服务
  gcadmin

  12.3 卸载 集群


  在主节点上执行卸载命令

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

到此,整个GBASE8A 基本的安装搞定。

    

    
  

【SCI复现】基于纳什博弈的多微网主体电热双层共享策略研究(Matlab代码实现)内容概要:本文围绕“基于纳什博弈的多微网主体电热双层共享策略研究”展开,结合Matlab代码实现,复现了SCI级别的科研成果。研究聚焦于多个微网主体之间的能源共享问题,引入纳什博弈理论构建双层优化模型,上层为各微网间的非合作博弈策略,下层为各微网内部电热联合优化调度,实现能源高效利用与经济性目标的平衡。文中详细阐述了模型构建、博弈均衡求解、约束处理及算法实现过程,并通过Matlab编程进行仿真验证,展示了多微网在电热耦合条件下的运行特性和共享效益。; 适合人群:具备一定电力系统、优化理论和博弈论基础知识的研究生、科研人员及从事能源互联网、微电网优化等相关领域的工程师。; 使用场景及目标:① 学习如何将纳什博弈应用于多主体能源系统优化;② 掌握双层优化模型的建模与求解方法;③ 复现SCI论文中的仿真案例,提升科研实践能力;④ 为微电网集群协同调度、能源共享机制设计提供技术参考。; 阅读建议:建议读者结合Matlab代码逐行理解模型实现细节,重点关注博弈均衡的求解过程与双层结构的迭代逻辑,同时可尝试修改参数或扩展模型以适应不同应用场景,深化对多主体协同优化机制的理解。
<think> 我们正在讨论GBase 8a(非PostgreSQL兼容版本)中如何实现UUID默认值。由于GBase 8a不支持类似PostgreSQL的扩展(如uuid-ossp),我们需要采用其他方法。 可能的方案: 1. 使用应用层生成UUID:在插入数据之前,由应用程序生成UUID并赋值。 2. 使用触发器:在插入数据时,通过触发器自动生成UUID并赋值给相应字段。 3. 使用GBase 8a的内置函数:如果GBase 8a有提供生成UUID的函数(如UUID()),则可以直接在默认值中使用。 然而,GBase 8a默认可能不提供生成UUID的函数。因此,我们需要考虑前两种方法。 具体步骤: 方法一:应用层生成(推荐) 在应用程序中,使用编程语言的标准库生成UUID(例如Java的UUID.randomUUID(),Python的uuid.uuid4()),然后将生成的UUID作为值插入到数据库中。 方法二:使用触发器 步骤: a. 创建一个表,其中包含一个UUID类型的字段(或者使用CHAR(36)或BINARY(16)来存储UUID)。 b. 创建一个BEFORE INSERT触发器,在插入之前为该字段生成一个UUID值。 但是,GBase 8a的触发器语法可能与MySQL类似。注意,GBase 8a MPP Cluster(即8a数据库)在早期版本中不支持触发器,但在较新版本(如8.6版本以后)开始支持触发器。因此,需要确认数据库版本是否支持。 假设支持触发器,我们可以这样实现: 1. 创建表: ```sql CREATE TABLE example_table ( id CHAR(36) NOT NULL, -- 或者使用BINARY(16)存储更紧凑 name VARCHAR(50), created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); ``` 2. 创建触发器: ```sql DELIMITER // CREATE TRIGGER before_insert_example_table BEFORE INSERT ON example_table FOR EACH ROW BEGIN -- 如果新行的id为空,则生成一个UUID IF NEW.id IS NULL THEN SET NEW.id = UUID(); -- 注意:GBase 8a是否内置了UUID()函数?如果不支持,则无法使用此方法。 END IF; END;// DELIMITER ; ``` 关键点:GBase 8a是否内置了UUID()函数?经过查询,GBase 8a并没有内置的UUID函数。因此,如果我们无法使用应用层生成,那么我们需要自己实现一个生成UUID的函数。 方法三:自定义函数生成UUID 如果GBase 8a支持自定义函数(UDF),我们可以编写一个UDF来生成UUID。但这需要C/C++编写并编译成动态库,然后加载到数据库中,这通常需要数据库管理员权限。 考虑到复杂性和权限要求,通常推荐在应用层生成UUID。 因此,结论: 在GBase 8a中,如果没有内置UUID函数,且不支持触发器或者无法使用UDF,则必须在应用层生成UUID并作为值插入。 如果您的GBase 8a版本支持触发器,并且您能够使用自定义函数,那么可以创建自定义函数来生成UUID,然后在触发器中使用。但这种方法较为复杂。 因此,对于大多数情况,我们推荐在应用层生成UUID。 示例(应用层生成,以Python为例): ```python import uuid import gbase.connect # 连接数据库 conn = gbase.connect(host=&#39;...&#39;, user=&#39;...&#39;, password=&#39;...&#39;, database=&#39;...&#39;) cursor = conn.cursor() # 生成UUID new_uuid = str(uuid.uuid4()) # 插入数据 sql = "INSERT INTO example_table (id, name) VALUES (%s, %s)" cursor.execute(sql, (new_uuid, &#39;测试记录&#39;)) conn.commit() ``` 注意:存储UUID时,可以选择使用CHAR(36)(带连字符的字符串格式)或者使用BINARY(16)(无连字符,16字节二进制)。使用BINARY(16)更节省空间,但需要转换。在应用层生成时,可以选择将UUID转换为二进制格式再存储。 例如,使用Python的uuid.UUID.bytes可以将UUID转换为16字节的二进制数据: ```python binary_uuid = uuid.uuid4().bytes ``` 然后在表中定义列为BINARY(16),插入时直接使用该二进制数据。 综上所述,在GBase 8a中,由于缺乏内置的UUID生成函数,通常建议在应用层生成UUID后再插入,这样最为简单可靠。 相关问题: 1. 在GBase 8a中如何存储UUID更高效?使用CHAR(36)还是BINARY(16)? 2. GBase 8a的触发器使用有哪些限制? 3. 如何在GBase 8a中创建并使用自定义函数(UDF)来生成UUID? </think> 在 GBase 8a 等**非 PostgreSQL 兼容版本**中实现 UUID 默认值的方法如下(因其不支持 `uuid-ossp` 扩展),推荐三种方案: --- ### 方案一:应用层生成(首选) 在业务代码中生成 UUID 后插入: ```python # Python 示例 import uuid new_uuid = str(uuid.uuid4()) # 生成标准UUID cursor.execute("INSERT INTO table (id, data) VALUES (?, ?)", (new_uuid, "测试数据")) ``` **优势**: - 100% 兼容所有 GBase 版本 - 灵活控制 UUID 版本(v1/v4)和格式 --- ### 方案二:触发器实现 通过 `BEFORE INSERT` 触发器自动填充 UUID: ```sql -- 1. 创建存储UUID的字段 CREATE TABLE demo ( id CHAR(36) NOT NULL, -- UUID长度固定36字符 content VARCHAR(100) ); -- 2. 创建触发器(需GBase 8a v9+支持) DELIMITER // CREATE TRIGGER set_uuid BEFORE INSERT ON demo FOR EACH ROW BEGIN IF NEW.id IS NULL THEN -- 使用随机函数模拟UUID v4 SET NEW.id = CONCAT( LPAD(HEX(FLOOR(RAND()*65535)),4,&#39;0&#39;), &#39;-&#39;, LPAD(HEX(FLOOR(RAND()*65535)),4,&#39;0&#39;), &#39;-4&#39;, LPAD(HEX(FLOOR(RAND()*4095)),3,&#39;0&#39;), &#39;-&#39;, LPAD(HEX(FLOOR(RAND()*16383)|0x8000),4,&#39;0&#39;), &#39;-&#39;, LPAD(HEX(FLOOR(RAND()*65535)),4,&#39;0&#39;), LPAD(HEX(FLOOR(RAND()*65535)),4,&#39;0&#39;), LPAD(HEX(FLOOR(RAND()*65535)),4,&#39;0&#39;) ); END IF; END; // DELIMITER ; ``` **注意事项**: - 此方法生成的是**伪UUID**,不严格符合 RFC 4122 - 大规模插入时可能影响性能 --- ### 方案三:组合内置函数(简化版) 使用 GBase 8a 内置函数生成类 UUID 值: ```sql -- 生成32字符近似UUID(无连字符) INSERT INTO demo (id, content) VALUES ( CONCAT( MD5(RAND()), MD5(NOW()) ), &#39;测试&#39; ); -- 结果示例:7d3c4b1e5f8a9c0d2e6b5a8f7c1d3e4f ``` **适用场景**: - 对 UUID 格式要求不严格的场景 - 需要快速实现的临时方案 --- ### 关键总结 | 方案 | 可靠性 | 性能影响 | 格式标准性 | 版本要求 | |---------------|--------|----------|------------|----------------| | **应用层生成** | ★★★★★ | 无 | ★★★★★ | 所有版本 | | **触发器实现** | ★★★☆☆ | 中 | ★★★☆☆ | 8a v9+ | | **内置函数组合** | ★★☆☆☆ | 低 | ★☆☆☆☆ | 所有版本 | > ⚠️ **强烈建议**:生产环境优先采用**方案一**,避免数据库端性能瓶颈和兼容性问题[^1]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值