命令gcluster_services gbase stop和service gbased stop有什么区别?

(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 stopservice 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
}

将备份数据在一个新节点进行数据恢复,该怎么操作?

步骤:
1)A环境全部备份
2)A备份上传B环境
3)B环境安装单机
4)B环境使用rcman恢复
方式完成,A备份文件总大小约为350MB。

info:注意事项:

1)A、B两单机安装时使用的操作系统用户名需相同
2)A、B两单机安装时使用的实例名sid需相同
否则恢复的时候,会找不到绝对路径报错。

如何查看当前session所在的节点?

通过SQL语句show local node;查询。
示例:

gbase> show local node;
 +-----------------+--------------------------+---------+------------+-----------------+----------+
 | Id         | ip              | name | dpname | safegroupId | status |
 +------------------+--------------------------+--------+-------------+-----------------+---------+
 | 1684646080 |  192.168.105.100 | n1   | n1     | 1701423296 | VALID|
 +------------------+--------------------------+---------+------------+------------------+--------+ 

能否启停gbase集群的单个进程,如单独启动gbased?

gbase集群的gcmonit组件提供了gcluster_services命令,可以进行gbased、gclusterd、gcrecover、syncserver等进程的启停;
启动服务

gcluster_services  <gbase | gcluster | gcrecover | syncserver | all>  start

停止服务

gcluster_services  <gbase | gcluster | gcrecover | syncserver | all>  stop [--force]

重新启动服务

gcluster_services  <gbase | gcluster | gcrecover | syncserver | all>  restart [--force]

获取服务状态

gcluster_services  <gbase | gcluster | gcrecover | syncserver | all>  info

其中,all表示获取所有集群服务的运行状态。

info:注意:

gcluster_services <gbase|gcluster|gcrecover|syncserver> stop 停止进程后,gcmonit会自动将这个进程拉起。

如何导出集群的权限信息?

通过编写脚本,先查询出集群的用户信息,再使用show grants语句查询出该用户的权限。如:

[gbase@rhel6201 ~]$ cat get_privileges.sh 
#!/bin/sh
user=$1
password=$2 
/opt/gcluster/server/bin/gbase -u$user -p$password -e"select concat('show grants for ''',trim(user),'''@''',trim(host),''';') from gbase.user;" | grep 'grant' | grep -v concat > showgrants.sql
/opt/gcluster/server/bin/gbase -u$user -p$password < showgrants.sql | grep -v -i 'Grants for' | sed 's/\(GRANT .*\)/\1;/'

测试结果:

[gbase@rhel6201 ~]$ sh get_privileges.sh root
Enter password: 输入两次回车是因为root的密码为空。
Enter password: 
GRANT ALL PRIVILEGES ON *.* TO 'gbase'@'%' IDENTIFIED BY PASSWORD '*9C0ADBD7F08FA9D49D82760B104110C55B943B8D' WITH GRANT OPTION;
GRANT USAGE ON *.* TO 'jihui'@'%' IDENTIFIED BY PASSWORD '*DD4F4D0B20DEE5E8A4A7512FD870DAD13613E2CE';
GRANT SELECT ON "test".* TO 'jihui'@'%' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
[gbase@rhel6201 ~]$