Gbase8s数据库的认识 - 多实例的区分和数据库启停使用

1 gbase8s的多实例

1.1 gbase8s数据库软件-实例-数据文件的对应关系

        Gbase8s数据库一个数据库软件安装在数据库服务器上,可以初始化多个数据库实例,每个实例使用不同的端口进行区分,所以在服务器上可能会存在多个实例的情况,而每个实例都有自己的数据文件,形成了1:N:N的情景。对应关系和用户使用的情景如下:

        一个软件初始化多个实例,每个实例都有各自的数据文件、sqlhosts连接文件和onconfig数据库配置参数文件。

       用户通过生效各个实例的环境变量,从而获取到相应的实例文件。

1.2 多实例内存段的划分

        gbase8s单台服务器上初始化多实例时,要求实例名称不同,是因为实例内存段的划分和实例名称有关。

        gbase8s的实例是一个独立运行的个体,每个实例都有自己的内存段、进程和磁盘空间,也正因为每个实例的内存段都是独立的,所以能在一台服务器上运行多个实例,而内存段的分配和每个实例的实例名有关:

  • 当启动一个gbase8s数据库实例时,数据库服务器根据实例的实例名称生成特定的共享内存键,并将共享内存键对应的共享内存附加到实例上,可以通过onstat -g seg命令查看各个内存段及键值
  • 所以有时候重启数据库时会出现内存段已分配的情况,这时候需要使用onclean -ky卸载掉相关的内存段,从而使当前实例使用(也可以使用操作系统命令ipcrm -a)

1.2 用户使用不同实例

--服务器上存在实例node1,其环境变量文件为profile.node1,内容如下
--其中包含实例名称、软件安装位置、sqlhosts文件位置、onconfig文件位置、字符集编码和其他的配置
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ cat profile.node1
export GBASEDBTSERVER=node1
export GBASEDBTDIR=/home/gbasedbt/gbase
export GBASEDBTSQLHOSTS=/home/gbasedbt/gbase/etc/sqlhosts.node1
export ONCONFIG=onconfig.node1
export PATH=/home/gbasedbt/gbase/bin:$PATH
export DB_LOCALE=zh_CN.utf8
export CLIENT_LOCALE=zh_CN.utf8
export GL_USEGLU=1
export GL_DATE="%Y-%m-%d"
export GL_DATETIME="%Y-%m-%d %H:%M:%S"
export DELIMIDENT=Y
alias dbaccess="rlwrap dbaccess"


--如果想要使用实例node1环境的数据库,需要生效此环境变量,即可查看node1实例的信息
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ source profile.node1
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ onstat -
Your evaluation license will expire on 2025-03-15 00:00:00
On-Line -- Up 12 days 00:58:39 -- 676080 Kbytes

2 数据库的启停(所有命令都必须进入到gbasedbt用户)

[root@iZ2ze2nmdlhki0ezcrioayZ ~]# su - gbasedbt
Last login: Mon Apr  8 14:19:23 CST 2024 on pts/0

2.1 数据库的启动

--数据库启动之前要保证需要启动的数据库实例没有启动,通过onstat -g dis查看数据库状态
--查看状态发现node2实例没有启动
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ onstat -g dis
Your evaluation license will expire on 2025-03-15 00:00:00
shared memory not initialized for GBASEDBTSERVER 'node2'
There are 2 servers found
Server        : node1
Server Number : 137
Server Type   : IDS
Server Status : Up
Server Version: GBase Database Server Version 12.10.FC4G1TL
Shared Memory : 0x44000000
GBASEDBTDIR   : /home/gbasedbt/gbase
ONCONFIG      : /home/gbasedbt/gbase/etc/onconfig.node1
SQLHOSTS      : /home/gbasedbt/gbase/etc/sqlhosts.node1
Host          : iZ2ze2nmdlhki0ezcrioayZ

Server        : node2
Server Number : 232
Server Type   : IDS
Server Status : Down
Server Version: GBase Database Server Version 12.10.FC4G1TL
Shared Memory : 0x44000000
GBASEDBTDIR   : /home/gbasedbt/gbase
ONCONFIG      : /home/gbasedbt/gbase/etc/onconfig.node2
SQLHOSTS      : /home/gbasedbt/gbase/etc/sqlhosts.node2
Host          : iZ2ze2nmdlhki0ezcrioayZ

