#数据库资源管理命令
# ycsctl add database
该命令用于在集群部署阶段向集群中添加一个数据库资源,集群部署完成后,无法使用该命令。
Note:
安装部署YashanDB时,会内部调用执行添加数据库的操作,无需手动执行该命令。
命令格式及参数介绍如下:
ycsctl add database -db <db_unique_name> [-dbname <db_name>] [-startoption <start_options>]
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | db_unique_name | 为数据库资源指定当前集群中的唯一名称,由1 ~ 64个字符组成,支持字母、数字、下划线(_)、井号(#)或美元符号($)组成的。 |
| -dbname | db_name | 可选参数,指定数据库建库名称。省略时默认使用-db提供的唯一名称。 |
| -startoption | NOMOUNT、MOUNT或OPEN | 可选参数,指定数据库实例默认的启动阶段选项,省略时默认为OPEN。 在后续启动数据库实例时,若未单独指定启动选项,则直接复用此处指定的值作为默认值。 |
# ycsctl add instance
该命令用于在集群部署阶段向集群中添加数据库实例,集群部署完成后,无法使用该命令。
命令格式及参数介绍如下:
ycsctl add instance -db <db_unique_name> -node <nodename> -instance <instancename> -datahome <db_data_home>
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | db_unique_name | 指定待执行当前操作的目标数据库资源的唯一名称,必须是已存在的数据库资源。 可通过ycsctl show config命令查询当前集群的配置信息,其中Database unique name字段的值即为该名称。 |
| -node | nodename | 指定待执行当前操作的目标实例节点名称,必须是目标数据库资源中已存在的节点名称。 |
| -instance | instancename | 为新增的数据库实例指定名称,必须在目标数据库资源的中全局唯一。 |
| -datahome | db_data_home | 指定数据库的$YASDB_DATA目录,需指定绝对路径,例如/data/yashan/yasdb_data。 |
# ycsctl start instance
该命令用于启动当前服务器上的数据库实例。
执行此命令前,必须保证YCS已经启动。
在容器数据库集群中,系统将先启动根容器,然后根据各PDB的启动策略(由ycsctl add pdb命令的-policy参数指定)决定是否启动PDB。
命令格式及参数介绍如下:
ycsctl start instance [-startoption <startoption>] [-p <password>]
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -startoption -m | NOMOUNT、MOUNT或OPEN | 可选参数,指定数据库实例默认的启动阶段选项,省略时默认使用ycsctl add database命令指定的启动选项。 |
| -p | password | 可选参数,指定数据库实例进行密钥管理的钱包的密码。 当共享集群/分布式集群已有加密对象且需要直接启动数据库到MOUNT或OPEN模式时必须指定,否则数据库实例会启动失败。 |
Note:
请使用-startoption选项指定启动模式,-m选项已过时,保留仅用于兼容。
# ycsctl stop instance
该命令用于关闭当前服务器上的数据库实例。
命令格式如下:
ycsctl stop instance
# ycsctl modify instance
该命令用于离线修改YCS实例名称。
该操作的完整步骤大致如下:
- 停止集群。
- 启动yasfs服务。
- 执行本命令修改YCS实例名称。
- 停止yasfs服务。
- 启动集群。
命令格式及参数介绍如下:
ycsctl modify instance <nodename> -instancename <newname>
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| nodename | 指定待执行当前操作的目标实例节点名称,必须是目标数据库资源中已存在的节点名称。 | |
| -instancename | newname | 指定新的实例名称,必须在目标数据库资源的中全局唯一。 |
# ycsctl add pdb
该命令用于向容器数据库集群的YCS中添加PDB资源。
Note:
-offline通常作为YashanDB升级时yasboot工具调用的内部命令,非必要不建议用户手动执行。
命令格式及参数介绍如下:
ycsctl add pdb -db <db_unique_name> -pdb <pdb_name> [-policy <policy>] [-startoption <start_options>] [-offline]
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | db_unique_name | 指定待执行当前操作的目标数据库资源的唯一名称,必须是已存在的数据库资源。 可通过ycsctl show config命令查询当前集群的配置信息,其中Database unique name字段的值即为该名称。 |
| -pdb | pdb_name | 为新PDB指定全局唯一的名称,长度为1 ~ 64个字符,支持字母、数字或下划线(_),且必须以字母开头。 |
| -policy | AUTOMATIC或MANUAL | 可选参数,指定PDB的启动策略,即是否跟随根容器启动。 * AUTOMATIC: 默认值,PDB始终跟随根容器启动。 * MANUAL: PDB不跟随根容器启动,需手动启动PDB。 PDB的启动策略一经指定无法直接修改,只能先删除YCS中的PDB资源(ycsctl remove pdb命令)再新增(ycsctl add pdb命令)并指定新的启动策略。 |
| -startoption | NOMOUNT、MOUNT或OPEN | 可选参数,指定PDB默认的启动阶段选项,省略时默认为OPEN。 在后续启动PDB时,若未单独指定启动选项,则直接复用此处指定的值作为默认值。 |
| -offline | 可选参数,仅作为YashanDB升级时yasboot工具调用的内部命令,非必要不得手动指定执行。 |
在容器数据库集群中,通过ycsctl工具新增PDB的完整流程如下,在数据库运行时操作即可。
以安装用户登录任一数据库安装服务器,执行ycsctl add pdb命令向YCS添加PDB资源。
登录根容器,执行CREATE PLUGGABLE DATABASE语句新增PDB,且PDB名称需一致。
# ycsctl start pdb
该命令仅适用于容器数据库集群,用于在指定服务器上启动目标PDB的实例。
执行此命令前,必须保证数据库实例已经启动。
命令格式及参数介绍如下:
ycsctl start pdb -db <db_unique_name> -pdb <pdb_name> [-node <node_list>] [-startoption <startoption>] [-p <password>]
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | db_unique_name | 指定待执行当前操作的目标数据库资源的唯一名称,必须是已存在的数据库资源。 可通过ycsctl show config命令查询当前集群的配置信息,其中Database unique name字段的值即为该名称。 |
| -pdb | pdb_name | 指定待启动的PDB名称。 |
| -startoption -m | NOMOUNT、MOUNT或OPEN | 可选参数,指定PDB实例的启动阶段选项,省略时默认使用ycsctl add pdb命令指定的启动选项。 |
| -node | node_list | 可选参数,指定PDB启动后需运行于哪些数据库实例(即服务器)上,多个实例名称间使用逗号(,)隔开,省略则表示PDB将运行于所有实例。可通过ycsctl show config命令查询当前集群的配置信息,其中Node name字段值即为实例节点名称。 在共享集群/分布式集群部署中,每个PDB可以运行多个实例(即可在每台服务器上启动0 - 1个实例)并发读写同一份数据。在实际使用中,可基于服务器资源状况、部分PDB高可用需求等因素,综合考虑均衡负载每个PDB的实例分布。 |
| -p | password | 可选参数,指定数据库实例进行密钥管理的钱包的密码。 当共享集群/分布式集群已有加密对象且需要直接启动数据库到MOUNT或OPEN模式时必须指定,否则数据库实例会启动失败。 |
Note:
请使用-startoption选项指定启动模式,-m选项已过时,保留仅用于兼容。
示例
# 在host0001服务器上启动PDB1
$ ycsctl start pdb -db yashandb -pdb pdb1 -node host0001 -startoption open
# ycsctl stop pdb
该命令仅适用于容器数据库集群,用于关闭目标PDB在指定服务器上的实例。
执行此命令前,必须保证数据库实例已经启动。
命令格式及参数介绍如下:
ycsctl stop pdb -db <db_unique_name> -pdb <pdb_name> [-node <nodename>]
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | db_unique_name | 指定待执行当前操作的目标数据库资源的唯一名称,必须是已存在的数据库资源。 可通过ycsctl show config命令查询当前集群的配置信息,其中Database unique name字段的值即为该名称。 |
| -pdb | pdb_name | 指定待关闭的PDB名称。 |
| -node | nodename | 可选参数,指定关闭目标数据库实例(即服务器)上的PDB实例,多个实例节点名称间使用逗号(,)隔开,省略则表示关闭所有实例节点上的PDB实例。可通过ycsctl show config命令查询当前集群的配置信息,其中Node name字段值即为实例节点名称。 |
示例
# 关闭PDB1在所有节点上的实例
$ ycsctl stop pdb -db yashandb -pdb pdb1
# 关闭 host0001 节点上的PDB1实例
$ ycsctl stop pdb -db yashandb -pdb pdb1 -node host0001
# ycsctl status pdb
该命令用于查看目标PDB的信息。
命令格式及参数介绍如下:
ycsctl status pdb -db <dbname> -pdb <pdbname> [-v|-vertical]
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | dbname | 指定待执行当前操作的目标数据库资源的唯一名称,必须是已存在的数据库资源。 可通过ycsctl show config命令查询当前集群的配置信息,其中Database unique name字段的值即为该名称。 |
| -pdb | pdbname | 指定待查看的PDB名称。 |
| -v -vertical | 可选参数,表示以竖表方式显示拓扑状态。 |
示例
$ ycsctl status pdb -db yashandb -pdb pdb1
+-------------------+---------------------------------+---------------------------+-------------------------------------+
| Self Host ID | Cluster Master ID | YasFS Master ID | Active Host Count |
+-------------------+---------------------------------+---------------------------+-------------------------------------+
|1 |1 |1 |2 |
+-------------------+---------------------------------+---------------------------+-------------------------------------+
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
| Host ID | Target | YCS | YFS | VIP | DB_NAME | PDB_NAME | DB_STATE | IS_MASTER |
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
|1 |online |online |online | |yashandb |pdb1 |online |TRUE |
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
|2 |online |online |online | |yashandb |pdb1 |online |FALSE |
+---------+---------+---------+---------+-------------+--------------------+--------------------+-----------+-----------+
各项配置信息的介绍如下:
| 字段名 | 含义 |
|---|---|
| Self Host ID | 当前服务器ID。 |
| Cluster Master ID | YCS服务对应的主服务器ID。 |
| YasFS Master ID | YFS服务对应的主服务器ID。 |
| Active Host Count | 集群当前的活动服务器数。 |
| Host ID | 服务器ID。 |
| Target | 服务器启动时,表示数据库实例是否纳入YCS一起启动,根据参数AUTO_START而定,当AUTO_START=ALWAYS时,Target为online,当AUTO_START=NEVER时,Target为offline。 服务器停止时,恒为offline。 |
| YCS | YCS服务当前状态。 |
| YFS | YFS服务当前状态。 |
| VIP | 部署于此YCS节点的VIP资源的当前状态,格式为:<接管节点名.运行状态(IP地址:端口)>。 |
| DB_NAME | 数据库资源的名称。 |
| PDB_NAME | PDB的名称。 |
| DB_STATE | 数据库实例的当前状态。 |
| IS_MASTER | 是否为主库角色。 |
| SCAN VIP n | 当前YCS节点的SCAN VIP信息和运行状态,格式为:<SCAN VIP运行节点名.运行状态>。 |
# ycsctl modify pdb
该命令仅适用于容器数据库集群,用于修改PDB的启动和policy属性。
执行此命令前,必须保证数据库实例已经启动、目标PDB已关闭。
命令格式及参数介绍如下:
ycsctl modify pdb -db <db_unique_name> -pdb <pdb_name> [-policy <policy>] [-startoption <startoption>] [-offline]
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | db_unique_name | 指定待执行当前操作的目标数据库资源的唯一名称,必须是已存在的数据库资源。 可通过ycsctl show config命令查询当前集群的配置信息,其中Database unique name字段的值即为该名称。 |
| -pdb | pdb_name | 指定待修改的PDB名称。 |
| -policy | AUTOMATIC或MANUAL | 可选参数,指定PDB的管理策略。AUTOMATIC表示自动策略,MANUAL表示手动策略。 |
| -startoption | NOMOUNT、MOUNT或OPEN | 可选参数,指定PDB的启动选项。 |
| -offline | - | 可选参数,指定是否离线执行。 |
Note:
请使用-startoption选项指定启动模式,-m选项已过时,保留仅用于兼容。
示例
# 修改PDB1的policy为AUTOMATIC
$ ycsctl modify pdb -db yashandb -pdb pdb1 -policy AUTOMATIC
# 修改PDB1的启动选项为open
$ ycsctl modify pdb -db yashandb -pdb pdb1 -startoption open
# ycsctl remove pdb
该命令用于从容器数据库集群的YCS中删除PDB资源。
执行此命令前,必须保证YCS服务已经启动。
命令格式及参数介绍如下:
ycsctl remove pdb -db <db_unique_name> -pdb <pdb_name>
| 参数选项 | 取值 | 参数描述 |
|---|---|---|
| -db | db_unique_name | 指定待执行当前操作的目标数据库资源的唯一名称,必须是已存在的数据库资源。 可通过ycsctl show config命令查询当前集群的配置信息,其中Database unique name字段的值即为该名称。 |
| -pdb | pdb_name | 指定待移除的PDB资源名称,必须是目标数据库资源中已存在的PDB名称。 |
在容器数据库集群中,通过ycsctl工具删除PDB的流程如下:
停止目标PDB,例如使用ycsctl stop pdb命令、直连PDB执行SHUTDOWN语句等。
在根容器上执行DROP PLUGGABLE DATABASE语句删除目标PDB。
执行ycsctl remove pdb命令从YCS中删除目标PDB资源。

