当前位置: 首页 > news >正文

kingbase金仓数据库docker部署完整步骤

使用docker:
docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。

docker镜像包:
下载地址:https://www.kingbase.com.cn/download.html
image

注:官网没有的docker镜像版本,需要找官方技术人员申请(官网的技术支持电话、1V1在线支持、QQ群)
如果遇到docker部署数据库,想使用postgis插件,也需要找官方技术申请,并表明自己是docker环境,不是完整版安装

一、环境准备

硬件环境要求:KingabaseES Docker 软件包支持通用X86_64、龙芯、飞腾、鲲鹏等国产CPU硬件体系架构。
软件环境要求:docker 需要20.10.0及以上版本

1.1 创建安装路径

(使用root用户执行创建数据库持久化存储的路径,在宿主机执行如下命令)

mkdir -p /opt/kingbase
mkdir -p /opt/kingbase/data
chmod -R 755 /opt/kingbase/data

1.2 检查是否安装docker

检查系统是否安装了docker,如果没有,可以使用yum命令安装:

yum install -y docker

执行systemctl start docker命令启动Docker。

执行docker version命令查看Docker是否已启动,如显示以下信息表示Docker已安装并启动。
image

二、导入镜像

获取对应金仓数据库镜像,例如kingbase.tar,导入tar包到本机docker镜像仓库中

2.1 使用root用户执行导入镜像至 Docker 镜像库:

docker load -i /opt/kingbase/kingbase.tar

bab0f5e90d88489bb2f72b57a0bd6f2c

2.2 查看导入的镜像

docker images

c6223c8be2664214a4aeb9d24b2c3984

注:当使用 docker load -i kingbase.tar 命令报错时,可使用 docker import kingbase.tar 命令,尝试重新导包。

三、部署 KingbaseES Docker

3.1 运行容器,使用root用户执行金仓容器镜像的部署:

docker run -idt --privileged -p ${hostport}:${containerport}  \
–v ${hostpath}:${containerpath} \
--restart=always \
-e NEED_START=${need_start} \
-e DB_USER=${username}   \
-e DB_PASSWORD=${passwd} \
-e DB_MODE=${dbmode}  \
-e ENCODING=${encoding} \
--name kingbase kingbase:v1 \
/usr/sbin/init
参数 含义
DB_PASSWORD 数据库初始密码,数据库默认密码:123456
DB_MODE 数据库模式
NEED_START 进入容器后是否启动数据库
ENABLE_CI 是否需要配置大小写敏感
DB_USER 数据库用户,数据库默认用户名:system
ENCODING 数据库启动字符集,默认字符集utf8

大小写敏感特性:oracle可配置敏感或者不敏感;pg模式只能敏感;mysql模式只能不敏感
数据库默认 data 目录:/home/kingbase/userdata/data

3.2 运行示例:

代表,使用主机的4321端口,将数据库数据实例存到主机的/opt/kingbase/data目录,大小写敏感,进入容器后启动数据库,用户名是kingbase 密码是123456 兼容模式是oracle 并且实例启动后的名字叫kingbase

[root@kingbase /home/kingbase]# docker run -tid --privileged \
-p 4321:54321 \
-v /opt/kingbase/data:/home/kingbase/userdata/ \
--restart=always \
--ENABLE_CI=yes \
-e NEED_START=yes  \
-e DB_USER=kingbase  \
-e DB_PASSWORD=123456 \
-e DB_MODE=oracle  \
--name kingbase  \
kingbase:v1 /usr/sbin/init
# 执行结果
eb970ee84a8db48351a467782051a719d506da35d43f2b42385e42c1ac5bf8bb
[root@kingbase /home/kingbase]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
eb970ee84a8d        kingbase:v1         "/bin/bash /home/kin…"   3 seconds ago       Up 2 seconds        0.0.0.0:4321->54321/tcp   kingbase

四、安装后检查

在安装完成后,您可以通过以下方式进行安装正确性验证

