KingbaseES V8R3集群运维案例之---用户自定义表空间管理

案例说明:
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目录下时,难免出现不必要的故障问题。

posted @ 2022-08-24 14:41  天涯客1224  阅读(60)  评论(0编辑  收藏  举报