返回首页

gbase数据、南大通用产品文档:GBase8asetnodestate 命令

更新日期:2024年09月11日

功能
设置一个节点的状态。
语法
gcadmin setnodestate ip
表4- 18 参数说明

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
188
参数名称
说明
ip
要设置状态的节点ip。
state
用于指定要设置的节点状态,节点状态有3 种。

unavailable 标识节点为不可用,
不在记录该节点得dml、
ddl 操作,设置该状态后必须进行节点替换,替换完成
后状态可恢复为normal;

failure:标识集群故障,相当于offline,这时dml、ddl
将不会下发到该节点,而是直接记录fevent log;

normal:
当节点故障解决后可以直接将节点置为normal,
这相当于节点重新online,
这时gcrecover 将恢复之前记
录的feventlog,
新发起的ddl、
dml 将重新下发到该节点。
警告

一旦将节点状态设置为unavailable,是无法手工恢复的,只能进行
替换才可用;

如果设置一个节点为unavailable 状态会导致任何一个distribution 中
出现某个分片的主副分片都不可用的情况,则设置失败。
示例
$ gcadmin setnodestate 172.168.83.13 failure
set node [172.168.83.13] state to failure
set node [172.168.83.13] state to failure successful
$ gcadmin showcluster vc vc2
CLUSTER STATE:
ACTIVE
VIRTUAL CLUSTER MODE:
NORMAL
==========================================================
|
GBASE VIRTUAL CLUSTER INFORMATION
|
==========================================================
|
VcName
| DistributionId |
comment
|
----------------------------------------------------------
|
vc2
|
2
| comment message for vc2 |
----------------------------------------------------------
==============================================================
======
|
VIRTUAL CLUSTER DATA NODE INFORMATION
|
==============================================================
======
|NodeName|
IpAddress
|DistributionId| gnode |syncserver|DataState|
--------------------------------------------------------------------
| node1
|172.168.83.13|
2
|FAILURE|
|
|

GBase 8a MPP Cluster 产品手册
4 管理员指南
文档版本953(2022-09-15)
南大通用数据技术股份有限公司
189
--------------------------------------------------------------------
| node2
|172.168.83.14|
2
| OPEN
|
OPEN
|
0
|
--------------------------------------------------------------------
2 data node

执行存储过程
使用游标的callproc 方法可以调用GBase 数据库的存储过程。
存储过程返
回的结果集通过4.2.2 小节中描述的方法获取。
如果存储过程包含输出参数,
则可以通过游标的save_param_val 方法获取
输出参数值。
1) 下面的样例代码使用callproc 方法调用存储过程,并获取存储过程结果
集。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test'}
try:



GBase Python 接口开发手册
南大通用数据技术股份有限公司

- 13 -
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC2")
cur.execute("CREATE PROCEDURE TESTCALLPROC2() \
BEGIN \
select 3; \
select 4; \
END")
res = cur.callproc("TESTCALLPROC2")
for r in res:
print r.fetchall()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC2")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()
2) 下面的样例代码使用callproc 方法调用存储过程,
并通过save_param_val
方法获取存储过程返回值。
from GBaseConnector import connect, GBaseError
if __name__ == '__main__':
config = {'host':'172.16.0.131',
'user':'root',
'passwd':'111111',
'port':5258,
'db':'test'}
try:
conn = connect()
conn.connect(**config)
cur = conn.cursor()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC1")
cur.execute("CREATE PROCEDURE TESTCALLPROC1(\
IN pFac1 INT, IN pFac2 INT, OUT pProd INT) \
BEGIN \
SET pProd := pFac1 * pFac2; \
select 1; \

GBase Python 接口开发手册


- 14 -

南大通用数据技术股份有限公司
select 2; \
END")
res = cur.callproc("TESTCALLPROC1", (3,4,0))
for r in res:
print r.fetchall()
print cur.save_param_val()
cur.execute("DROP PROCEDURE IF EXISTS TESTCALLPROC2")
except GBaseError.DatabaseError, err:
print err
finally:
conn.close()

代表一个要对GBase 数据库执行操作的SQL 语句。这个类不能被继承。对
于该类所有成员的列表,参考GBaseCommand 成员。

继承层次
System.Object
|__ System.MarshalByRefObject
|__ System.ComponentModel.Component
|__ System.Data.Common.DbCommand
|__ GBase.Data.GBaseClient.GBaseCommand

语法
[ Visual Basic ]
Public NotInheritable Class GBaseCommand _

Inherits DbCommand _

Implements ICloneable
[ C# ]
public sealed class GBaseCommand : DbCommand, Icloneable

必要条件
命名空间:GBase.Data.GBaseClient

线程安全性
这个类型的公共静态成员(在Visual Basic 中为 Shared)对于多线程操
作是保证线程安全的,对于实例不保证线程安全性。

注释
1)
GBase ADO.NET 使用“?”符号来定位SQL 中的参数;

GBase 8a 程序员手册ADO.NET 篇


- 122 -

南大通用数据技术股份有限公司
2)
GBaseCommand 使用下列方法在GBase 数据库中执行命令;
项 目
描 述
ExecuteReader
执行后返回一个数据行的方法。
ExecuteNonQuery
执行INSERT,
DELETE 和UPDATE 语句的
方法。
ExecuteScalar
从数据库中返回一个值的方法。
3)
用户可以重置CommandText 属性,但必须在执行新的或者前面使用过
的命令之前关闭GBaseDataReader。

示例
下面的例子创建了一个GBaseCommand 对象和一个 GBaseConnection对象。
GBaseConnection 对象打开并关联GBaseCommand 的Connection 属性。
然后调用
ExecuteNonQuery,并关闭连接。
[Visual Basic]
Public Sub InsertRow(gsConnectionString As String)
' If the connection string is null, use a default.
If gsConnectionString = "" Then
gsConnectionString = "Database=Test;DataSource=localhost;
"_
&"User Id=username;
Password=pass;Pooling=false "
End If
Dim gsConnection As New GBaseConnection(gsConnectionString)
Dim
gsInsertQuery
As
String="INSERT
INTO
Orders(id,
customerId,
"_ & "amount) Values(1001, 23,30.66)"
Dim gsCommand As New GBaseCommand(gsInsertQuery)
gsCommand.Connection = gsConnection
gsConnection.Open()
gsCommand.ExecuteNonQuery()
gsCommand.Connection.Close()
End Sub

[C#]



GBase 8a 程序员手册ADO.NET 篇
南大通用数据技术股份有限公司

- 123 -
public void InsertRow(string gsConnectionString)
{
// If the connection string is null, use a default.
if(gsConnectionString == "")
{
gsConnectionString
=
"Database=Test;Data
Source=localhost;
UserId=username;
Password=pass";
}
GBaseConnection gsConnection = new
GBaseConnection(gsConnectionString);
string gsInsertQuery = "INSERT INTO Orders (id, customerId,
amount) Values(1001, 23, 30.66)";
GBaseCommand gsCommand = new GBaseCommand(gsInsertQuery);
gsCommand.Connection = gsConnection;
gsConnection.Open();
gsCommand.ExecuteNonQuery();
gsCommand.Connection.Close();
}