GBase 8s 数据库HAC集群切换及恢复操作

GBase 8s HAC集群允许配置为自动切换、CM控制的FOC切换及手工切换三种方式。
在自动切换中,主节点故障或者网络超时,备节点都将自动提升为主节(DRAUTO值为2)或者标准节点(DRAUTO值为1)。当原主节点需要恢复时,可直接启动(oninit -vy)、物理恢复方式(oninit -PHY后onmode -d secondary 主节点服务名称)或者备份恢复(脑裂时)。

在CM控制的切换中,主节点故障或者网络超时,备节点都将由CM控制提升为主节点。当原主节点需要恢复时,需要通过物理恢复的方式然后加入集群(oninit -PHY后onmode -d secondary 主节点服务名称)或者备份恢复(脑残时)。

在手工切换中,主节点故障或者网络超时,备节点需要手工提升为主节点,有两种方式:

  • 1)备节点切换为标准模式,然后提升为主节点(onmode -d standard后onmode -d primary 对端服务名称);
  • 2)通过指令直接提升(onmode -d make primary 服务名称 [force])

当原主节点需要恢复时,需要通过物理恢复的方式然后加入集群(oninit -PHY后onmode -d secondary 主节点服务名称)。

如果数据库集群无故障,只是需要进行主备节点切换时,也需要考虑当前的切换方式。可通过模拟主节点故障的方式进行切换,也可以通过强制切换的方式(onmode -d make primary 服务名称 force),恢复时按照故障时的恢复方式进行。

GBase 8s 数据库集群切换及恢复

GBase 8s 数据库切换分为自动切换、由CM控制的按FOC规则的切换、手工切换。

自动切换

全自动切换用于HAC集群中,由于集群只有两个节点,数据库相互之前进行状态检查,发现异常时,能按DRAUTO的配置方式进行自动切换。
在HAC集群中:
DRAUTO参数配置为2时

  • 1,当出现主节点故障时,备节点将自动提升为主节点。原主节点可通过直接启动的方式加入HAC集群,并自动成为HAC集群的备节点(限制条件:主节点的逻辑日志没有覆盖掉原主节点故障时的逻辑日志,即未出现逻辑日志绕圈)。
  • 2,当出现备节点与主节点网络超时,备节点也将自动升级为主节点。如果原主节点保持运行,当网络恢复时,会形成双主现象(即脑裂),主节点会要求原主节点关闭,由于脑裂已经形成,无法能过直接启动的方式恢复HAC集群,仅能通过重建HAC集群的方式进行恢复。


阅读全文»

Kylin V10SP1桌面版下GBase 8s java udr异常处理

同样的GBase 8s数据库版本,自定义的java udr在Kylin V10SP1 服务器版(aarch64架构)下创建、运行正常,而在Kylin V10SP1 桌面版(aarch64架构)下时创建正常但运行UDR异常,报错如下:

(38000) - Unknown throwable: (java.lang.NoClassDefFoundError: Could not initialize class sun.security.ec.CurveDB).
Error in line 1
Near character position 62

阅读全文»

Nginx下PHP连接到GBase 8s数据库 - PDO_GBASEDBT方式

PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64

必要组件:

  • php及扩展,如php-fpm/php-odbc/php-pdo等
  • nginx服务
  • gcc/gcc-c++

数据库连接工具(CSDK)

  • GBase 8s CSDK(需含ESQLC组件)

配置前提

  • GBase 8s数据库服务器正常运行
  • GBase 8s客户端连接工具

阅读全文»

Nginx下PHP连接到GBase 8s数据库 - PDO_ODBC方式

PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64

必要组件:

  • unixODBC及unixODBC-devel
  • php及扩展,如php-fpm/php-odbc/php-pdo等
  • nginx服务

数据库连接工具(CSDK)

  • GBase 8s CSDK

配置前提

  • GBase 8s数据库服务器正常运行
  • GBase 8s客户端连接工具

阅读全文»

Nginx下php连接到GBase 8s数据库 - ODBC方式

PHP可以通过odbc,pdo_odbc和pdo_gbasedbt三种方式连接到GBase 8s数据库,这三种方式均需要通过CSDK客户端工具。
操作系统:CentOS 7.9 x86_64

必要组件:

  • unixODBC及unixODBC-devel
  • php及扩展,如php-fpm/php-odbc/php-pdo等
  • nginx服务

数据库连接工具(CSDK)

  • GBase 8s CSDK

配置前提

  • GBase 8s数据库服务器正常运行
  • GBase 8s客户端连接工具

阅读全文»

GBase 8s 中的关键字(表达式)

GBase 8s中有一些特殊的关键字,比如rowid,rownum这样的,可以直接在查询语句中直接使用,表示特定的含义。
这种类型的关键字,在使用到表上时需要特别小心,否则可能得非预想要的结果。
如:

select * from tab1 where default_role like '%N%';

表面上的意思是:查询tab1中default_role字段中包含'N'字符的数据,select * from tab1返回的default_role字段中也有包含'N'的数据。但它却返回了空结果?!为什么呢?
原因就是DEFAULT_ROLE是内置关键字,直接写DEFAULT_ROLE是获取当前用户的默认角色,当前默认角色名并不包含'N',因此该语句应该改成

select * from tab1 where tab1.default_role like '%N%';

也就是说:使用表名/表别名限制定符.字段名称时,SQL才会正确解析为字段名称。这也只是规避方法,更合理的方式是:不使用保留的关键字做表名、字段和别名。
注:对于其关键字,也适合于使用 表名/表别名限制定符.字段名称 的方式。





阅读全文»

ALTER TABLE 之 定点变更(in-place alter)

定点变更算法可以提供优于慢速变更算法的诸多性能优势:
定点变更算法:
1,增加了表的可用性
ALTER TABLE操作使用定点变更算法时,其他用户稍后可以访问该表,因为数据库服务器只在更新表定义和重建包含更改列的索引时才锁定该表。

对于要求7 * 24不停运行的应用程序系统,这种对表可用性的增强可以提高系统吞吐量。

使用定点变更算法时,数据库服务器锁定表的时间比慢速变更算法要短,因为数据库服务器:

  • 将表转换成新的定义肘,不必为表制作副本
  • 在ALERR TABLE 操作期间,不转换数据行
  • 当您以后更新或插入行时,在变更操作之后使用最新定义来定点变更物理列。数据库服务器对驻留在每页上的行进行转换。



阅读全文»

ALTER TABLE 之 快速变更(Fast alter)

ALTER TABLE 语句更改表的属性但不影响数据时,数据库服务器将使用快速变更算法.
使用ALTER TABLE 语句执行以下操作时数据库服务器使用快速变更算法:

  • 更改下一扩展数据块大小
  • 添加或删除约束
  • 更改表的锁定方式
  • 不修改列类型而更改唯一索引属性

使用快速变更算法时,数据库服务器对表的锁定只保持很短的时间。在某些情况下,数据库服务器锁定系统目录表只是为了更改属性。无论哪种情况,无法查询此表的时间均很短。