ITPub博客

首页 > 数据库 > 国内数据库 > YashanDB实例启停

YashanDB实例启停

国内数据库 作者:崖山数据库系统YashanDB 时间:2025-03-10 17:30:35 0 删除 编辑

本文将介绍单机及分布式部署的实例启停方式,分别为SQL命令方式及yasboot工具方式,如需了解共享集群的实例启停方式请查阅 共享集群启停。

#数据库实例阶段

数据库实例从关闭启动到正常使用,要经过NOMOUNT、MOUNT和OPEN三个阶段。

  • NOMOUNT:启动数据库实例, 此时读取参数文件,但是不加载数据库。
  • MOUNT:启动数据库实例,读取控制文件,加载数据库,但是数据库处于关闭状态。
  • OPEN:启动数据库实例,加载并打开数据库。

#启动数据库实例

YashanDB支持通过yasboot工具直接将数据库实例调整至NOMOUNT、MOUNT和OPEN三个阶段的任意一个,也支持通过ALTER DATABASE语句将数据库实例从NOMOUNT阶段调整到MOUNT阶段和OPEN阶段。

ALTER DATABASE语句仅适用于单机数据库对单个实例节点执行启动实例操作,即仅改变语句执行所在节点的实例。

yasboot工具支持进行如下粒度的启动实例操作:

  • 单机/分布式数据库集群粒度启动节点实例
  • 单机/分布式数据库节点组粒度启动节点实例
  • 单机/分布式数据库启动特定节点实例

#启动到NOMOUNT阶段

可通过执行如下命令将数据库启动到NOMOUNT阶段:

# yasboot工具:# 方式一:先关闭然后启动数据库集群至NOMOUNT状态$ yasboot cluster stop -c yashandb
$ yasboot cluster start -c yashandb -m nomount# 方式二:一键重启数据库集群至NOMOUNT状态$ yasboot cluster restart -c yashandb -m nomount# 启动group_id为1的节点组至NOMOUNT状态$ yasboot group start -c yashandb -g 1 -m nomount# 启动node_id为4-1的节点至NOMOUNT状态$ yasboot node start -c yashandb -n 4-1 -m nomount
Copied!

操作成功后,可查询数据库状态已更新为STARTED。

# 请将如下password@ip:port修改成sys用户的密码及对应的ip端口号$ yasql sys/password@ip:port
SQL> SELECT status FROM V$INSTANCE;
 STATUS   
---------
STARTED
Copied!

Note:

数据库实例启动到NOMOUNT状态后,查看V$INSTANCE视图的STATUS状态值为STARTED,而不是NOMOUNT。

#启动到MOUNT阶段

支持通过yasboot工具将数据库实例从任意阶段调整至MOUNT阶段,或通过SQL命令方式将数据库实例从NOMOUNT阶段调整至MOUNT阶段。

可通过执行如下命令将数据库实例启动到MOUNT阶段:

# yasboot工具:# 方式一:先关闭然后启动数据库集群至MOUNT状态$ yasboot cluster stop -c yashandb
$ yasboot cluster start -c yashandb -m mount# 方式二:一键重启数据库集群至MOUNT状态$ yasboot cluster restart -c yashandb -m mount# 启动group_id为1的节点组至MOUNT状态$ yasboot group start -c yashandb -g 1 -m mount# 启动node_id为4-1的节点至MOUNT状态$ yasboot node start -c yashandb -n 4-1 -m mount# SQL命令(此时须确保数据库实例处于NOMOUNT状态):$ yasql sys/password@ip:port
SQL> ALTER DATABASE MOUNT;
Copied!

操作成功后,可查询数据库状态已更新为MOUNTED。

# 请将如下password@ip:port修改成sys用户的密码及对应的ip端口号$ yasql sys/password@ip:port
SQL> SELECT status FROM V$INSTANCE;
 STATUS   
---------
MOUNTED
Copied!

#启动到OPEN阶段

支持通过yasboot工具将数据库实例从任意阶段调整至OPEN阶段,或通过SQL命令方式将数据库实例从NOMOUNT或MOUNT阶段调整至OPEN阶段。

