本文详细介绍了KingbaseES V9数据库在Docker环境下的部署流程。首先需要准备Linux服务器和Docker环境(版本需≥20.10.0),导入官方kingbase.tar镜像包。部署步骤包括:导入镜像、设置挂载目录(注意权限设置)、运行容器(支持多种环境变量配置)、数据库自动运行及验证。文章还提供了ksql访问数据库、容器日志查看、配置文件持久化等方法,并说明了正确性验证和卸载步骤。关键注意事项包括Docker版本要求、挂载目录权限设置以及容器自启动配置等,为KingbaseES数据库的容器化部署提供了完整指导。
一、环境准备
我这边用的是KingbaseES V9(V009R002C010)Oracle 兼容版,环境是 Linux 服务器,Docker 版本必须大于 20.10.0,低版本会出各种兼容问题,提前升级好。
提前准备好金仓官方提供的kingbase.tar镜像包,这是整个部署的基础。
二、安装步骤
1. 导入镜像
获取金仓数据库镜像包kingbase.tar,导入到本机docker镜像仓库中:
bash
docker load -i kingbase.tar
查看导入的镜像:
bash
docker images
执行后应看到类似输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
kingbase v1 84c4c61cc40e 3 weeks ago 794MB
注意 :当使用docker load -i kingbase.tar命令报错时,可使用docker import kingbase.tar命令尝试重新导包。
2. 设置挂载目录
使用-v选项可以将容器内数据目录挂载到宿主机。设置数据库data目录的持久化路径时,需要注意:
-v选项冒号左侧宿主机挂载目录(例如/mnt/data)权限需要设置为755-v选项冒号右侧为容器内的挂载路径,需要设置为/home/kingbase/userdata,不然data目录无法持久化
bash
chmod -R 755 /mnt/data
3. 运行镜像
环境变量说明
数据库默认用户名:system 数据库默认密码:12345678ab 数据库默认data目录:/home/kingbase/userdata/data
支持的环境变量:
NEED_START:进入容器后是否启动数据库,yes(默认)/noDB_USER:数据库用户DB_PASSWORD:数据库初始密码DB_MODE:数据库模式,支持oracle/pg/mysqlENCODING:数据库启动的字符集,支持utf8(默认)
最小启动命令
bash
docker run -tid --privileged \
--name kingbase \
kingbase:v1 /usr/sbin/init
完整启动命令示例
bash
docker run -tid --privileged \
-p 4321:54321 \
-v /mnt/data:/home/kingbase/userdata/ \
-e NEED_START=yes \
-e DB_USER=kingbase \
-e DB_PASSWORD=123456 \
-e DB_MODE=oracle \
--name kingbase \
kingbase:v1 /usr/sbin/init
提示 :创建容器的时候,可以在docker run命令中增加--restart=always选项,保证Linux系统重启后容器自动运行。
4. 数据库自动运行
容器启动后,数据库即开始运行,用户无须手动启动数据库(数据库配置正确或者处于初始态)。
查看容器状态:
bash
docker ps
进入容器:
bash
docker exec -it kingbase /bin/bash
查看数据库运行状态:
bash
sys_ctl -D /home/kingbase/userdata/data/ status
正常输出显示:
vbnet
sys_ctl: server is running (PID: 76)
5. ksql访问数据库
使用ksql进行访问:
bash
ksql -U kingbase -d test -p 54321
仅输入ksql免密访问:
bash
ksql
注意 :su - root会导致环境变量丢失,PATH中没有ksql(也无法ksql免密登录),推荐使用su root。
6. 容器外访问数据库
宿主机远程访问需要加-h及改变映射端口:
bash
./kingbase/bin/ksql -U system -d test -h 10.10.12.252 -p 4321
输入密码后即可访问。
7. 查看容器日志
使用docker logs查看容器脚本执行日志:
bash
docker logs kingbase
正常日志中应包含:
vbscript
waiting for server to start... done
server started
8. 配置文件持久化
启动容器后,相关配置文件会随着data目录一起持久化,包括kingbase.conf、kingbase_auto.conf、sys_hba.conf等。
在持久化目录中修改配置文件后,使用如下命令使修改生效:
bash
/home/kingbase/install/kingbase/bin/sys_ctl reload -D /home/kingbase/userdata/data/
9. 安装正确性验证
安装完成后,可通过以下方式进行验证:
(1)查看安装后容器的状态
bash
docker ps -a
(2)使用docker logs命令检查数据库启动日志
bash
docker logs kingbase
(3)进入容器检查数据库进程
bash
docker exec -it kingbase /bin/bash
sys_ctl -D /home/kingbase/userdata/data/ status
10. License持久化及更换
License文件会随着data目录持久化,更换license时替换对应文件并修改权限即可。
三、卸载数据库
卸载步骤按顺序执行:
1. 停止容器
bash
docker stop kingbase
2. 删除容器
bash
docker rm kingbase
3. 删除镜像
bash
docker rmi kingbase:v1
四、注意
-
当使用
docker load -i kingbase.tar命令报错时,可使用docker import kingbase.tar命令尝试重新导包。 -
创建容器的时候,可以在
docker run命令中增加--restart=always选项,保证Linux系统重启后容器自动运行。 -
docker版本需要大于20.10.0。