查看容器状态,使用 docker ps -a 查询容器id 。

[root@kingbase /home/kingbase]# docker ps -a
CONTAINER ID      IMAGE           COMMAND                 CREATED          STATUS          PORTS                   NAMES
224c4a82dc50      kingbase:v1     "/bin/bash /home/kin…"  2 hours ago      Up 12 minutes   0.0.0.0:4321->54321/tcp kingbase

使用docker logs 查看容器脚本执行日志

bc0f4004441c457eb4c9572181ea06c1

检查数据库状态

使用docker exec 进入容器,检查金仓数据库的进程,数据库在容器内默认端口为 54321

[root@kingbase /opt/kingbase]# docker exec -it kingbase /bin/bash
[kingbase@35dffd5f9021 ~]$ sys_ctl -D /home/kingbase/userdata/data/ status
sys_ctl: server is running (PID: 76)
/home/kingbase/install/kingbase/bin/kingbase "-D" "/home/kingbase/userdata/data"

五、卸载数据库

请在确认数据安全性后进行卸载操作。 卸载数据库之前请先确认当前数据库使用情况或已将数据库数据进行备份归档

5.1 停止容器,容器停止时可以通过指定容器ID或容器名称进行停止

# 使用容器ID进行停止容器
docker stop ${container_id}
# 或使用容器名称停止
docker stop ${container_name}

5.2 删除容器,容器删除时可以通过指定容器 ID 或容器名称进行删除

# 使用容器ID进行删除容器
docker rm ${container_id}
# 或使用容器名称删除容器
docker rm ${container_name}示例:
[root@kingbase /opt/kingbase]# docker rm 224c4a82dc50
224c4a82dc50
[root@kingbase /opt/kingbase]#

5.3 删除镜像,通过指定容器镜像 ID 删除 Docker 镜像仓库中的容器镜像

# 使用镜像ID 删除容器镜像
docker rmi ${image_id}示例:
[root@kingbase /opt/kingbase]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
kingbase            v1                  0e787d54c591        3 hours ago         794MB
[root@kingbase /opt/kingbase]# docker rmi 0e787d54c591
Untagged: kingbase:v1
Deleted: sha256:0e787d54c59167521825f87979e48a23ad5e6f1abbf8f7cf4df8de92ce812e32..................
Deleted: sha256:40f1d502092ddf705d5cda580762a079b16d2a6fd132481a19b2f581bc1cc673
[root@kingbase /opt/kingbase]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

附录:

docker容器参数说明:

参数 参数说明
--name 为容器指定一个名称。
-it -i 保持容器的STDIN打开, 允许与容器进行交互。-t 为容器分配一个终端,与 -i 一起使用进行交互式操作。
-d 以后台模式运行容器。
-p 将容器的端口映射到主机的端口。<宿主机端口>:<容器端口>
--privileged 为数据库容器设置宿主机的权限。
-v 将主机的目录挂载到容器中。 <主机路径>:<容器路径>
-e 设置容器内的环境变量,可修改的环境变量参照。
--restart=always 设置容器在Linux系统重启后,容器自动运行。
kingbase:v1 设置容器的镜像名称,此项根据实际金仓数据库容器镜像名进行修改。

-v 选项冒号左侧宿主机挂载目录(e.g /opt/kingbase/data )权限需要设置755的权限(chmod -R 755 /opt/kingbase/data ),不然会报权限(Permission denied)错误。
-v 选项冒号右侧为容器内的挂载路径需要设置为/home/kingbase/userdata,不然data目录无法持久化。

创建容器的的时候,可以在 docker run命令中增加--restart=always选项,保证linux系统重启后,容器自动运行。

oracle模式可以通过-e ENABLE_CI=yes配置大小写不敏感
pg模式初始化不带--enable-ci选项
mysql模式初始化带--enable-ci选项
sqlserver模式的--eanble-ci选项设置不生效
pg模式与mysql模式下启动参数配置-e ENABLE_CI均不会生效.

