如何确认nodedatamap系统表是否损坏?

nodedatamap系统表用于计算一致性hash,数据hash分布时要访问此表。该表存储于每个节点gcluster和gnode的gclusterdb数据库和gbase数据库下。此表是安装集群后,通过initnodedatamap命令初始化的。
表中记录数为65536行。表结构如下:

CREATE TABLE "nodedatamap" (
  "hashkey" int(11) DEFAULT NULL,
  "nodeid" int(11) DEFAULT NULL
) ENGINE=EXPRESS DEFAULT CHARSET=utf8 TABLESPACE='sys_tablespace' 

可以利用crc32函数查询判断数据hash分布后落在哪个节点,如:

select nodeid from nodedatamap where hashkey = crc32('13184647638')%65536;

可以使用以下SQL判断表是否损坏,如SQL执行报错,则说明表已经损坏

select count(*) from gclusterdb.nodedatamap;
select distinct nodeid from gclusterdb.nodedatamap;
select * from gclusterdb.nodedatamap;

如果确认nodedatamap表损坏,可以执行以下命令重新初始化此表:refreshnodedatamap
执行前需确保gcluster没有其它操作。

如何确认8a产品各模块版本信息?

对于/opt/gnode/server/bin及/opt/gcuster/server/bin路径下的程序文件,通过-V或--version选项可以查询到该组件的版本信息;

gcware版本
[root@zhfx1 /]# rpm -qa | grep gcware
gcwarelib-1.2.9-14.el6.x86_64
gcware-1.2.9-14.el6.x86_64
gcluster 版本
[root@zhfx1 /]# gccli -uroot
gbase> show variables like '%version%';
+-------------------------+-------------------+
| Variable_name        | Value        |
+-------------------------+-------------------+
| gcluster_hash_version   | 1      |
| protocol_version        | 10                |
| version                 | 8.5.1.2           |
| version_comment         | 24466             |
| version_compile_machine | x86_64            |
| version_compile_os      | unknown-linux-gnu |
+-------------------------+-------------------+
gnode 版本
[root@zhfx1 /]# gncli -uroot
gbase> show variables like '%version%';
+-------------------------+-------------------+
| Variable_name           | Value             |
+-------------------------+-------------------+
| protocol_version        | 10                |
| version                 | 8.5.1.1           |
| version_comment         | 1.5.8.24010       |
| version_compile_machine | x86_64            |
| version_compile_os      | unknown-linux-gnu |
+-------------------------+-------------------+
gc_sync_server 和 gc_sync_client版本
[root@zhfx1 /]# /opt/gnode/server/bin/gc_sync_server --version
[root@zhfx1 /]# /opt/gnode/server/bin/gc_sync_client --version
VERSION
8.5.1.2.4.4.22341.17099
gcdatarecover 和 gcmetarecover版本
[root@zhfx1 /]# /opt/gcluster/server/bin/gcdatarecover --version
/opt/gcluster/server/bin/gcdatarecover  Ver 8.5.1.2 for unknown-linux-gnu on x86_64 (24466)
[root@zhfx1 /]# /opt/gcluster/server/bin/gcmetarecover --version
/opt/gcluster/server/bin/gcmetarecover  Ver 8.5.1.2 for unknown-linux-gnu on x86_64 (24466)
dispatch_server版本
[root@zhfx6 dispatch_server]# ./dispserver --version
version: 1.1
svn revision: 22340
zeromq version: 2.1.4
查看gbloader 版本
[root@localhost ~]# /opt/gnode/server/bin/gbloader -V
/opt/gnode/server/bin/gbloader  Ver 8.5.1.2.build26588 for unknown-linux-gnu on x86_64

以sql方式查看coordinator节点和node节点

查看coordinator节点:
gbase> show gcluster nodes;
+------------+--------------+--------------+--------+-----------+
| Id         | ip           | name         | status | datastate |
+------------+--------------+--------------+--------+-----------+
| 1678379530 | 10.10.10.100 | coordinator1 | online |         0 |
| 1695156746 | 10.10.10.101 | coordinator2 | online |         0 |
| 1711933962 | 10.10.10.102 | coordinator3 | online |         0 |
+------------+--------------+--------------+--------+-----------+
3 rows in set (Elapsed: 00:00:00.00)
查看node节点:
gbase> show nodes;         
+------------+--------------+-------+--------------+----------------+--------+-----------+
| Id         | ip           | name  | primary part | duplicate part | status | datastate |
+------------+--------------+-------+--------------+----------------+--------+-----------+
| 1711933962 | 10.10.10.102 | node1 | n1           | n3             | online |         0 |
| 1678379530 | 10.10.10.100 | node2 | n2           | n1             | online |         0 |
| 1695156746 | 10.10.10.101 | node3 | n3           | n2             | online |         0 |
+------------+--------------+-------+--------------+----------------+--------+-----------+
3 rows in set (Elapsed: 00:00:00.00)

如何查看dispserver和corosync生成core文件

方法1:
无论是redhat还是suse系统,设置 ulimit -c unlimited,在程序宕机时就会生成core file。
方法2:
在redhat系统下,修改 /etc/abrt/abrt-action-save-package-data.conf 文件
ProcessUnpackaged = yes
/var/spool/abrt/ 会有相应core file。
info:注意:

core file 生成路径: ll /proc/`pidof xx`/ | grep cwd
例如:
(1)dispserver在应用程序所在目录下
(2)corosync 生成路径: /var/lib/corosync
[/shrinks]