--启动node2,先使node2节点的环境变量文件生效
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ source profile.node2
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ oninit -vy
Your evaluation license will expire on 2025-03-15 00:00:00
Reading configuration file '/home/gbasedbt/gbase/etc/onconfig.node2'...succeeded
Creating /GBASEDBTTMP/.infxdirs...succeeded
Allocating and attaching to shared memory...succeeded
Creating resident pool 36470 kbytes...succeeded
Creating infos file "/home/gbasedbt/gbase/etc/.infos.node2"...succeeded
Linking conf file "/home/gbasedbt/gbase/etc/.conf.node2"...succeeded
Initializing rhead structure...rhlock_t 65536 (2048K)... rlock_t (26562K)... Wri                                      ting to infos file...succeeded
Initialization of Encryption...succeeded
Initializing ASF...succeeded
Initializing Dictionary Cache and SPL Routine Cache...succeeded
Bringing up ADM VP...succeeded
Creating VP classes...
。。。。。。。。
。。。。。。。。
。。。。。。。。
Starting scheduling system...succeeded
Verbose output complete: mode = 5
--结尾为mode=5表示启动完成

2.2 数据库的停止

--停止node2节点的数据库
--生效node2节点的环境变量,onmode -ky停止数据库
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ source profile.node2
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ onmode -ky
Your evaluation license will expire on 2025-03-15 00:00:00
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ onstat -g dis
Your evaluation license will expire on 2025-03-15 00:00:00
shared memory not initialized for GBASEDBTSERVER 'node2'
There are 2 servers found
Server        : node1
Server Number : 137
Server Type   : IDS
Server Status : Up
Server Version: GBase Database Server Version 12.10.FC4G1TL
Shared Memory : 0x44000000
GBASEDBTDIR   : /home/gbasedbt/gbase
ONCONFIG      : /home/gbasedbt/gbase/etc/onconfig.node1
SQLHOSTS      : /home/gbasedbt/gbase/etc/sqlhosts.node1
Host          : iZ2ze2nmdlhki0ezcrioayZ

Server        : node2
Server Number : 232
Server Type   : IDS
Server Status : Down
Server Version: GBase Database Server Version 12.10.FC4G1TL
Shared Memory : 0x44000000
GBASEDBTDIR   : /home/gbasedbt/gbase
ONCONFIG      : /home/gbasedbt/gbase/etc/onconfig.node2
SQLHOSTS      : /home/gbasedbt/gbase/etc/sqlhosts.node2
Host          : iZ2ze2nmdlhki0ezcrioayZ

--停止后可以通过onclean -ky清除一下内存段
gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ onclean -ky
Your evaluation license will expire on 2025-03-15 00:00:00
onclean: Cleaning up processes and resources for 'node2'...
 - Looking for the shmem key: 533e4803
 - Looking for the shmem key: 533e4804
 - Looking for semaphore ID: 32804
 - Looking for the shmem key: 533e4801
 - Looking for the shmem key: 533e4802
 - Looking for the shmem key: 533e4805
onclean: GBase Database Server seems to have shutdown cleanly.

2.3数据库启停的失败的检查方法

数据库启停的相关信息会写入到日志中,如果启停失败可以通过查看日志,根据日志信息判断启停失败的原因。

--Gbase8s数据库可以通过命令行和文件查看两种方式查看数据库日志
--命令行只可以查看最近20行的日志,但是里面会包含日志文件的位置,可以通过此命令找到日志文件位置
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ onstat -m
Your evaluation license will expire on 2025-03-15 00:00:00
On-Line -- Up 00:00:18 -- 676080 Kbytes

Message Log File: /home/gbasedbt/gbase/tmp/online_node2.log
04/09/24 09:27:33  Physical Recovery Started at Page (3:249).
04/09/24 09:27:34  Physical Recovery Complete: 0 Pages Examined, 0 Pages Restored.
04/09/24 09:27:34  Logical Recovery Started.
04/09/24 09:27:34  96 recovery worker threads will be started.
04/09/24 09:27:34  Logical Recovery has reached the transaction cleanup phase.
04/09/24 09:27:34  Logical Recovery Complete.
          0 Committed, 0 Rolled Back, 0 Open, 0 Bad Locks

04/09/24 09:27:35  Dataskip is now OFF for all dbspaces
04/09/24 09:27:36  SCHAPI: "GBASEDBTDIR/etc/sysadmin/stop" file is present.
          Bypassing dbScheduler and dbWorker threads startup.
