案例说明:

KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外。本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问题。

适用版本:

KingbaseES V8R3

Tips:

本次案例复现采用的是Kingbase V008R003C002B0290 版本,根据实施人员在现场反馈KingbaseES 8.7.3.160D的版本出现的故障信息不一致。

集群节点信息:

一、创建用户自定义表空间

1、主备库创建表空间存储目录

[kingbase@node102 bin]$ mkdir -p /home/kingbase/cluster/R3HA/db/data/base

Tips:

/home/kingbase/cluster/R3HA/db/data/为集群数据库的存储路径。

2、在主库创建表空间

PROD=# create tablespace system owner system
location '/home/kingbase/cluster/R3HA/db/data/base';
WARNING: tablespace location should not be inside the data directory
CREATE TABLESPACE

=如下所示,将表空间的存储配置到data下,创建表空间系统发出了警告,但是表空间仍可以创建。=

3、查看表空间信息

PROD=# \db+
List of tablespaces
Name | Owner | Location | Access privileges | Options | Size | Description
-------------+--------+------------------------------------------+-------------------+---------+----------+-------------
SYSTEM | SYSTEM | /home/kingbase/cluster/R3HA/db/data/base | | | 0 bytes |
SYS_DEFAULT | SYSTEM | | SYSTEM=C/SYSTEM +| | 104 MB |
| | | =C/SYSTEM | | |
SYS_GLOBAL | SYSTEM | | | | 568 kB |
USERS | SYSTEM | /data/kingbase/tbs/user | | | 18 bytes |
(4 rows) PROD=# select oid ,* from sys_tablespace;
OID | SPCNAME | SPCOWNER | SPCSIZE | SPCACL | SPCOPTIONS
-------+-------------+----------+---------+-----------------------------+------------
1664 | SYS_GLOBAL | 10 | 0 | |
1663 | SYS_DEFAULT | 10 | 0 | {SYSTEM=C/SYSTEM,=C/SYSTEM} |
28340 | USERS | 10 | 0 | |
28552 | SYSTEM | 10 | 0 | |
(4 rows)

4、查看表空间存储信息

# 在data/sys_tblspc目录下建立表空间存储的链接
[kingbase@node102 sys_tblspc]$ ls -lh
total 0
lrwxrwxrwx 1 kingbase kingbase 23 Aug 23 18:59 28340 -> /data/kingbase/tbs/user
lrwxrwxrwx 1 kingbase kingbase 40 Aug 23 19:34 28552 -> /home/kingbase/cluster/R3HA/db/data/base [kingbase@node102 sys_tblspc]$ cd 28552/ # 表空间的实际存储位置(data/base目录下)
[kingbase@node102 28552]$ ls -lh
total 148K
drwx------ 2 kingbase kingbase 8.0K Aug 23 18:54 1
drwx------ 2 kingbase kingbase 8.0K Jun 22 14:09 14927
drwx------ 2 kingbase kingbase 8.0K Aug 23 19:34 14928
drwx------ 2 kingbase kingbase 8.0K Aug 23 19:30 14929
drwx------ 2 kingbase kingbase 12K Aug 23 18:54 14930
drwx------ 2 kingbase kingbase 8.0K Aug 23 18:54 15371
drwx------ 2 kingbase kingbase 8.0K Aug 23 18:54 16398
drwx------ 2 kingbase kingbase 8.0K Aug 23 18:54 16425
drwx------ 2 kingbase kingbase 6 Aug 23 19:34 SYS_V008R003_201608131

二、通过sys_basebackup克隆新的备库

# 执行sys_basebackup克隆新的备库
[kingbase@node101 bin]$ ./sys_basebackup -h 192.168.1.102 -U SYSTEM -W 123456 -Fp -x -P -v
-T /home/kingbase/cluster/R3HA/db/data/base=/data/kingbase/tbs/system
-D /home/kingbase/cluster/R3HA/db/data transaction log start point: 0/4E000028 on timeline 12
17293/17293 kB (100%), 3/3 tablespaces
transaction log end point: 0/4E0000F8
sys_basebackup: base backup completed # 查看备库data/base下文件(文件为空)
[kingbase@node101 bin]$ ls -lh ../data/base
total 0 # 备库表空间存储文件
[kingbase@node101 bin]$ ls -lh /data/kingbase/tbs/system
total 0
drwx------ 3 kingbase kingbase 18 Aug 24 10:31 SYS_V008R003_201608131

Tips:

经测试,只有在主库删除system(用户自定义)表空间后,通过sys_basebackup克隆备库才正常。

三、生产环境的处理

=对于生产环境,不能直接将表空间删除,但是可以通过迁移方式,将表空间的存储路径迁移到data之外,保证系统的稳定性。=

四、总结

在KingbaseES上使用用户自定义的表空间,应该将表空间的存储配置到数据库的data目录之外,尤其是集群环境,在执行集群的切换、节点恢复及物理备份时,如果将自定义表空间存储配置到数据库data目录下时,难免出现不必要的故障问题。

