本文将介绍单机及分布式部署的实例启停方式,分别为SQL命令方式及yasboot工具方式,如需了解共享集群的实例启停方式请查阅共享集群启停。
数据库实例从关闭启动到正常使用,要经过NOMOUNT、MOUNT和OPEN三个阶段。
YashanDB支持通过yasboot工具直接将数据库实例调整至NOMOUNT、MOUNT和OPEN三个阶段的任意一个,也支持通过ALTER DATABASE语句将数据库实例从NOMOUNT阶段调整到MOUNT阶段和OPEN阶段。
ALTER DATABASE语句仅适用于单机数据库对单个实例节点执行启动实例操作,即仅改变语句执行所在节点的实例。
yasboot工具支持进行如下粒度的启动实例操作:
可通过执行如下命令将数据库启动到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
操作成功后,可查询数据库状态已更新为STARTED。
# 请将如下password@ip:port修改成sys用户的密码及对应的ip端口号
$ yasql sys/password@ip:port
SQL> SELECT status FROM V$INSTANCE;
STATUS
---------
STARTED
Note: 数据库实例启动到NOMOUNT状态后,查看V$INSTANCE视图的STATUS状态值为STARTED,而不是NOMOUNT。
支持通过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;
操作成功后,可查询数据库状态已更新为MOUNTED。
# 请将如下password@ip:port修改成sys用户的密码及对应的ip端口号
$ yasql sys/password@ip:port
SQL> SELECT status FROM V$INSTANCE;
STATUS
---------
MOUNTED
支持通过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;
操作成功后,可查询数据库状态已更新为OPEN。
SELECT status FROM V$INSTANCE;
STATUS
---------
OPEN
以下为YashanDB实例成功启动的三个关键环境变量,设置错误将导致无法启动到NOMOUNT及之后阶段,请根据实际情况将环境变量调整至正确值:
YashanDB在实例启动时进行控制文件校验,出现如下情况时,实例将无法启动到MOUNT及之后阶段:
如出现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]
可通过数据库视图V$DATABASE查看数据库打开模式。
SELECT database_id,database_name,open_mode FROM V$DATABASE;
DATABASE_ID DATABASE_NAME OPEN_MODE
--------------- ---------------- -----------------
569377301 yasdb READ_WRITE
其中,主备模式下还需要关注主备角色的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
Caution: 如果执行的是完全恢复操作,此时如果使用RESETLOGS模式打开,数据库会报YAS-02184错误并关闭实例,请慎重使用该模式打开数据库。
YashanDB支持通过执行SHUTDOWN语句或使用yasboot工具关闭数据库实例。
SHUTDOWN语句仅适用于单机/分布式数据库对单个实例节点执行关闭实例操作,即仅改变语句执行所在节点的实例。
yasboot工具支持进行如下粒度的关闭操作:
可在SQL命令行中指定如下三种方式关闭数据库实例:
示例
SHUTDOWN NORMAL;
SHUTDOWN IMMEDIATE;
SHUTDOWN ABORT;
可通过使用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
其中,-s
参数用于指定关库方式,可指定为NORMAL/IMMEDIATE/ABORT方式,省略则默认为IMMEDIATE方式。
Caution: 一般当服务器宕机、断电,或者人为强制关库时才建议使用ABORT方式,否则应避免使用这种方式停止实例,防止出现数据丢失,或者数据库损坏。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。