返回首页

gbase数据、南大通用产品文档:GBase8a删除旧的distribution

更新日期:2024年09月11日

功能说明
确保所有数据rebalance 完成后,可以将旧的distribution 删掉,将被替换节点从虚
拟集群中移除。
操作步骤
步骤1:将旧的distribution(Distribution ID 3)删掉,将被替换节点从虚拟集群中
移除。
$ gcadmin rmdistribution 3 vc vc1
cluster distribution ID [3]
it will be removed now
please ensure this is ok, input [Y,y] or [N,n]: y
select count(*) from gbase.nodedatamap where data_distribution_id=3 result is
not 0
refreshnodedatamap drop 3 success
gcadmin remove distribution [3] success
完成后的集群信息如下:
$ gcadmin
CLUSTER STATE:
ACTIVE
===========================================================

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
349
=====
|
GBASE COORDINATOR CLUSTER INFORMATION
|
===========================================================
=====
|
NodeName
|
IpAddress
| gcware | gcluster | DataState |
----------------------------------------------------------------
| coordinator1 | 172.168.83.11 |
OPEN
|
OPEN
|
0
|
----------------------------------------------------------------
| coordinator2 | 172.168.83.12 |
OPEN
|
OPEN
|
0
|
----------------------------------------------------------------
| coordinator3 | 172.168.83.13 |
OPEN
|
OPEN
|
0
|
----------------------------------------------------------------
=======================================================
|
GBASE VIRTUAL CLUSTER INFORMATION
|
=======================================================
|
VcName
| DistributionId |
comment
|
-------------------------------------------------------
|
vc1
|
1
| comment message vc1 |
-------------------------------------------------------
|
vc2
|
4
| comment message vc2 |
-------------------------------------------------------
2 virtual cluster: vc1, vc2
3 coordinator node
0 free data node
$ gcadmin showdistribution vc vc2
Distribution ID: 4 | State: new | Total segment num: 2
Primary Segment Node IP
Segment ID
Duplicate Segment node IP
===========================================================
======
|

加载驱动

在使用驱动之前,需要做如下操作:

先解压版本对应驱动包,使用root 用户将psycopg2 拷贝到python 安装目录下的
site-packages 文件夹下。

修改psycopg2 目录权限为755。

将psycopg2 目录添加到环境变量$PYTHONPATH,并使之生效。

对于非数据库用户,需要将解压后的lib 目录,配置在LD_LIBRARY_PATH 中。

在创建数据库连接之前,需要先加载如下数据库驱动程序:
import psycopg2

使用 SYSTEM 语句从 SPL 例程中发出操作系统命令。
语法

元素
描述
限制
语法
expression
对用户可执行操作系统命
令求值
不能指定该命令在后台
运行
操作系统从

SPL_var
包含命令的 SPL 变量
必须是字符数据类型
标识符;

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1240
用法
如果指定的 expression 不是字符表达式,则它被转换为字符表达式并传递到操作
系统以进行执行。
SYSTEM 指定的命令不能在后台运行。数据库服务器在继续 SPL 例程中的下一
语句之前等待操作系统完成该命令的执行。SPL 例程不能使用任何从该命令返回
的值。
如果操作系统命令失败(即,返回命令的非零状态),则出现异常。该异常包含
返回的操作系统状态作为 ISAM 错误代码和相应的 SQL 错误代码。
回滚不终止系统调用,这样暂挂的事务可以无限等待调用以返回。有关在长事务
回滚期间从死锁恢复的指示信息,请参阅 GBase 8s 管理员指南。
GBase 8s 的动态日志功能自动添加日志文件,直到长事务成功完成或回滚。
在包含 SYSTEM 语句的 DBA 和所有者特权的 SPL 例程中,该命令经执行例
程的用户的许可方可运行。
在 UNIX 上执行 SYSTEM 语句
在 UNIX™ 平台的 SPL 过程中,评估为有效 UNIX 操作系统命令的规范必须紧
跟在 SYSTEM 关键字之后。
这两个程序片段使用 SPL 的 SYSTEM 语句向系统管理员发送消息:

在第一个示例中,sensitive_update 例程定义名为 mailcall 的 SPL 变量
存储指定 mail 实用程序名称,邮件的收件人的用户 ID 和邮件文本的字
符串。

在第二个示例中,sensitive_update2 例程类似地使用 SYSTEM 语句调用
mail 实用程序。表达式通过连接三个带引号的字符串和 SPL 变量 user1
和 user2 来构造有效的命令行,以向系统管理员发送一个名为
violations_file 的文件。
使用 SYSTEM 语句发送邮件
在 SPL 例程的以下示例中的 SYSTEM 语句可使 UNIX 操作系统将邮件消息发
送给系统管理员,他的用户 ID 是 headhoncho:
CREATE PROCEDURE sensitive_update()
...

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1241
LET mailcall = 'mail headhoncho < alert';
-- code to execute if user tries to execute a specified
-- command, then sends email to system administrator
SYSTEM mailcall;
...
END PROCEDURE; -- sensitive_update
可以使用双竖线符号(||)将表达式与 SYSTEM 语句连接起来,如以下示例中
所示:
CREATE PROCEDURE sensitive_update2()
DEFINE user1 char(15);
DEFINE user2 char(15);
LET user1 = 'joe';
LET user2 = 'mary';
...
-- code to execute if user tries to execute a specified
-- command, then sends email to system administrator
SYSTEM 'mail -s violation' || user1 || ' ' || user2|| '< violation_file';
...
END PROCEDURE; --sensitive_update2
在以上两个示例中,空格分隔命令行的元素,因此 SYSTEM 关键字后面的表达
式计算为符合操作系统 mail 实用程序的语法要求的字符串。
在 Windows 上执行 SYSTEM 语句
在 Windows™ 系统中,只有当正在执行 SPL 例程的当前用户已经用密码登录
后,才能在 SPL 例程中执行任何 SYSTEM 语句。
数据库服务器必须拥有用户的密码和登录名以代表该用户的执行命令。
以下 SPL 例程示例中的第一个 SYSTEM 语句可使 Windows 将错误消息发送给临
时文件并将消息放入按字母排序的系统日志中。第二个 SYSTEM 语句导致操作系
统删除临时文件:
CREATE PROCEDURE test_proc()
...
SYSTEM 'type errormess101 > %tmp%tmpfile.txt |
sort >> %SystemRoot%systemlog.txt';
SYSTEM 'del %tmp%tmpfile.txt';

GBase 8s SQL 指南:语法
南大通用数据技术股份有限公司 1242
...
END PROCEDURE; --test_proc
在此示例中跟随 SYSTEM 语句的表达式包含由 Windows 定义的变量 %tmp%
和 %SystemRoot%。
在 SYSTEM 命令中设置环境变量
当执行 SYSTEM 指定的操作系统命令时,不存在任何用户应用程序设置的环境
变量被传递到操作系统的保证。如果在 SYSTEM 命令中设置环境变量,则该设
置仅在该 SYSTEM 命令期间有效。
要避免此潜在问题,建议使用以下方法确保用户应用程序要求的任何环境变量被
转发到操作系统。
更改操作系统命令的环境设置:
1. 创建将会设置希望环境的 shell 脚本(在 UNIX™ 系统上)或 batch 文
件(在 Windows™ 平台上),然后执行操作系统命令。
2. 使用 SYSTEM 命令执行 shell 脚本或 batch 文件。
此解决方案还有其它优势:如果您以后需要更改环境,可以修改 shell 脚本或
batch 文件,而不需重新编译 SPL 例程。
有关设置环境变量的操作系统命令的信息,请参阅 GBase 8s SQL 参考指南。