YashanDB 用户表空间管理
关于表空间管理的详细语法描述请参考开发手册CREATE TABLESPACE、ALTER TABLESPACE、DROP TABLESPACE。
创建表空间
数据库管理员在接收到一个创建表空间的申请时,需要从以下方面进行考量:
表空间所服务的业务属性:
HEAP 表和 TAC 表采取段页式结构,挂载普通数据文件
LSC 表的稳态数据采取对象结构,需挂载数据桶
对敏感数据或核心数据可定义为加密表空间
对极高性能要求的表空间可定义为 MMS 表空间,同时配置 MMS_DATA_LOADERS 参数确定预加载策略
表空间的存储属性:
确定数据文件初始值、扩展值和最大值,默认由系统自动决定
确定 extent 大小,默认由系统自动决定
对于 MMS 表空间,确定是否启用大页内存,启用大页内存的前提是操作系统配置大页内存
表空间运维
offline 与 online
当某个表空间不再使用,或者不想被访问到时,可将其进行脱机:
通过 online 操作可以恢复被脱机的表空间:
增删数据文件
表空间可挂载的数据文件数量和数据桶数量存在规格约束(YashanDB 为 64),管理员需关注该限制,避免达到上限(达到上限后将无法增加数据文件,且无法通过删除数据文件的方式释放数量)。当已达到上限仍需增加数据文件或数据桶时,通过创建新的表空间来解决。
增加数据桶时还需考虑 BUCKET_RESERVED_SPACE 参数,该参数用于控制数据桶占用所在磁盘的空间上限。
空闲空间回收
对单机部署和分布式部署中的表空间进行收缩,可以回收其空闲空间,供其他表空间使用。
示例(单机、分布式部署)
分布式表空间故障恢复
分布式部署中执行表空间 DDL 时出现节点故障,YashanDB 提供自动恢复功能。
Datafile,Bucketfile 文件目录:
Datafile 文件默认目录:
${YASDB_DATA}/节点名/dbfiles/
Bucketfile 文件默认目录:
${YASDB_DATA}/节点名/local_fs/
如果指定了目录路径,文件目录:
${YASDB_DATA}/节点名/指定目录/
CREATE TABLESPACE
创建表空间时出现节点故障,具体情况和解决方案如下所示:
仅在 MN 节点(group_id 为 1)有 Tablespace 和 Datafile 或 Databucket 记录,DV$PUB_STAT 视图没有异常 Tablespace 相关 DDL 记录,发现仅有 MN 节点出现故障:
1.需重启 MN 节点并手动在 CN 节点上执行如下语句:
2.查询DV$TABLESPACE
,DV$DATAFILE
和 DV$DATABUCKET
视图,确认没有对应的 Tablespace。
3.查询 MN 节点下的 Datafile 和 Databucket 文件夹,确认没有对应的 Tablespace 文件残留,若有则需手动清除该文件夹。
4.重启后,再次执行 CREATE TABLESPACE
命令即可。
MN 节点,部分 CN/DN 节点有 Tablespace 和 Datafile 或 Databucket 记录,MN 节点中 DV$PUB_STAT 视图有异常 Tablespace 相关 DDL 推送记录,发现有部分 CN/DN 节点出现故障:
1.重启故障节点,等待片刻后于 MN 节点中查询 DV$PUB_STAT 视图,如没有发现异常 Tablespace 相关的 DDL 记录,则表示恢复成功;如仍查询到异常 DDL 记录,可通过 ERR_MSG 字段查看失败原因:若显示 DN 资源不足,则需要重新合理分配资源。
所有节点都没有 Tablespace 和 Datafile 或 Databucket 记录,MN 节点中 DV$PUB_STAT 视图没有异常 Tablespace 相关 DDL 记录,发现仅有 MN 节点出现故障:
1.重启 MN 节点,再次执行 CREATE TABLESPACE
命令即可。
DROP TABLESPACE
删除表空间时出现节点故障,具体情况和解决方案如下所示:
MN 节点有 Tablespace 和 Datafile 或 Databucket 记录,仅有 MN 节点出现故障:
1.重启 MN 节点,并手动在 CN 节点上执行如下语句:
MN 节点不存在 Tablespace,CN/DN 节点有 Tablespace 和 Datafile 或 Databucket 记录,部分 CN/DN 节点出现故障:
1.重启故障节点即可恢复。
ALTER TABLESPACE ADD(DATAFILE|TEMPFILE)
修改表空间数据文件时出现节点故障,具体情况和解决方案如下所示:
仅在 MN 节点(group_id 为 1)有 Tablespace 和 Datafile 或 Databucket 记录,DV$PUB_STAT 视图没有异常 Tablespace 相关 DDL 记录,发现仅有 MN 节点出现故障:
1.需重启 MN 节点并手动在 CN 节点上执行如下语句:
2.查询DV$TABLESPACE
,DV$DATAFILE
和 DV$DATABUCKET
视图,确认没有对应的 Tablespace。
3.查询 MN 节点下的 Datafile 和 Databucket 文件夹,确认没有对应的 Tablespace 文件残留,若有则需手动清除该文件夹。
4.重启后,再次执行 ALTER TABLESPACE ADD(DATAFILE|TEMPFILE)
命令即可。
MN 节点,部分 CN/DN 节点有 Tablespace 和 Datafile 或 Databucket 记录,MN 节点中 DV$PUB_STAT 视图有异常 Tablespace 相关 DDL 推送记录,发现有部分 CN/DN 节点出现故障:
1.重启故障节点,等待片刻后于 MN 节点中查询 DV$PUB_STAT 视图,如没有发现异常 Tablespace 相关的 DDL 记录,则表示恢复成功;如仍查询到异常 DDL 记录,可通过 ERR_MSG 字段查看失败原因:若显示 DN 资源不足,则需要重新合理分配资源。
所有节点都没有 Tablespace 和 Datafile 或 Databucket 记录,MN 节点中 DV$PUB_STAT 视图没有异常 Tablespace 相关 DDL 记录,发现仅有 MN 节点出现故障:
1.重启 MN 节点,再次执行 ALTER TABLESPACE ADD(DATAFILE|TEMPFILE)
命令即可。
版权声明: 本文为 InfoQ 作者【YashanDB】的原创文章。
原文链接:【http://xie.infoq.cn/article/3ce89459cbe00a2d1147a0cfc】。文章转载请联系作者。
评论