KingbaseES V8R3集群运维案例之---用户自定义表空间管理的更多相关文章

  1. KingbaseES V8R3集群运维案例之---主库系统down failover切换过程分析

    ​ 案例说明: KingbaseES V8R3集群failover时两个cluster都会触发,但只有一个cluster会调用脚本去执行真正的切换流程,另一个有对应的打印,但不会调用脚本,只是走相关的 ...

  2. KingbaseES V8R3集群管理维护案例之---集群迁移单实例架构

    案例说明: 在生产中,需要将KingbaseES V8R3集群转换为单实例架构,可以采用以下方式快速完成集群架构的迁移. 适用版本: KingbaseES V8R3 当前数据库版本: TEST=# s ...

  3. KingbaseES V8R3集群管理和维护案例之---failover切换wal日志变化分析

    ​ 案例说明: 本案例通过对KingbaseES V8R3集群failover切换过程进行观察,分析了主备库切换后wal日志的变化,对应用者了解KingbaseES V8R3(R6) failover ...

  4. KingbaseES V8R3集群维护案例之---在线添加备库管理节点

    案例说明: 在KingbaseES V8R3主备流复制的集群中 ,一般有两个节点是集群的管理节点,分为master和standby:如对于一主二备的架构,其中有两个节点是管理节点,三个数据节点:管理节 ...

  5. PB 级大规模 Elasticsearch 集群运维与调优实践

    PB 级大规模 Elasticsearch 集群运维与调优实践 https://mp.weixin.qq.com/s/PDyHT9IuRij20JBgbPTjFA | 导语 腾讯云 Elasticse ...

  6. 集群运维ansible

    ssh免密登录 集群运维 生成秘钥,一路enter cd ~/.ssh/ ssh-keygen -t rsa 讲id_rsa.pub文件追加到授权的key文件中 cat ~/.ssh/id_rsa.p ...

  7. 阿里巴巴大规模神龙裸金属 Kubernetes 集群运维实践

    作者 | 姚捷(喽哥)阿里云容器平台集群管理高级技术专家 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击即可完成下载. 导读:值得阿里巴巴技术人骄傲的是 2019 ...

  8. kingbaseES V8R6集群备份恢复案例之---备库作为repo主机执行物理备份

    ​ 案例说明: 此案例是在KingbaseES V8R6集群环境下,当主库磁盘空间不足时,执行sys_rman备份,将集群的备库节点作为repo主机,执行备份,并将备份存储在备库的磁盘空间. 集群架构 ...

  9. KingbaseES V8R6集群外部备份案例

    案例说明: 本案例采用sys_backup.sh执行物理备份,备份使用如下逻辑架构:集群采用CentOS 7系统,repo采用kylin V10 Server. 一主一备+外部备份 此场景为主备双机常 ...

随机推荐

  1. 使用AndroidKiller进行APK反编译

    安装环境 JDK 最好用JDK8,问就是坑太多了 Android Studio 官网安装即可,安装教程如下 https://www.runoob.com/android/android-studio- ...

  2. JavaScript中async和await的使用以及队列问题

    宏任务和微任务的队列入门知识,可以参考之前的文章: JavaScript的事件循环机制 宏任务和微任务在前端面试中,被经常提及到,包括口头和笔试题 async && await概念 a ...

  3. Linux的文件路径和访问文件相关命令

    Linux的绝对和相对路径 绝地路径 绝对路径:以根作为起来的路径 相对路径 相对路径:以当前位置作为起点 文件操作命令 显示当前工作目录: pwd命令 pwd:显示文件所在的路径 基名:basena ...

  4. application.yml 常用基本配置

    前言 在平时的项目开发中,自己对application.yml的配置的写法较为熟悉,现在自己就application.yml常用的配置进行总结如下: 1.Tomcat 配置 server: #设置请求 ...

  5. 你真的会python中的for循环吗

    for 循环是 Python 中的通用序列迭代器:它可以单步遍历任何有序序列中的元素.for 语句适用于字符串.列表.元组.其他内置可迭代对象和类创建的新对象. for 通常比 while 循环更容易 ...

  6. 【.NET+MQTT】.NET6 环境下实现MQTT通信,以及服务端、客户端的双边消息订阅与发布的代码演示

    前言: MQTT广泛应用于工业物联网.智能家居.各类智能制造或各类自动化场景等.MQTT是一个基于客户端-服务器的消息发布/订阅传输协议,在很多受限的环境下,比如说机器与机器通信.机器与物联网通信等. ...

  7. 记一次重复造轮子(Obsidian 插件设置说明汉化)

    杂谈 #Java脚本 因本人英语不好在使用Obsidian时,一些插件的设置英文多令人头痛.故有写一个的翻译插件介绍和设置脚本的想法.看到有些前人写的一下翻译方法,简直惨目忍睹.竟然要手动.这个应该写 ...

  8. Collection子接口:Set接口

    1.Set 存储的数据特点:无序的.不可重复的元素具体的:以HashSet为例说明: 1. 无序性:不等于随机性.存储的数据在底层数组中并非照数组索引的顺序添加,而是根据数据的哈希值决定的. 2. 不 ...

  9. 聊聊 C++ 大一统的初始化运算符 {}

    一:背景 最近发现 C++ 中的类型初始化操作,没有 {} 运算符搞不定的,蛮有意思,今天我们就来逐一列一下各自的用法以及汇编展现,本来想分为 值类型 和 引用类型 两大块,但发现在 C++ 中没这种 ...

  10. Go死锁——当Channel遇上Mutex时

    背景 用metux lock for循环,在for循环中又 向带缓冲的Channel 写数据时,千万要小心死锁! 最近,我在测试ws长链接网关,平均一个星期会遇到一次服务假死问题,因为并不是所有rou ...