openGauss

开源数据库

openGauss社区官网

开源社区

【我和openGauss的故事】在Docker环境下测试openGauss的MOT特性

zhangsir2022-10-18openGauss技术文章征集

前言:

随着 pg 在国内越来越热,我也想赶紧的学习学习,pg 的挺多语法跟 mysql 和 oracle 不太一样,光看书还是不太行,还是得多动手。前面实践了下 mogdb,这次借着机会学习学习 openGauss。 本次实践的是 opengauss 的 MOT 表,我们都知道现在数据库的瓶颈都在 IO 上,内存操作的速度是极快的,MOT 特性就是建立在内存中的存储引擎。根据官档介绍 MOT 是 openGauss 数据库最先进的生产级特性,看起来好处多多啊,这次主要是尝尝鲜。这次实践是基于 docker 的,之前对 docker 不太感冒,每次做个实验都要弄一套不同版本的数据库环境,太费事了,自从用了 docker 以后,感觉不要太爽,不用再在自己电脑上弄一个个虚拟机了,直接装个 docker 环境,撸镜像得了。

一、利用 docker 拉起 openGuass

  • 1、配置好 docker 环境,这里就不再细讲了,网上都有保姆教程。

  • 2、恩墨制作了 opengauss 3.0 的镜像,直接从网上拉镜像就可以。

  • 3、确认镜像已经拉下来,总共 480M,不大也不小。

  • 4、启动镜像,指定下密码就行,如果密码太简单会报错。 docker run --name myopengauss --privileged=true -d -e GS_PASSWORD=Gauss@123 enmotech/opengauss:3.0.0

二、测试 MOT 表

  • 1、新建一个普通用户 test

  • 2、创建 MOT,在创建表的时候加关键词 foreign。

在创建的时候可能会报,无法创建,这是因为如果 postgresql.conf 中开启了增量检查点,则无法创建 MOT。因此请在创建 MOT 前将 enable_incremental_checkpoint 设置为 off。

解决方案如下:

  • a.找到镜像的 postgresql.conf 配置文件

  • b.修改 enable_incremental_checkpoint=off

  • c.基于现有镜像生成新镜像

  • d.启动新镜像

三、测试将磁盘表转换成 MOT 表

根据官方手册的说法,目前还不能一键实现磁盘表到 MOT 表的转换,需要利用导入导出的方法。转换步骤如下:

  • a、停应用,做的时候不能有写入。

  • b、利用 gs_dump 导出数据,必须使用 data only

  • c、重命名原表

  • d、新建 mot 表,与原表同名。

  • e、使用 gs_restore 导入数据

  • f、恢复应用。

  • 1、新建普通测试表,确认相关字段 MOT 都能支持。

  • 2、导出表数据

  • 3、重命名原表

  • 4、新建同名 MOT 表

  • 5、导入数据

  • 6、确认数据