常见操作:

数据库自动运行,容器启动后,数据库即开始运行,用户无须手动启动数据库(数据库配置正确/或者处于初始态)

[root@kingbase /opt/kingbase]# docker start kingbase
kingbase
[root@kingbase /opt/kingbase]# docker exec -it kingbase /bin/bash
[kingbase@35dffd5f9021 ~]$ sys_ctl -D /home/kingbase/userdata/data/ status
sys_ctl: server is running (PID: 76)
/home/kingbase/install/kingbase/bin/kingbase "-D" "/home/kingbase/userdata/data"

ksql 访问数据库

[kingbase@224c4a82dc50 ~]$ ksql -Usystem -d test -p54321
ksql (V9.0)
Type "help" for help.WARNING:License file will expire in 30 days.test=#

仅输入ksql免密访问

[kingbase@224c4a82dc50 ~]$ ksql
ksql (V9.0)
Type "help" for help.WARNING:License file will expire in 30 days.kingbase=#

宿主机访问数据库,宿主机非root用户远程访问需要加-h 及改变映射端口


[kingbase@kingbase /opt/kingbase]# ./kingbase/bin/ksql -Usystem -d test -p 4321 -h ${host_ip}
Password for user kingbase:
ksql (V9.0)
Type "help" for help.WARNING:License file will expire in 30 days.test=#

数据库手动启停,进入容器/home/kingbase/install/kingbase/bin目录

[kingbase@224c4a82dc50 bin]$ ./sys_ctl -D /home/kingbase/userdata/data/ stop
waiting for server to shut down........ done
server stopped
[kingbase@224c4a82dc50 bin]$ ./sys_ctl -D /home/kingbase/userdata/data/ start
waiting for server to start....2023-10-11 11:23:15.463 UTC [276] LOG:  sepapower extension initialized
2023-10-11 11:23:15.466 UTC [276] LOG:  starting KingbaseES V009R001C010 on x86_64-pc-linux-gnu, ...
2023-10-11 11:23:15.466 UTC [276] LOG:  listening on IPv4 address "0.0.0.0", port 54321
2023-10-11 11:23:15.466 UTC [276] LOG:  listening on IPv6 address "::", port 54321
2023-10-11 11:23:16.391 UTC [276] LOG:  listening on Unix socket "/tmp/.s.KINGBASE.54321"
2023-10-11 11:23:17.252 UTC [276] LOG:  redirecting log output to logging collector process
2023-10-11 11:23:17.252 UTC [276] HINT:  Future log output will appear in directory "sys_log".
. done
server started

授权文件替换

1、修改授权文件,容器内持久化目录修改license.dat授权文件。

# 备份原有授权
[kingbase@224c4a82dc50 kingbase]$ cp /home/kingbase/userdata/etc/license.dat  /home/kingbase/userdata/etc/license.dat/lincense.dat.bak# 新授权文件替换
[kingbase@224c4a82dc50 kingbase]$ cat license.dat > /home/kingbase/userdata/etc/license.dat# 修改文件权限
[kingbase@224c4a82dc50 kingbase]$ chown kingbase:kingbase /home/kingbase/userdata/etc/license.dat
[kingbase@224c4a82dc50 kingbase]$ chmod 755 /home/kingbase/userdata/etc/license.dat

2、检查授权文件链接,容器启动后对应的license.dat文件会自动被复制到etc持久化目录,并建立软连接。

# 检查软连接状态
[kingbase@224c4a82dc50 etc]$ ls -l /home/kingbase/install/kingbase/bin/license.dat
lrwxrwxrwx 1 kingbase kingbase 47 Oct 11 09:01
/home/kingbase/install/kingbase/bin/license.dat
-> /home/kingbase/install/kingbase/etc/license.dat[kingbase@224c4a82dc50 kingbase]$ ls -l /home/kingbase/install/kingbase/etc
lrwxrwxrwx 1 kingbase kingbase 35 Oct 11 09:01
/home/kingbase/install/kingbase/etc
-> /home/kingbase/userdata/data/../etc# 检查授权文件内容
[kingbase@224c4a82dc50 kingbase]$ cat  /home/kingbase/install/kingbase/bin/license.dat