可通过执行如下命令将数据库实例启动到OPEN阶段:

# yasboot工具:# 方式一:先关闭然后启动数据库集群至OPEN状态$ yasboot cluster stop -c yashandb
$ yasboot cluster start -c yashandb -m open# 方式二:一键重启数据库集群至OPEN状态$ yasboot cluster restart -c yashandb -m open# 启动group_id为1的节点组至OPEN状态$ yasboot group start -c yashandb -g 1 -m open# 启动node_id为4-1的节点至OPEN状态$ yasboot node start -c yashandb -n 4-1 -m open# SQL命令(此时须确保数据库实例处于NOMOUNT或MOUNT状态):$ yasql sys/password@ip:port
SQL> ALTER DATABASE OPEN;
Copied!

操作成功后,可查询数据库状态已更新为OPEN。

SELECT status FROM V$INSTANCE;
 STATUS   ---------OPEN
Copied!

#启动实例失败场景

#环境变量未设置或错误

以下为YashanDB实例成功启动的三个关键环境变量,设置错误将导致无法启动到NOMOUNT及之后阶段,请根据实际情况将环境变量调整至正确值:

  • YASDB_HOME:YashanDB默认软件目录
  • YASDB_DATA:YashanDB默认数据目录
  • LD_LIBRARY_PATH:YashanDB依赖包目录,使用yasboot sql或yaql前必须先正确配置该环境变量

#控制文件验证失败

YashanDB在实例启动时进行控制文件校验,出现如下情况时,实例将无法启动到MOUNT及之后阶段:

  • 控制文件实际路径与CONTROL_FILES参数配置路径不一致

    出现此种情况时,解决方法如下:

    • 方法一:修改控制文件路径。
    • 方法二:启动实例到NOMOUNT阶段后修改CONTROL_FILES参数,再重新启动实例。
  • 控制文件中的数据库版本与实例版本不一致

    此种情况启动实例将提示 database version x.x.x incompatible with YashanDB version x.x.x错误,请根据实际情况选择是否进行版本升级。

  • 控制文件组成员的数据库ID不一致

    此种情况多是由于一台服务器存在多个数据库实例时,CONTROL_FILES参数配置了不同数据库的控制文件,将其修改为正确的控制文件路径即可。

#数据文件丢失或损坏

  • 内置表空间数据文件丢失或损坏

    如出现内置表空间数据文件丢失或损坏的情况,实例将无法启动到MOUNT及之后阶段。

    此种情况下,通常可以通过 恢复最新的可用备份集解决,若不存在备份集则只能通过找回文件、物理恢复等方式解决。

  • 用户数据文件丢失或损坏

    当用户表空间挂载的数据文件出现丢失或损坏时,通常可以通过 恢复最新的可用备份集解决,若不存在备份集则可通过YashanDB提供的逃生通道进行应急处理,保证数据库能正常启动、打开和运行,具体操作见 数据文件管理章节中数据文件损坏后的应急处理相关描述。

#redo文件丢失或损坏

如出现redo文件丢失或损坏的情况,实例将无法启动到MOUNT及之后阶段。

此种情况下,可通过 恢复最新的可用备份集解决。

#相关进程未启动

使用yasboot工具调整数据库实例时须确保yasom和yasagent进程处于开启状态,否则将提示 connect: connection refused错误。服务器重启时,yasom和yasagent进程会自动关闭,可通过注册开机自启动功能于服务器重启时自动拉起yasom和yasagent进程,具体操作见 初始数据库章节描述。

#数据库打开模式

YashanDB在MOUNT或NOMOUNT阶段下,准备调整至OPEN阶段时,可以通过SQL命令方式根据不同场景配置数据库的打开模式为READWRITE、RESETLOGS或者UPGRADE。

