GaussDB 100 OLTP: 为什么创建数据库需要 20G 空间,可以缩小吗?

举报
社会主义的一块砖 发表于 2019/12/19 15:05:26 2019/12/19
【摘要】 摘要:在 GaussDB 100 创建数据库时,首先会进行磁盘空间检查,如果低于 20G 就会抛出异常,所以很多朋友说 GaussDB 100 的最小空间使用是 20GB。这个限制其实可以修改。在 GaussDB 100 创建数据库时,首先会进行磁盘空间检查,如果低于 20G 就会抛出异常,所以很多朋友说 GaussDB 100 的最小空间使用是 20GB。通常空间不足的信息如下:[root...

摘要:在 GaussDB 100 创建数据库时,首先会进行磁盘空间检查,如果低于 20G 就会抛出异常,所以很多朋友说 GaussDB 100 的最小空间使用是 20GB。这个限制其实可以修改。



在 GaussDB 100 创建数据库时,首先会进行磁盘空间检查,如果低于 20G 就会抛出异常,所以很多朋友说 GaussDB 100 的最小空间使用是 20GB。
GaussDBT.jpg
通常空间不足的信息如下:

[root@enmodb1 GaussDB_100_1.0.0-DATABASE-REDHAT-64bit]# python install.py -U eygle:enmotech -R /gaussdb/1.0.0 -D /gaussdb/gaussdata -C LSNR_ADDR=127.0.0.1,192.168.1.132 -C LSNR_PORT=1888
Checking runner.
Checking parameters.
End check parameters.
Checking user.
End check user.
Checking old install.
End check old install.
Checking kernel parameters.
Checking directory.
Error: The sum of database program and data directories available size smaller than 20580M, current size is: 14457M

这个限制其实来自 install.py 脚本中的检查:

        vfs = os.statvfs(self.data)
       availableSize = vfs.f_bavail * vfs.f_bsize / (1024*1024)
       log("Database data directory available size: %sM" % str(availableSize))
       # check install path and data dir are in the same path or not
        if stdout_list[0] == stdout_list[1]:
            if(availableSize < 20580):
                logExit("The sum of database program and data directories available size smaller than 20580M, "
                        "current size is: %sM" % str(availableSize))
        else:
            if(availableSize < 20480):
                logExit("Database data directory available size smaller than 20480M, current size is: "
                        "%sM" % str(availableSize))

可以修改这个限制来减少空间需求。当然前提是降低数据库的创建空间需求。

在 GaussDB 100中,创建数据库调用的脚本是 create_database.sample.sql 。

通过这个脚本可以看到 GaussDB OLTP 数据库的创建过程和关键步骤。在 GaussDB 100中,缺省创建 3 个控制文件,6个 2G 大小的日志文件,用户表空间 5 个 1G 的数据文件。1 个 1G 的 SYSTEM 表空间文件,数据库缺省创建既运行在归档模式下:

create database gauss character set binary
CONTROLFILE
(’/opt/gaussdb/data/data/cntl1’,
‘/opt/gaussdb/data/data/cntl2’,
‘/opt/gaussdb/data/data/cntl3’)
LOGFILE
(’/opt/gaussdb/data/data/log1’ size 2G,
‘/opt/gaussdb/data/data/log2’ size 2G,
‘/opt/gaussdb/data/data/log3’ size 2G,
‘/opt/gaussdb/data/data/log4’ size 2G,
‘/opt/gaussdb/data/data/log5’ size 2G,
‘/opt/gaussdb/data/data/log6’ size 2G)
system tablespace DATAFILE
‘/opt/gaussdb/data/data/system’ size 1G
undo tablespace DATAFILE
‘/opt/gaussdb/data/data/undo’ size 1G
default tablespace DATAFILE
‘/opt/gaussdb/data/data/user1’ size 1G autoextend ON next 32M,
‘/opt/gaussdb/data/data/user2’ size 1G autoextend ON next 32M,
‘/opt/gaussdb/data/data/user3’ size 1G autoextend ON next 32M,
‘/opt/gaussdb/data/data/user4’ size 1G autoextend ON next 32M,
‘/opt/gaussdb/data/data/user5’ size 1G autoextend ON next 32M
temporary tablespace TEMPFILE
‘/opt/gaussdb/data/data/temp1_01’ size 160M autoextend ON next 32M,
‘/opt/gaussdb/data/data/temp1_02’ size 160M autoextend ON next 32M nologging
tablespace TEMPFILE
‘/opt/gaussdb/data/data/temp2_01’ size 160M autoextend ON next 32M,
‘/opt/gaussdb/data/data/temp2_02’ size 160M autoextend ON next 32M nologging
undo tablespace TEMPFILE
‘/opt/gaussdb/data/data/temp2_undo’ size 1G
ARCHIVELOG;

我们如果不是大规模测试,可以将 LOG 日志的大小改为 256M ,这样能够节约大约 10G 的存储空间。

修改了创建数据库的脚本,再修改 install.py 将 20580 和 20480 修改为 10580 和 10480 ,就能够剩下创建空间。

在创建数据库时,可以通过 -f 参数调用自定义的创建数据库脚本,即可解决。类似如下:

python install.py -U eygle:enmotech -R /gaussdb/1.0.0 -D /gaussdb/gaussdata -C LSNR_ADDR=127.0.0.1,192.168.1.132 -C LSNR_PORT=1888 -f /gaussdb/create_database.sample.sql

注意 LOG 日志的大小和 Log Buffer 设置有关,过低会出现如下错误,我这里将日志设置为 256M 大小:

GS-00714, Log file size should be larger than log keep size 125845504


注:本文转自“墨天轮”GaussDB频道

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。