YashanDB实例启停

简介: 本文介绍了YashanDB单机及分布式部署的实例启停方法,包括SQL命令与yasboot工具两种方式。数据库启动分为NOMOUNT、MOUNT和OPEN三个阶段,分别对应实例启动、加载数据库但关闭状态、完全打开状态。文章还详细说明了启动失败的常见场景(如环境变量错误、控制文件或数据文件问题)及解决方法,并阐述了SHUTDOWN语句和yasboot工具在关闭数据库时的不同用法与注意事项。

本文内容来自YashanDB官网,原文内容请见 https://doc.yashandb.com/yashandb/23.3/zh/%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86/%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E5%BA%93%E7%AE%A1%E7%90%86/%E5%AE%9E%E4%BE%8B%E5%90%AF%E5%81%9C.html

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

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

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

启动数据库实例


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

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

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

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

# 启动到NOMOUNT阶段

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



$ yasboot cluster stop -c yashandb
$ yasboot cluster start -c yashandb -m nomount

$ yasboot cluster restart -c yashandb -m nomount


$ yasboot group start -c yashandb -g 1 -m nomount

$ yasboot node start -c yashandb -n 4-1 -m nomount

Copied!

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


$ 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 cluster stop -c yashandb
$ yasboot cluster start -c yashandb -m mount

$ yasboot cluster restart -c yashandb -m mount


$ yasboot group start -c yashandb -g 1 -m mount

$ yasboot node start -c yashandb -n 4-1 -m mount


$ yasql sys/password@ip:port
SQL> ALTER DATABASE MOUNT;

Copied!

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


$ yasql sys/password@ip:port

SQL> SELECT status FROM V$INSTANCE;

STATUS   
---------
MOUNTED

Copied!

# 启动到OPEN阶段

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

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



$ yasboot cluster stop -c yashandb
$ yasboot cluster start -c yashandb -m open

$ yasboot cluster restart -c yashandb -m open


$ yasboot group start -c yashandb -g 1 -m open

$ yasboot node start -c yashandb -n 4-1 -m open


$ 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


$ yasboot group stop -c yashandb -g 1

$ yasboot node stop -c yashandb -n 4-1

Copied!

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

Caution

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

相关文章
|
7月前
|
SQL 运维 数据库
YashanDB参数配置
YashanDB的系统参数默认值基于最小配置,可能不适合生产环境,建议安装时初始化配置。参数初始化需结合业务和资源环境设定。YashanDB提供参数自适应功能,根据环境信息推荐调参配置,减少运维难度。修改参数可通过SQL命令完成,支持系统级和会话级调整,过时参数修改会触发告警。查看参数可使用show命令或查询动态视图,过时参数在视图中IS_DEPRECATED字段为TRUE。此外,不建议直接编辑配置文件,分布式部署中可通过YCM或yasboot实现多节点统一配置。
|
7月前
|
SQL 数据库
YashanDB归档管理
YashanDB通过归档模式实现redo日志自动归档,支持数据热备份与主备同步。其核心功能包括:配置归档路径(默认$YASDB_DATA/archive)、切换归档模式(ARCHIVELOG/NOARCHIVELOG)、在线日志切换、查看及清理归档日志。归档日志清理支持自动与手动两种方式,自动清理由ARCH_CLEAN_IGNORE_MODE等参数控制,手动清理需指定条件并执行相应SQL语句。这些功能确保数据库在故障时可通过备份与归档日志重建,同时满足高可用需求。
|
7月前
|
数据库
卸载YashanDB服务端
本文来自YashanDB官网,主要介绍通过`yasboot`命令卸载YashanDB服务端的详细步骤。操作需在服务器安装用户(yashan)的`install`目录下执行,包括:1) 检查并关闭仲裁模式;2) 卸载数据库;3) 卸载`yasom`与`yasagent`组件;4) 清理环境变量及相关配置。若启用了CPU资源管理或守护进程功能,需额外处理开机自启动配置。
|
7月前
|
Java Linux 数据库连接
YashanDB字符集配置
YashanDB支持多种字符集(GBK、UTF8、GB18030、ASCII、ISO88591),可根据需求配置数据库字符集。默认安装下,服务端和Linux/JDBC客户端为UTF8,Windows客户端为GBK。字符集不一致可能导致操作结果异常。配置原则包括:中文场景选GBK,多语言选UTF8(默认推荐),纯英文可选ASCII或ISO88591,严格中文处理选GB18030。服务端字符集在建库时指定,不可更改;TAC/LSC表需UTF8。客户端字符集可通过修改yasc_env.ini文件设置。
|
存储 运维 开发工具
警惕日志采集失败的 6 大经典雷区:从本地管理反模式到 LoongCollector 标准实践
本文探讨了日志管理中的常见反模式及其潜在问题,强调科学的日志管理策略对系统可观测性的重要性。文中分析了6种反模式:copy truncate轮转导致的日志丢失或重复、NAS/OSS存储引发的采集不一致、多进程写入造成的日志混乱、创建文件空洞释放空间的风险、频繁覆盖写带来的数据完整性问题,以及使用vim编辑日志文件导致的重复采集。针对这些问题,文章提供了最佳实践建议,如使用create模式轮转日志、本地磁盘存储、单线程追加写入等方法,以降低日志采集风险,提升系统可靠性。最后总结指出,遵循这些实践可显著提高故障排查效率和系统性能。
986 21
|
5月前
|
存储 算法 安全
Java中的对称加密算法的原理与实现
本文详细解析了Java中三种常用对称加密算法(AES、DES、3DES)的实现原理及应用。对称加密使用相同密钥进行加解密,适合数据安全传输与存储。AES作为现代标准,支持128/192/256位密钥,安全性高;DES采用56位密钥,现已不够安全;3DES通过三重加密增强安全性,但性能较低。文章提供了各算法的具体Java代码示例,便于快速上手实现加密解密操作,帮助用户根据需求选择合适的加密方案保护数据安全。
415 58
|
缓存 监控 NoSQL
深入解析数据库性能优化:策略与实践
【7月更文挑战第23天】数据库性能优化是一个复杂而持续的过程,涉及硬件、软件、架构、管理等多个方面。通过本文的介绍,希望能够为读者提供一个全面的性能优化框架,帮助大家在实际工作中更有效地提升数据库性能。记住,优化不是一蹴而就的,需要持续的观察、分析和调整。
|
缓存 安全 算法
SSL和TLS部署实践
在TLS中,所有安全性都以服务器的加密身份开始,这就需要一个强大的私钥来防止攻击者进行模拟攻击。同样重要的是拥有一个有效和强大的证书,它会授予私钥来代表一个特定的主机名。
334 2
|
存储 缓存 固态存储
阿里云服务器2核8G、4核16G、8核32G配置租用收费标准与活动价格参考
2核8G、8核32G、4核16G配置的云服务器处理器与内存比为1:4,这种配比的云服务器一般适用于中小型数据库系统、缓存、搜索集群和企业办公类应用等通用型场景,因此,多为企业级用户选择。本文介绍这些配置的最新租用收费标准与活动价格情况,以供参考。
|
Python
Python 项目及依赖管理工具技术选型
【8月更文挑战第30天】在进行Python项目及依赖管理时,有多种工具可供选择。虚拟环境工具有`virtualenv`和内置的`venv`,可为项目创建独立环境,避免依赖冲突。依赖管理工具有`pip`、`pipenv`和`poetry`,分别用于安装包、管理依赖并确保版本一致性。选型时需考虑项目需求、团队协作、易用性和社区支持等因素。
367 10