语法为: ALTER DATABASE OPEN [READWRITE|RESETLOGS|UPGRADE]

  • READWRITE:用于正式生产环境,数据库完整事务的读写操作;数据库打开时如果不设置打开模式参数,则默认为READWRITE。
  • RESETLOGS:用于数据库发生故障时,如果需要进行不完全恢复操作,请使用RESETLOGS模式打开数据库,并在打开后重新设置日志号。
  • UPGRADE:用于打开数据库升级模式,该模式下不允许建立新的会话连接。

可通过数据库视图V$DATABASE查看数据库打开模式。

SELECT database_id,database_name,open_mode FROM V$DATABASE;
 
    DATABASE_ID DATABASE_NAME    OPEN_MODE       
--------------- ---------------- -----------------
      569377301 yasdb            READ_WRITE
Copied!

其中,主备模式下还需要关注主备角色的DATABASE_ROLE字段。

SELECT DATABASE_NAME,LOG_MODE,OPEN_MODE,PROTECTION_MODE,DATABASE_ROLE,BLOCK_SIZE,STATUS FROM  V$DATABASE;
  DATABASE_NAME LOG_MODE    OPEN_MODE   PROTECTION_MODE      DATABASE_ROLE  BLOCK_SIZE STATUS------------- ----------- ----------- -------------------- ------------- ----------- -------yasdb         ARCHIVELOG  READ_ONLY   MAXIMUM PERFORMANCE  STANDBY              8192 NORMAL
Copied!

Caution:

如果执行的是完全恢复操作,此时如果使用RESETLOGS模式打开,数据库会报YAS-02184错误并关闭实例,请慎重使用该模式打开数据库。

#关闭数据库实例

YashanDB支持通过执行SHUTDOWN语句或使用yasboot工具关闭数据库实例。

SHUTDOWN语句仅适用于单机/分布式数据库对单个实例节点执行关闭实例操作,即仅改变语句执行所在节点的实例。

yasboot工具支持进行如下粒度的关闭操作:

  • 单机/分布式数据库集群粒度关闭节点实例
  • 单机/分布式数据库节点组粒度关闭节点实例
  • 单机/分布式数据库关闭特定节点实例

#SQL命令方式

可在SQL命令行中指定如下三种方式关闭数据库实例:

  • SHUTDOWN NORMAL:等待事务正常结束后关闭,没有时间限制,通常建议选择这种方式来关闭数据库,此方式也为YashanDB默认的关库模式。
  • SHUTDOWN IMMEDIATE:立即中断当前用户的连接,同时强行终止用户的当前执行中的事务,将未完成的事务回退,并关闭数据库。
  • SHUTDOWN ABORT:强制中断所有数据库操作并关闭数据库,这种关闭方式可能会丢失一部分数据,影响数据库完整性。

示例

SHUTDOWN NORMAL;SHUTDOWN IMMEDIATE;SHUTDOWN ABORT;
Copied!

#yasboot工具方式

可通过使用yasboot工具关闭数据库实例:

$ yasboot cluster stop -c yashandb
$ yasboot cluster stop -c yashandb -s normal
$ yasboot cluster stop -c yashandb -s immediate
$ yasboot cluster stop -c yashandb -s abort# 关闭group_id为1的节点组$ yasboot group stop -c yashandb -g 1# 关闭node_id为4-1的节点$ yasboot node stop -c yashandb -n 4-1
Copied!

其中, -s参数用于指定关库方式,可指定为NORMAL/IMMEDIATE/ABORT方式,省略则默认为IMMEDIATE方式。

Caution:

一般当服务器宕机、断电,或者人为强制关库时才建议使用ABORT方式,否则应避免使用这种方式停止实例,防止出现数据丢失,或者数据库损坏。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70028812/viewspace-3075342/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: YashanDB归档管理
请登录后发表评论 登录
全部评论
崖山数据库系统YashanDB是深圳计算科学研究院完全自主研发设计的新型数据库系统,融入原创理论,支持单机/主备、共享集群、分布式等多种部署方式,覆盖OLTP/HTAP/OLAP交易和分析混合负载场景,为客户提供一站式的企业级融合数据管理解决方案。

注册时间:2023-04-11

  • 博文量
    722
  • 访问量
    640237