04/09/24 09:27:36  Checkpoint Completed:  duration was 0 seconds.
04/09/24 09:27:36  Tue Apr  9 - loguniq 7, logpos 0x8ea0c0, timestamp: 0x56949 Interval: 34

04/09/24 09:27:36  Maximum server connections 0
04/09/24 09:27:36  Checkpoint Statistics - Avg. Txn Block Time 0.000, # Txns blocked 0, Plog used 19, Llog used 1

04/09/24 09:27:36  On-Line Mode
04/09/24 09:27:40  Defragmenter cleaner thread now running
04/09/24 09:27:40  Defragmenter cleaner thread cleaned:0 partitions

--上面日志只显示20行,但是提供了日志文件的位置为/home/gbasedbt/gbase/tmp/online_node2.log
--可以cat进行查看
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ cat /home/gbasedbt/gbase/tmp/online_node2.log



3 dbaccess工具的使用(需要进入到gbasedbt用户下)

3.1工具介绍

dbaccess是gbase8s数据库连接数据库进行使用的工具之一,主要为后台命令,gbase8s数据库提供连接的使用分为两个工具三种用法:

  • 一是外部图形化工具GDS(GbaseDataStudio)
  • 二是数据库安装自带的linux上的dbaccess ,dbaccess有两种用法:
    • 一是dbaccess进入的数据库使用工具
    • 一种是dbaccess -(数据库名) -进入的后台sql用法。

本次主要是使用的最后一种用法

3.2 dbaccess工具的准备(可选,更改权限可能需要root用户)

baccess工具本身不具备两个功能:历史sql存储和上下左右方向键的使用,可以自己放入插件进行使用(插件为rlwrap)。

操作如下:

  • 上传插件到服务器
  • 授予文件相关属主、属组和权限
  • 将文件移动到数据库软件安装路径bin/下
  • 调整环境变量,加入alias dbaccess="rlwrap dbaccess"
  • 生效环境变量
[root@iZ2ze2nmdlhki0ezcrioayZ install]# ls -l rlwrap
-rwx------ 1 root root 256128 Mar 15 10:18 rlwrap
[root@iZ2ze2nmdlhki0ezcrioayZ install]# chown gbasedbt:gbasedbt rlwrap
[root@iZ2ze2nmdlhki0ezcrioayZ install]# chmod 755 rlwrap
[root@iZ2ze2nmdlhki0ezcrioayZ install]# su - gbasedbt
Last login: Tue Apr  9 09:26:55 CST 2024 on pts/0
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ mv install/rlwrap /home/gbasedbt/gbase/bin/
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ echo 'alias dbaccess="rlwrap dbaccess"' >> profile.node2
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ source profile.node2

3.3 dbaccess工的使用和注意点

  • dbaccess - -,后面两个 -注意都有空格 ,第一个是数据库名称,第二个是执行的脚本文件
  • 第二个 - 为空时默认会进入到数据库后台
  • dbaccess进入数据库的方法有两种,
    • 一种直接使用- -双横线,进入到软件内,再通过database 库名;选择需要使用的数据库
    • 第二种为dbaccess 库名  -直接进入到数据库内
    • 第一种进入到数据库内,必须先行选择数据库,不能直接执行sql,否则会报以下错误
--dbaccess通过双横线 - -进入到数据库内,无法执行命令,否则会报以下错误
--Database not select yet,没有选择数据库
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ dbaccess - -
Your evaluation license will expire on 2025-03-15 00:00:00
> select * from sysmaster:sysdatabases;

  349: Database not selected yet.
Error in line 1
Near character position 36
--需要通过database命令选择一个数据库从而再去执行
> database sysmaster ;

Database selected.

> select * from sysmaster:sysdatabases;



name            sysmaster
partnum         1048580
owner           gbasedbt
created         2024-03-15

  • 以下为第二种方法
--如果不知道数据库名,可以先行进入到sysmaster数据库,然后查询系统sysdatabases查看所有数据库名称
[gbasedbt@iZ2ze2nmdlhki0ezcrioayZ ~]$ dbaccess sysmaster -
Your evaluation license will expire on 2025-03-15 00:00:00

Database selected.

> select name from sysdatabases;



name  sysmaster

name  sys

name  gbasedbt

name  sysutils

name  sysuser

name  sysadmin

name  gbasedb

name  test

name  test1

9 row(s) retrieved.

> database test;

Database closed.


Database selected.

>

  • 33
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值