GBase 8a 开发与技术支持 - admin
type: channel
link: https://8a.gbasedbt.com/index.php/author/1/
description: admin
items: 资源管理功能服务启动报错
items: 命令gcluster_services gbase stop和service gbased stop有什么区别？
items: 智能索引如果常驻内存，如何有效释放掉这部分内存？
items: 将备份数据在一个新节点进行数据恢复，该怎么操作？
items: 单机上如何实现数据保护？
items: 同一台机器上能否安装两套单机产品？
items: 8a单机license文件和服务器的哪些硬件相关？
items: GBase中NULL值是当什么值处理？
items: 为什么无法通过REVOKE ALL ON *.* FROM USER命令回收所有权限？
items: 如何在系统表中查询表的hash分布列？

资源管理功能服务启动报错
type: item
date: 2020-11-16T15:07:00+08:00
description: [shrinks title="问题现象：" checked="checked"]GBase的资源管理在安装时如果没有安装资源管理功能，则需要手动配置资源管理的内容，但是在配置过程中会报以下错误：cannot mount cpuset to /cgroup/cpuset: Device or resource busy [/shrinks][shrinks title="涉及集群版本：" checked="checked"]所有版本。[/shrinks][shrinks title="问题原因：" checked="checked"]/cgroup目录被占用，且重启无效。[/shrinks][shrinks title="解决办法：" checked="checked"]1、删除/cgroup目录 rm -rf /cgroup2、执行cgclear3、重启cgroup服务 systemctl restart cgconfig[/shrinks]

命令gcluster_services gbase stop和service gbased stop有什么区别？
type: item
date: 2020-10-28T16:58:00+08:00
description: （1）gcluster_services脚本路径/opt/gcluster/server/bin/gcluster_services，执行gcluster_services gbase stop命令，下发的是kill -KILL `pidof gbased` ，即kill -9 `pidof gbased` 操作。（2）reboot操作关闭gbased服务调用的是service gbased stop，service gbased stop 使用的脚本是/etc/init.d/gbased。 执行service gbased stop命令下发的是kill -TERM `pidof gbased` 即kill `pidof gbased` ，是以正常的方式来终止程序。（3）在新版本上，/etc/init.d/gbased脚本中stop()函数增加部分代码，当正常kill gbased超过60秒之后，会强制执行kill -9 gbased。stop() { ! status $prog > /dev/null 2>&1 && return echo -n "Signaling $desc to terminate: " kill -TERM $(pidof $prog) > /dev/null 2>&1 success echo echo -n "Waiting for $prog services to unload:" cnt=0 while status $prog > /dev/null 2>&1; do sleep 1 echo -n "." cnt=`expr $cnt + 1` if [ $cnt -gt 60 ]; then kill -9 $(pidof $prog) > /dev/null 2>&1 fi done rm -f $LOCK_FILE rm -f $PIDFILE success echo }

智能索引如果常驻内存，如何有效释放掉这部分内存？
type: item
date: 2020-10-28T16:56:00+08:00
description: 智能索引被加载后常驻内存，refresh table可以释放表元数据占用的内存空间。

将备份数据在一个新节点进行数据恢复，该怎么操作？
type: item
date: 2020-10-28T16:55:00+08:00
description: 步骤：1）A环境全部备份2）A备份上传B环境3）B环境安装单机4）B环境使用rcman恢复方式完成，A备份文件总大小约为350MB。[info]注意事项：[/info]1）A、B两单机安装时使用的操作系统用户名需相同2）A、B两单机安装时使用的实例名sid需相同否则恢复的时候，会找不到绝对路径报错。

单机上如何实现数据保护？
type: item
date: 2020-10-28T16:51:00+08:00
description: [shrinks title="使用数据的AB版本机制" checked="checked"]在数据写入磁盘后，再进行数据当前有效版本的切换操作。切换成功则正常使用新数据，如果切换失败（磁盘异常）则SQL报错，后续可以使用旧版本的数据。[/shrinks]1）使用数据的AB版本机制。[shrinks title="已有数据的checksum检查机制" checked="checked"]每个数据块都记录了对应的checksum值，当从磁盘读取数据块时，会根据加载的内容计算出的checksum值，与之前记录的checksum值进行比较，确保读取的数据块的正确性。如果checksum值不一致则执行SQL会报错（避免由于磁盘错误导致数据异常的扩散）。[/shrinks]

同一台机器上能否安装两套单机产品？
type: item
date: 2020-10-28T16:50:12+08:00
description: 理论上新建一个用户，不同用户不同端口就可以。

8a单机license文件和服务器的哪些硬件相关？
type: item
date: 2020-10-28T16:49:02+08:00
description: 8a单机的license文件和服务器的cpu，内存，网卡mac地址相关。CPU、内存、网卡MAC地址的变动都会造成License失效。Mac地址指的是所有激活以太网网卡的mac地址，以下三种情况都会导致license失效： （1）激活的以太网网卡数量变更；（2）任意激活以太网mac地址变更；（3）更换以太网网卡。

GBase中NULL值是当什么值处理？
type: item
date: 2020-10-28T16:49:00+08:00
description: NULL值是空值，只可以通过is null或is not null进行检索，不能使用等值运算：比如a=null或a!=null。而且两个NULL值是无法比较的，比如两个表做join，join条件是t1.a=t2.a，假如两列都有NULL值，则不会匹配上。

为什么无法通过REVOKE ALL ON *.* FROM USER命令回收所有权限？
type: item
date: 2020-10-28T16:48:00+08:00
description: 产品设计模型就是如何赋权限如何进行回收。例如：数据库级权限database_name.*需要使用database_name.*来回收，而不能通过全局级权限*.*回收。

如何在系统表中查询表的hash分布列？
type: item
date: 2020-10-28T16:47:25+08:00
description: 可以通过查询系统表gbase.table_distribution查询hash分布列。gbase> create table t1(c1 int,c2 varchar(10)) distributed by ('c1'); Query OK, 0 rows affected (Elapsed: 00:00:00.22) gbase> desc gbase.table_distribution; +--------------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------------------+--------------+------+-----+---------+-------+ | index_name | varchar(128) | NO | PRI | | | | dbName | varchar(64) | NO | | NULL | | | tbName | varchar(64) | NO | | NULL | | | isReplicate | varchar(3) | NO | | YES | | | hash_column | varchar(64) | YES | | NULL | | | lmt_storage_size | bigint(20) | YES | | NULL | | | table_storage_size | bigint(20) | YES | | NULL | | | is_nocopies | varchar(3) | NO | | YES | | +--------------------+--------------+------+-----+---------+-------+ 8 rows in set (Elapsed: 00:00:00.00) gbase> select * from gbase.table_distribution where dbname='guo' and tbname='t1'\G *************************** 1. row *************************** index_name: guo.t1 dbName: guo tbName: t1 isReplicate: NO hash_column: c1 lmt_storage_size: NULL table_storage_size: NULL is_nocopies: NO 1 row in set (Elapsed: 00:00:00.00) 表中的hash_column字段即为hash分布列。