ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

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

kingbase金仓数据库docker部署完整步骤 Docker快速体验本节将讲解在Linux系统中使用docker命令行快速安装KingbaseES。环境准备硬件环境要求KingabaseES Docker 软件包支持通用 X86_64、龙芯、飞腾、鲲鹏等国产CPU硬件体系架构。软件环境要求软件包名称版本说明Docker20.10.0及以上版本创建安装路径使用root用户执行创建数据库持久化存储路径在宿主机执行如下命令mkdir -p /opt/kingbase mkdir -p /opt/kingbase/data chmod -R 755 /opt/kingbase/data导入镜像可以通过电科金仓官网下载对应平台的安装程序也可以通过电科金仓的销售人员、售后支持人员或代理商获取安装程序。获取对应金仓数据库镜像例如kingbase.tar导入tar包到本机docker镜像仓库中。查询软件包目录如下cd /opt/kingbase ls -al执行示例[rootkingbase /opt/kingbase]# cd /opt/kingbase # 进入软件安装包目录 [rootkingbase /opt/kingbase]# ls -al #查看容器镜像 -rw-r--r-- 1 root root 137014730 Sep 1 18:56 kingbase.tar drwxr-xr-x 2 root root 6 Sep 1 18:56 data导入金仓数据库镜像使用root用户执行导入镜像至 Docker 镜像库docker load -i /opt/kingbase/kingbase.tar导入镜像示例:[rootkingbase /opt/kingbase]# docker load -i /opt/kingbase/kingbase.tar 96723fcc60ed: Loading layer [] 309.9MB/309.9MB 472038ee8f3a: Loading layer [] 22.53kB/22.53kB c47ca06c1f31: Loading layer [] 7.168kB/7.168kB 4b96eaf3f5a9: Loading layer [] 8.192kB/8.192kB 80e74e42a456: Loading layer [] 7.168kB/7.168kB 2736b91ba7fd: Loading layer [] 497MB/497MB 9c1c6592e2c1: Loading layer [] 7.168kB/7.168kB b677a0e279f7: Loading layer [] 7.168kB/7.168kB 62f44c97360a: Loading layer [] 4.096kB/4.096kB Loaded image: kingbase:v1 [rootkingbase /opt/kingbase]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE kingbase v1 84c4c61cc40e 3 weeks ago 794MB信息当使用docker load -i kingbase.tar命令报错时可使用docker import kingbase.tar命令尝试重新导包。启动实例最小启动命令示例[rootkingbase /home/kingbase]# docker run -tid --privileged \ -p 54321:54321 \ --name kingbase \ kingbase:v1 /usr/sbin/init # docker 返回生成的容器ID c8784e857a4a08a9a810bf0591b1b78e3659f4f8ea552d5b3023cea963a216ca金仓数据库服务端使用54321TCP端口。使用-p 54321:54321端口将数据库54321端口映射到本机提供服务。 当前部署方式未对存储数据进行持久化。 如果需要将数据持久化到本机的文件夹中进行存储则执行以下命令进行创建:[rootkingbase /home/kingbase]# docker run -tid --privileged \ -p 54321:54321 \ --name kingbase \ -v /opt/kingbase/data:/home/kingbase/userdata \ kingbase:v1 /usr/sbin/init信息/home/kingbase/userdata: 金仓数据库默认数据文件目录。/opt/kingbase/data: 本机存储持久化目录,可以通过修改此目录来符合您本机的存储目录规划。生产环境部署数据库Docker容器的说明请参照docker软件包安装。安装后检查[rootkingbase /home/kingbase]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c8784e857a4a kingbase:v1 /bin/bash /home/kin… 3 seconds ago Up 2 seconds kingbase命令行界面进入容器并执行bashdocker exec -it kingbase /bin/bash执行ksql访问命令行界面:[kingbasedf874e55bd7f ~]$ ksql -Ukingbase -d test ksql (V9.0) Type help for help. test#删除容器重建保留数据379 docker stop kingbase 380 docker rm kingbase 381 docker run -tid --privileged -p 4321:54321 -v /opt/kingbase/data:/home/kingbase/userdata/ --restartalways --name kingbase kingbase_v009r001c010b0004_single_x86:v1可能风险表空间建立在容器内路径下重建容器会丢失该部分数据使用docker:docker是一个开源的应用容器引擎让开发者可以打包他们的应用以及依赖包到一个可移植的容器中然后发布到任何流行的Linux或Windows操作系统的机器上也可以实现虚拟化容器是完全使用沙箱机制相互之间不会有任何接口。docker镜像包下载地址KES - 电科金仓-成为世界卓越的数据库产品与服务提供商注官网没有的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/data1.2 检查是否安装docker检查系统是否安装了docker如果没有可以使用yum命令安装yum install -y docker执行systemctl start docker命令启动Docker。执行docker version命令查看Docker是否已启动如显示以下信息表示Docker已安装并启动。二、导入镜像获取对应金仓数据库镜像例如kingbase.tar导入tar包到本机docker镜像仓库中2.1 使用root用户执行导入镜像至 Docker 镜像库docker load -i /opt/kingbase/kingbase.tar2.2 查看导入的镜像docker images注当使用 docker load -i kingbase.tar 命令报错时可使用 docker import kingbase.tar 命令尝试重新导包。三、部署 KingbaseES Docker3.1 运行容器使用root用户执行金仓容器镜像的部署docker run -idt --privileged -p ${hostport}:${containerport} \ –v ${hostpath}:${containerpath} \ --restartalways \ -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数据库初始密码数据库默认密码123456DB_MODE数据库模式NEED_START进入容器后是否启动数据库ENABLE_CI是否需要配置大小写敏感DB_USER数据库用户数据库默认用户名systemENCODING数据库启动字符集默认字符集utf8大小写敏感特性oracle可配置敏感或者不敏感pg模式只能敏感mysql模式只能不敏感数据库默认 data 目录/home/kingbase/userdata/data3.2 运行示例代表使用主机的4321端口将数据库数据实例存到主机的/opt/kingbase/data目录大小写敏感进入容器后启动数据库用户名是kingbase 密码是123456 兼容模式是oracle 并且实例启动后的名字叫kingbase[rootkingbase /home/kingbase]# docker run -tid --privileged \ -p 4321:54321 \ -v /opt/kingbase/data:/home/kingbase/userdata/ \ --restartalways \ -e ENABLE_CI \ -e NEED_STARTyes \ -e DB_USERkingbase \ -e DB_PASSWORD123456 \ -e DB_MODEoracle \ --name kingbase \ kingbase:v1 /usr/sbin/init # 执行结果 eb970ee84a8db48351a467782051a719d506da35d43f2b42385e42c1ac5bf8bb [rootkingbase /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 kingbasedocker run -tid --privileged -p 4321:54321 -v /opt/kingbase/data:/home/kingbase/userdata/ --restartalways -e NEED_STARTyes -e DB_USERkingbase -e DB_PASSWORD123456 -e DB_MODEoracle --name kingbase kingbase_v009r001c010b0004_single_x86:v1 /usr/sbin/initdocker run -tid --privileged -p 4321:54321 -v /opt/kingbase/data:/home/kingbase/userdata/ --restartalways -e ENABLE_CI -e NEED_STARTyes -e DB_USERkingbase -e DB_PASSWORD123456 -e DB_MODEoracle --name kingbase kingbase_v009r001c010b0004_single_x86:v1 /usr/sbin/init四、安装后检查在安装完成后您可以通过以下方式进行安装正确性验证查看容器状态使用 docker ps -a 查询容器id 。[rootkingbase /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 查看容器脚本执行日志检查数据库状态使用docker exec 进入容器检查金仓数据库的进程数据库在容器内默认端口为 54321[rootkingbase /opt/kingbase]# docker exec -it kingbase /bin/bash [kingbase35dffd5f9021 ~]$ 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} 示例 [rootkingbase /opt/kingbase]# docker rm 224c4a82dc50 224c4a82dc50 [rootkingbase /opt/kingbase]#5.3 删除镜像通过指定容器镜像 ID 删除 Docker 镜像仓库中的容器镜像# 使用镜像ID 删除容器镜像 docker rmi ${image_id} 示例 [rootkingbase /opt/kingbase]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE kingbase v1 0e787d54c591 3 hours ago 794MB [rootkingbase /opt/kingbase]# docker rmi 0e787d54c591 Untagged: kingbase:v1 Deleted: sha256:0e787d54c59167521825f87979e48a23ad5e6f1abbf8f7cf4df8de92ce812e32 ...... ...... ...... Deleted: sha256:40f1d502092ddf705d5cda580762a079b16d2a6fd132481a19b2f581bc1cc673 [rootkingbase /opt/kingbase]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE附录docker容器参数说明参数参数说明--name为容器指定一个名称。-it-i 保持容器的STDIN打开 允许与容器进行交互。-t 为容器分配一个终端与 -i 一起使用进行交互式操作。-d以后台模式运行容器。-p将容器的端口映射到主机的端口。宿主机端口:容器端口--privileged为数据库容器设置宿主机的权限。-v将主机的目录挂载到容器中。 主机路径:容器路径-e设置容器内的环境变量可修改的环境变量参照。--restartalways设置容器在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命令中增加--restartalways选项保证linux系统重启后容器自动运行。oracle模式可以通过-e ENABLE_CIyes配置大小写不敏感pg模式初始化不带--enable-ci选项mysql模式初始化带--enable-ci选项sqlserver模式的--eanble-ci选项设置不生效pg模式与mysql模式下启动参数配置-e ENABLE_CI均不会生效.常见操作数据库自动运行容器启动后数据库即开始运行用户无须手动启动数据库数据库配置正确/或者处于初始态[rootkingbase /opt/kingbase]# docker start kingbase kingbase [rootkingbase /opt/kingbase]# docker exec -it kingbase /bin/bash [kingbase35dffd5f9021 ~]$ 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/dataksql 访问数据库[kingbase224c4a82dc50 ~]$ ksql -Usystem -d test -p54321 ksql (V9.0) Type help for help. WARNING:License file will expire in 30 days. test#仅输入ksql免密访问[kingbase224c4a82dc50 ~]$ ksql ksql (V9.0) Type help for help. WARNING:License file will expire in 30 days. kingbase#宿主机访问数据库宿主机非root用户远程访问需要加-h 及改变映射端口[kingbasekingbase /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目录[kingbase224c4a82dc50 bin]$ ./sys_ctl -D /home/kingbase/userdata/data/ stop waiting for server to shut down........ done server stopped [kingbase224c4a82dc50 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授权文件。# 备份原有授权 [kingbase224c4a82dc50 kingbase]$ cp /home/kingbase/userdata/etc/license.dat /home/kingbase/userdata/etc/license.dat/lincense.dat.bak # 新授权文件替换 [kingbase224c4a82dc50 kingbase]$ cat license.dat /home/kingbase/userdata/etc/license.dat # 修改文件权限 [kingbase224c4a82dc50 kingbase]$ chown kingbase:kingbase /home/kingbase/userdata/etc/license.dat [kingbase224c4a82dc50 kingbase]$ chmod 755 /home/kingbase/userdata/etc/license.dat2、检查授权文件链接容器启动后对应的license.dat文件会自动被复制到etc持久化目录并建立软连接。# 检查软连接状态 [kingbase224c4a82dc50 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 [kingbase224c4a82dc50 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 # 检查授权文件内容 [kingbase224c4a82dc50 kingbase]$ cat /home/kingbase/install/kingbase/bin/license.dat3、授权剩余时间查询授权文件替换至数据库容器后可以使用ksql 验证当前已更新授权的剩余时间记录。[kingbase224c4a82dc50 ~]$ ksql ksql (V9.0) Type help for help. kingbase# select GET_LICENSE_VALIDDAYS(); get_license_validdays ----------------------- 90 (1 row)
返回列表