当使用GBase 8s的GBaseInit_gbasedbt.sh脚本创建数据库实例时,有一些参数无法指定,只能用于学习。真正的生产需要根据服务器的配置,规划并创建适合业务场景的数据库空间,以进行存储优化。
下面通过演示,介绍如何进行数据库的空间管理。
数据库空间是一个逻辑概念,有多个称为Chunk的物理文件组成,用于存储表或索引的数据。
不同的数据库空间可以使用不同的页大小,以便于进行存储性能优化。
可以使用onstat -d信息,列出数据库实例的当前各个数据库空间信息。
[gbasedbt@devsvr ~]$ onstat -d
Your evaluation license will expire on 2022-09-15 00:00:00
On-Line -- Up 03:34:00 -- 597864 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
46feb028 1 0x70001 1 1 2048 N BA gbasedbt rootdbs
484c8110 2 0x60001 2 1 2048 N BA gbasedbt llogdbs
484c8340 3 0x70001 3 1 2048 N BA gbasedbt plogdbs
484c8570 4 0x68001 4 1 2048 N SBA gbasedbt sbspace1
484c87a0 5 0x42001 5 1 16384 N TBA gbasedbt tmpdbs1
484c89d0 6 0x42001 6 1 16384 N TBA gbasedbt tmpdbs2
484c8c00 7 0x42001 7 1 16384 N TBA gbasedbt tmpdbs3
484ca028 8 0x60001 8 1 16384 N BA gbasedbt datadbs1
484ca258 9 0x60001 9 1 16384 N BA gbasedbt datadbs2
484ca488 10 0x60001 10 1 16384 N BA gbasedbt datadbs3
484ca6b8 11 0x60001 11 1 16384 N BA gbasedbt datadbs4
484ca8e8 12 0x60001 12 1 16384 N BA gbasedbt datadbs5
12 active, 2047 maximum
Chunks
address chunk/dbs offset size free bpages flags pathname
46feb258 1 1 0 102400 91514 PO-B-D /opt/gbase/gbaseserver_dbs/rootdbs
484cb028 2 2 0 102400 2347 PO-B-D /opt/gbase/gbaseserver_dbs/llogdbs
484cc028 3 3 0 102400 2947 PO-B-D /opt/gbase/gbaseserver_dbs/plogdbs
484cd028 4 4 0 51200 47678 47678 POSB-D /opt/gbase/gbaseserver_dbs/sbspace1
Metadata 3469 2581 3469
484ce028 5 5 0 12800 12747 PO-B-- /opt/gbase/gbaseserver_dbs/tmpdbs1
484d4028 6 6 0 12800 12747 PO-B-- /opt/gbase/gbaseserver_dbs/tmpdbs2
484d5028 7 7 0 12800 12747 PO-B-- /opt/gbase/gbaseserver_dbs/tmpdbs3
484d6028 8 8 0 6400 5817 PO-BED /opt/gbase/gbaseserver_dbs/datadbs1_1
484d7028 9 9 0 6400 6347 PO-BED /opt/gbase/gbaseserver_dbs/datadbs2_1
484d8028 10 10 0 6400 6347 PO-BED /opt/gbase/gbaseserver_dbs/datadbs3_1
484d9028 11 11 0 6400 6347 PO-BED /opt/gbase/gbaseserver_dbs/datadbs4_1
484da028 12 12 0 6400 6347 PO-BED /opt/gbase/gbaseserver_dbs/datadbs5_1
12 active, 32766 maximum
NOTE: The values in the "size" and "free" columns for DBspace chunks are
displayed in terms of "pgsize" of the DBspace to which they belong.
Expanded chunk capacity mode: always
[gbasedbt@devsvr ~]$
解析:
通过上面的命令输出结果,我们可以得知数据库空间信息的保存路径为/opt/gbase/gbaseserver_dbs,该路径下有12个文件,分析对应12个数据库空间。
目前的数据库空间比较简单,这个实例一共创建了12个数据库空间,共有12个Chunk文件,每个数据库空间有一个Chunk文件。Chunk输出信息中有size信息,这个信息是Chunk的页的数据,不是文件的字节大小。要得到Chunk的文件字节大小,需要用这个size乘以Chunk文件对应的数据库空间的pgsize。
如datadbs1_1文件的size是6400,它对应的dbs号码为8,Dbspaces信息中number为8的数据库空间大小为16384,所以这个文件的操作系统中的大小为6400 * 16384 = 104857600
当前GBase 8s 数据库实例将文件保存在/opt/gbase/gbaseserver_dbs中,可以通过ll命令查看操作系统中文件的大小(字节大小)。
[gbasedbt@devsvr ~]$ ll /opt/gbase/gbaseserver_dbs/
total 1843200
-rw-rw----. 1 gbasedbt gbasedbt 104857600 Sep 15 08:06 datadbs1_1
-rw-rw----. 1 gbasedbt gbasedbt 104857600 Sep 15 08:03 datadbs2_1
-rw-rw----. 1 gbasedbt gbasedbt 104857600 Sep 15 08:03 datadbs3_1
-rw-rw----. 1 gbasedbt gbasedbt 104857600 Sep 15 08:03 datadbs4_1
-rw-rw----. 1 gbasedbt gbasedbt 104857600 Sep 15 08:03 datadbs5_1
-rw-rw----. 1 gbasedbt gbasedbt 209715200 Sep 15 11:50 llogdbs
-rw-rw----. 1 gbasedbt gbasedbt 209715200 Sep 15 11:50 plogdbs
-rw-rw----. 1 gbasedbt gbasedbt 209715200 Sep 15 11:50 rootdbs
-rw-rw----. 1 gbasedbt gbasedbt 104857600 Sep 15 08:03 sbspace1
-rw-rw----. 1 gbasedbt gbasedbt 209715200 Sep 15 08:03 tmpdbs1
-rw-rw----. 1 gbasedbt gbasedbt 209715200 Sep 15 08:03 tmpdbs2
-rw-rw----. 1 gbasedbt gbasedbt 209715200 Sep 15 08:03 tmpdbs3
[gbasedbt@devsvr ~]$
GBase 8s推荐将服务器的多个磁盘,根据业务特征,分为多个逻辑磁盘,并进行不同类型的业务数据存储。
我们下面假设将dw业务的数据,保存在挂载到/home/gbasedbt/data_dw位置的磁盘上。
[gbasedbt@devsvr ~]$ pwd
/home/gbasedbt
[gbasedbt@devsvr ~]$ mkdir data_dw
将实际的磁盘,挂载到/home/gbasedbt/data_dw目录,将来的数据就可以保存在我们期望的磁盘设备上。
关于磁盘的操作,请参考网上相关说明。我们这里只创建一个目录,进行演示,这样的处理不影响我们的演示结果。
要创建实际的Chunk,我们需要先创建一个空文件,并设置好相应的权限。
[gbasedbt@devsvr ~]$ cd data_dw/
[gbasedbt@devsvr data_dw]$ touch datadbs_dw1
[gbasedbt@devsvr data_dw]$ touch datadbs_dw2
[gbasedbt@devsvr data_dw]$ ll
total 0
-rw-rw-r--. 1 gbasedbt gbasedbt 0 Sep 15 12:08 datadbs_dw1
-rw-rw-r--. 1 gbasedbt gbasedbt 0 Sep 15 12:08 datadbs_dw2
[gbasedbt@devsvr data_dw]$ chmod 660 datadbs_dw*
[gbasedbt@devsvr data_dw]$ ll
total 0
-rw-rw----. 1 gbasedbt gbasedbt 0 Sep 15 12:08 datadbs_dw1
-rw-rw----. 1 gbasedbt gbasedbt 0 Sep 15 12:08 datadbs_dw2
[gbasedbt@devsvr data_dw]$
使用onspaces命令,创建我们需要的数据库空间。
onspaces -c -d -k (kb)> -p -o -s (kb)>
[gbasedbt@devsvr data_dw]$ onspaces -c -d datadbs_dw -k 8 -p /home/gbasedbt/data_dw/datadbs_dw1 -o 0 -s 51200
Your evaluation license will expire on 2022-09-15 00:00:00
Verifying physical disk space, please wait ...
Space successfully added.
** WARNING ** A level 0 archive of Root DBSpace will need to be done.
[gbasedbt@devsvr data_dw]$
检查目录中的文件信息。
[gbasedbt@devsvr data_dw]$ pwd
/home/gbasedbt/data_dw
[gbasedbt@devsvr data_dw]$ ll
total 63744
-rw-rw----. 1 gbasedbt gbasedbt 52428800 Sep 15 12:51 datadbs_dw1
-rw-rw----. 1 gbasedbt gbasedbt 0 Sep 15 12:08 datadbs_dw2
[gbasedbt@devsvr data_dw]$
查看当前数据库空间信息。
[gbasedbt@devsvr data_dw]$ onstat -d
Your evaluation license will expire on 2022-09-15 00:00:00
On-Line -- Up 04:49:18 -- 680324 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
46feb028 1 0x70001 1 1 2048 N BA gbasedbt rootdbs
......
484ca8e8 12 0x60001 12 1 16384 N BA gbasedbt datadbs5
496e6028 13 0x60001 13 1 8192 N BA gbasedbt datadbs_dw
13 active, 2047 maximum
Chunks
address chunk/dbs offset size free bpages flags pathname
46feb258 1 1 0 102400 91512 PO-B-D /opt/gbase/gbaseserver_dbs/rootdbs
......
484da028 12 12 0 6400 6347 PO-BED /opt/gbase/gbaseserver_dbs/datadbs5_1
496e6258 13 13 0 6400 6347 PO-B-D /home/gbasedbt/data_dw/datadbs_dw1
13 active, 32766 maximum
NOTE: The values in the "size" and "free" columns for DBspace chunks are
displayed in terms of "pgsize" of the DBspace to which they belong.
Expanded chunk capacity mode: always
[gbasedbt@devsvr data_dw]$
在Dbspaces部分最后,新增了一个name为datadbs_dw的记录,即我们新增加的数据库空间。在Chunks部分最后,新增加了一行数据,路径为我们在创建时指定的路径。
onspaces -a -p -o -s (kb)>
[gbasedbt@devsvr data_dw]$ onspaces -a datadbs_dw -p /home/gbasedbt/data_dw/datadbs_dw2 -o 0 -s 102400
Your evaluation license will expire on 2022-09-15 00:00:00
Verifying physical disk space, please wait ...
Chunk successfully added.
[gbasedbt@devsvr data_dw]$
查看文件信息。
[gbasedbt@devsvr data_dw]$ ll
total 153600
-rw-rw----. 1 gbasedbt gbasedbt 52428800 Sep 15 12:51 datadbs_dw1
-rw-rw----. 1 gbasedbt gbasedbt 104857600 Sep 15 12:59 datadbs_dw2
[gbasedbt@devsvr data_dw]$
查看当前数据库的数据库空间信息。
[gbasedbt@devsvr data_dw]$ onstat -d
Your evaluation license will expire on 2022-09-15 00:00:00
On-Line -- Up 04:56:26 -- 680324 Kbytes
Dbspaces
address number flags fchunk nchunks pgsize flags owner name
46feb028 1 0x70001 1 1 2048 N BA gbasedbt rootdbs
......
496e6028 13 0x60001 13 2 8192 N BA gbasedbt datadbs_dw
13 active, 2047 maximum
Chunks
address chunk/dbs offset size free bpages flags pathname
46feb258 1 1 0 102400 91512 PO-B-D /opt/gbase/gbaseserver_dbs/rootdbs
......
484da028 12 12 0 6400 6347 PO-BED /opt/gbase/gbaseserver_dbs/datadbs5_1
496e6258 13 13 0 6400 6347 PO-B-D /home/gbasedbt/data_dw/datadbs_dw1
4962d028 14 13 0 12800 12797 PO-B-D /home/gbasedbt/data_dw/datadbs_dw2
14 active, 32766 maximum
NOTE: The values in the "size" and "free" columns for DBspace chunks are
displayed in terms of "pgsize" of the DBspace to which they belong.
Expanded chunk capacity mode: always
[gbasedbt@devsvr data_dw]$
在Chunks部分的最后两行,为新创建的数据库空间对应的两个Chunk文件。