3、授权剩余时间查询,授权文件替换至数据库容器后可以使用ksql 验证当前已更新授权的剩余时间记录。

[kingbase@224c4a82dc50 ~]$ ksql
ksql (V9.0)
Type "help" for help.kingbase=# select GET_LICENSE_VALIDDAYS();get_license_validdays
-----------------------90
(1 row)
http://www.wxhsa.cn/company.asp?id=4690

相关文章:

  • glTF/glb功能、应用和 5 个基本最佳实践
  • AI 应用开发,不就是调个接口么?
  • 95.费解的开关
  • godot4人物移动一段距离后随机旋转代码,(死循环)
  • Spotify 音乐ML练习数据集含158 个特征,11
  • abc423
  • AI辅助分析HP DL360 GEN7 服务器安装USB3扩展卡
  • 最新药物数据集下载:来自Drugs
  • 【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块
  • 自动驾驶ADAS数据集 13万张高清道路车辆识别图像 覆盖多场景智能交通应用 支持目标检测图像识别模型训练与AI视觉算法开发
  • Norwood-Hamilton男性脱发分级图像集|2400+张多角度高清头皮图像|涵盖7类脱发诊断标注|适用于AI诊断工具开发、皮肤科研究与植发产品研发|包含5角度标准化拍摄、支持秃顶早期检测
  • AI生成文本检测数据集:基于不平衡数据集(人类94% vs AI 6%)的高效机器学习模型训练,涵盖ChatGPT、Gemini等LLM生成内容
  • 400小时大规模南昌方言数据集助力方言保护、AI语音识别技术开发与文化传承研究,覆盖多样化场景与说话者,专业采集高质量音频与文本标注,支持深度学习、语音模型训练、方言教学工具及本地化智能语音交互应用
  • 350+张高清晰度冲积土、黑土、煤渣土、红土四类土壤类型图像资源 ,专为计算机视觉算法训练与地球科学研究设计,支持精准农业土壤识别、地质勘探辅助分析及环境监测应用,提升土壤分类模型准确性
  • 200 万份脑部 MRI 扫描 + 放射科报告数据集:DICOM 格式高分辨率影像,覆盖 50+ 脑部病理(脑肿瘤、神经退行性疾病、多发性硬化症等),支持 AI 病理识别 _ 分类 _ 分割
  • 30万份行业报告数据集:覆盖金融科技医疗能源等20+行业领域,2010-2024年完整时间跨度,提供高质量PDF和文本格式,支持深度学习模型训练、行业趋势分析、市场竞争研究、学术论文写作的多场景应用
  • 23,463张无人机和卫星图像高质量标注,覆盖20个类别包括港口船舶车辆飞机,支持YOLO和VOC格式,专为深度学习目标检测算法优化,训练集验证集均衡划分提升模型鲁棒性,填补小目标检测数据空白
  • 阶跃星辰开源Step-Video-T2V模型:300亿参数打造高保真视频生成新标杆
  • 多多报销小程序系统详解
  • 第0章 矿卡EBAZ4203爆改zynq开发板介绍和VIVADO的安装
  • 德创恋爱话术宝典介绍
  • 无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测协议
  • 机器学习回顾(二)——KNN算法 - 教程
  • 利用langchain创建信息检索链对话应用
  • 不同的.cs文件的命名空间相同
  • MyEMS:开源的力量,如何为企业能源管理带来颠覆性变革?
  • http
  • AI招聘机器人制造商Paradox.ai因弱密码泄露数百万求职者数据
  • 完整教程:【Leetcode hot 100】543.二叉树的直径
  • Thundbird无法获取自签证书。