最近有个项目需要用到openGauss数据库,之前一直没使用过,发现只能在CentOS部署,然而我的云服务器装的是Debian,不过有万能的Docker在,一切都不是问题

云服务器/虚拟机

首先需要有一台云服务器,或者使用虚拟机,但虚拟机的话只能本地使用,不太适合多地操作,还是建议用云服务器。

本文章就是基于雨云-新一代云服务提供商操作的,挑选一台NAT网络的服务器即可,便宜好用,而且支持试用

  1. 进入雨云官网,登陆注册,点击云产品➡️立即购买

    image-20241028165018296

  2. 选择江苏宿迁➡️NAT模式

    image-20241028151250768

  3. 可以先试用,试用后可直接续费

安装Docker

切换到root用户按顺序执行命令即可

提示:操作过程中可能出现以下选项,默认会选择第二个,请手动选择第一个并回车

image-20241028142829387

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 更新
apt-get update

# 升级
apt-get upgrade

# 安装必要工具
sudo apt-get install \
apt-transport-https \
software-properties-common \
ca-certificates \
curl \
gnupg \
lsb-release

# 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | apt-key add -

# 安装GPG证书
add-apt-repository "deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -cs) stable"

# 更新并安装Docker
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 开机自启
systemctl enable docker

# 启动Docker
systemctl start docker

# 测试——查看docker版本
docker version
# 输出以下内容

image-20241028144047092

配置加速镜像源

1
vim /etc/docker/daemon.json

文件内填入以下内容:

1
2
3
{
"registry-mirrors": ["https://docker.nastool.de"]
}

重载配置

1
systemctl daemon-reload

重启docker

1
systemctl restart docker

安装OpenGauss

这里尝试了很多次,网上的镜像源加速地址基本都拉取不下来opengauss的镜像,enmotech/opengauss、blueapple/opengauss、travelliu/opengauss和aff123/opengauss都无法成功拉取。最后终于找到了https://docker.aityp.com/,里面有5.0.2版本的镜像

  1. 拉取镜像

    1
    docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/enmotech/opengauss:5.0.2
  2. 创建容器

    1
    docker run --name opengauss --privileged=true -d -e GS_PASSWORD=password@123 -p 5566:5432 swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/enmotech/opengauss:5.0.2
  3. 查看容器

    1
    docker ps

    image-20241028144022546

  4. 进入容器查看,如下即为成功

    1
    docker exec -it opengauss sh
    1
    su - omm
    1
    gsql

    image-20241028144308794

Navicat远程连接opengauss

opengauss基于postgresql,所以选择postgresql连接即可

不过连接前先到雨云控制台配置端口映射,外网端口写10000~60000之内的数字即可,我这里是15566

image-20241118105522667

navicat按照以下格式填写

image-20241118105711004

连接成功之后显示如下

image-20241028144541141

优化

毕竟是数据库,所以占用的内存比较大,我的云服务器选的是1G内存的,使用opengauss会出现内存不够而被杀死的情况,需要我回到服务器重新手动启动,所以需要解决的就是两个问题:1、自动重启;2、扩大内存

自动重启

自动重启比较简单,运行一行命令即可

1
docker update --restart=always opengauss

扩大内存

购买的内存是固定的,只能花钱升级,但有个能缓解的方法——虚拟内存,虽然效果不大,但能让内存需求突然增大的情况下保证容器不被杀死,也算是一个勉强能用的法子。

  1. 查看是否开启虚拟内存

    1
    swapon -s

    若什么都没输出,则说明没有虚拟内存

  2. 创建swap文件

    1
    fallocate -l 2G /swapfile

    一般是内存容量x1.5倍大小,我这里直接给了2G,可以根据自身需要修改

  3. 设置swap文件的权限

    1
    chmod 600 /swapfile
  4. 格式化swap文件

    1
    mkswap /swapfile
  5. 启用swap文件

    1
    swapon /swapfile
  6. 设置开机自动挂载swap文件

    1
    echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  7. 查看是否开启虚拟内存

    1
    swapon -s

    image-20241028145713889

  8. 查看内存使用情况

    1
    free -h

    因为我已经配置过了,所以这里没法给到图片,理论上此时能看到Swap还未被使用,uesd为0,且Mem的可用内存available很低

  9. docker使用虚拟内存

    1
    vim /etc/default/docker

    在末尾添加

    1
    DOCKER_OPTS="--storage-driver=devicemapper --storage-opt dm.override_udev_sync_check=true"

    重启docker

    1
    systemctl restart docker
  10. 再次查看内存使用情况

    1
    free -h

    image-20241028150132298

    此时可以看到虚拟内存正在被使用,且可用内存变多了

至此,圆满完成。不过建议还是直接上2G或者更高内存的服务器,1G的用来运行数据库只能勉强使用,高频操作还是会吃不消