概要:本文将提供vastbase数据库如何在docker中进行部署,以及vastvase数据库升级后,在docker中如何导出导入数据库的方法。
1、获取vastbase镜像包:
联系海量工程师,获取与cpu和操作系统想对应的镜像包。
2、docker下安装数据库:
2.1、创建vastbase组和用户:
groupadd -g 1000 vastbase
useradd -u 1000 -g 1000 vastbase
passwd vastbase

image.png
2.2、创建数据目录并授权:
mkdir -p /home/vastbase/vastbase/lic
mkdir -p /home/vastbase/data
mkdir -p /home/vastbase/backup
mkdir -p /home/vastbase/backup_log
chown -R vastbase. /home/vastbase/
2.3、授权license文件并放入指定目录:
chown vastbase. Vastbase_G100_license_20250731
mv Vastbase_G100_license_20250731 license
mv license /home/vastbase/vastbase/lic

image.png
2.4、将镜像包拷贝到运行环境下使用docker load命令加载镜像(镜像包可联系工程师获取)。
docker load -i 镜像包

image.png

image.png
2.5、创建容器,在创建容器时需要指定证书挂载路径、数据挂载路径、端口映射、初始用户密码。
说明:
1.容器中运行数据库的用户为vastbase且uid:gid为 1000:1000,为保证容器中有权限访问被挂载的目录,宿主机中需要将被挂载的目录和文件的属性uid:gid修改为 1000:1000。
2.license文件名称需设置为:"license"。
3.运行容器需增加参数VB_DBCOMPATIBILITY,指定数据库初始化兼容模式,如下所示:
命令格式如下:
docker run -d --privileged=true -v {license_path}:/home/vastbase/vastbase/lic -v {data_path}:/home/vastbase/data -v {备份目录}:/home/vastbase/backup -v {备份执行日志}:/home/vastbase/backup_log -e VB_PASSWORD=Vastbase@123 -e VB_USERNAME=postgres -e VB_DBCOMPATIBILITY --name vastbase -p 25432:5432 {镜像名:TAG}
参数介绍:
| 参数名称 | 含义 | 说明 |
|---|---|---|
| -v {data_path}:/home/vastbase/data | {data_path} 为宿主机数据挂载目录,容器中的目录/home/vastbase/data不可修改。 | |
| -v {license_path} :/home/vastbase/vastbase/lic | {license_path} 为宿主机证书挂载目录 ,目录中证书文件名必须为license,容器中的目录/home/vastbase/vastbase/lic不可修改。 | |
| -v {备份目录}:/home/vastbase/backup | {备份目录} 为宿主机备份文件存放路径,容器中的目录/home/vastbase/backup不可修改。 | |
| -v {备份执行日志}:/home/vastbase/backup_log | {备份执行日志} 为宿主机备份执行日志存放路径 ,容器中的目录/home/vastbase/backup_log不可修改。 | |
| -e VB_PASSWORD=Vastbase@123 | 初始用户密码,长度至少为8位,且必须包含大写字母、小写字母、数字、符号中的三种字符。其中Vastbase@123为示例密码,建议根据需求修改。 | |
| -p 25432:5432 | 端口映射(本机端口:容器端口),可根据需要自行修改本机端口25432,容器端口5432不可修改。 | 如果需要改端口可在这里修改 |
| -e VB_DBCOMPATIBILITY | 指定数据库初始化兼容模式,取值范围:A、B、C、PG、MSSQL。分别表示兼容Oracle、MySQL、Teradata、PostgreSQL、SQL Server。 |
2.6、查看镜像TAG名称。
docker images -a

image.png
2.7、启动镜像。
docker run -d --privileged=true -v /home/vastbase/vastbase/lic:/home/vastbase/vastbase/lic -v /home/vastbase/data:/home/vastbase/data -v /home/vastbase/backup:/home/vastbase/backup -v /home/vastbase/backup_log:/home/vastbase/backup_log -e VB_USERNAME=testuser -e VB_PASSWORD=Hailiang@123 -e VB_DBCOMPATIBILITY=B --name vastbase -p 25432:5432 edc01f495c77

image.png
2.8、如果想删除镜像,语法如下。
docker rm “CONTAINER ID”

image.png
2.9、查看日志,在日志中查看是否启动数据库成功。
docker logs “NAMES”

image.png

image.png
2.10、登录容器
docker exec -it 295584f6b13b(CONTAINER ID或者NAMES) bash

image.png
2.11、修改数据库参数:
1、主要内存参数调整:
vi $PGDATA/postgresql.conf
license_path='/home/vastbase/license
max_connections=500
max_process_memory=24GB
shared_buffers=12GB
work_mem=4MB
2、常规参数调整,和服务器内存大小无关:
vi $PGDATA/postgresql.conf
password_force_alter = off
cstore_buffers = 16MB
3、mysql兼容性需注意:如果需要调整表名和列名字段是否区分大小写,需要调整以下参数。
lower_case_column_names为0代表列字段区分大小写即支持字段驼峰名称,如为1代表不区分大小写即统一按照小写处理。
lower_case_table_names为0代表表名区分大小写即支持表名驼峰名>称,如为1代表不区分大小写即统一按照小写表名处理。
lower_case_column_names = 0
lower_case_table_names = 1
2.12、重启数据库:
1、重启数据库后容器退出:
vb_ctl restart

image.png
2、删除原来失效的容器:
docker rm 295584f6b13b

image.png
3、重新拉起容器:
docker run -d --privileged=true -v /home/vastbase/vastbase/lic:/home/vastbase/vastbase/lic -v /home/vastbase/data:/home/vastbase/data -v /home/vastbase/backup:/home/vastbase/backup -v /home/vastbase/backup_log:/home/vastbase/backup_log -e VB_USERNAME=testuser -e VB_PASSWORD=Hailiang@123 -e VB_DBCOMPATIBILITY=B --name vastbase -p 25432:5432 edc01f495c77
docker ps -a
docker exec -it vastbase bash

image.png
3、docker数据库升级:
3.1、先在容器中导出数据库(此时的数据库是旧版本数据库):
先进入容器,在vastbase用户内执行:
vb_dump -p 5432 testdb -Ft -f /tmp/testdb.dmp
3.2、把导出的文件传到服务器的/tmp目录下
docker cp f8108bad5a18:/tmp/testdb.dmp /tmp/
cd /tmp
chown -R vastbase:vastbase testdb.dmp
3.3、把导出的文件从服务器的/tmp目录下传到镜像的/tmp下:
docker cp /tmp/testdb.dmp d3a43a15b0a0:/tmp/
3.4、导入数据库(此时的数据库是升级后的库):
先进入容器,在vastbase用户内执行:
vb_restore -p 5432 -d testdb -v /tmp/testdb.dmp