暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

docker安装人大金仓KES V9

graffiti 2024-06-11
1042



初识kingbase,第一步跟着官方文档指导安装一个数据库试试

安装前准备

下载介质

人大金仓-成为世界卓越的数据库产品与服务提供商 (kingbase.com.cn)

选择对应的 docker 镜像

image

选择对应的试用license,要体验肯定要选择功能最全的,这里我们选企业版

image

上传软件安装包到准备的服务器

md5验证下安装包文件

# md5sum kdb_x86_64_V008R006C008B0014.tar
4f373955e7e0632a33178ff7aba3d3a8 kdb_x86_64_V008R006C008B0014.tar

安装环境

官方文档上的硬件要求如下:

image

先给个4C8G,存储20G

操作系统

cpu

内存

docker目录

数据文件存放空间

RHEL8.7

4

8g

/docker

/kingbase/data

Docker安装

配置yum源

#yum remove -y docker*
#yum install -y yum-utils
#yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#yum makecache
#yum list docker-ce --showduplicates | sort -r
可安装的软件包
docker-ce.x86_64 3:26.1.3-1.el8 docker-ce-stable
docker-ce.x86_64 3:26.1.2-1.el8 docker-ce-stable
docker-ce.x86_64 3:26.1.1-1.el8 docker-ce-stable
docker-ce.x86_64 3:26.1.0-1.el8 docker-ce-stable
...(列出部分)

安装docker

#指定版本安装
#yum install -y docker-ce-cli-1:26.1.3-1.el8.x86_64 docker-ce-3:26.1.3-1.el8.x86_64
...(安装过程省略)
已安装:
container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch containerd.io-1.6.32-3.1.el8.x86_64
docker-buildx-plugin-0.14.0-1.el8.x86_64 docker-ce-3:26.1.3-1.el8.x86_64
docker-ce-cli-1:26.1.3-1.el8.x86_64 docker-compose-plugin-2.27.0-1.el8.x86_64
libcgroup-0.41-19.el8.x86_64


#指定docker的数据存储路径
#vim /etc/docker/daemon.json
#添加以下
{
"data-root": "/docker"
}

#重新加载配置并重启docker服务
#sudo systemctl daemon-reload
#sudo systemctl restart docker
#sudo systemctl enable docker

#验证安装
#docker version
Client: Docker Engine - Community
Version: 26.1.3
API version: 1.45
Go version: go1.21.10
Git commit: b72abbb
Built: Thu May 16 08:34:39 2024
OS/Arch: linux/amd64
Context: default

Server: Docker Engine - Community
Engine:
Version: 26.1.3
API version: 1.45 (minimum version 1.24)
Go version: go1.21.10
Git commit: 8e96db1
Built: Thu May 16 08:33:34 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.32
GitCommit: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0

预安装工作

安装用户

使用root用户安装,对于安装路径需要有读、写、执行权限

需要创建kingbase用户及属主

groupadd -g 1000 kingbase
useradd -u 1000 -g kingbase kingbase
echo "kes1234" | passwd -stdin kingbase

安装目录

使用docker安装,安装目录会在docker的存储目录/docker下

数据目录

存放kingbaseES数据文件的目录,默认放在容器的/home/kingbase/userdata/data 目录
文件系统对应的目录设置为/kingbase/data

开始安装

导入镜像

导入tar包到docker镜像仓库

docker load -i /opt/kdb_x86_64_V008R006C008B0014.tar

image

查看导入的镜像

docker images

image

运行镜像

启动docker容器

docker run -idt --privileged -p ${hostport}:${containerport} –v ${hostpath}:${containerpath} --name ${sub_
container} ${image} /usr/sbin/init

docker run -tdi --privileged -p 4321:54321 -v /kingbase/data:/home/kingbase/userdata/data --name kingbase kingbase_v008r006c008b0014_single_x86:v1 /usr/sbin/init



## PS:run命令解析
docker run:启动一个新的 Docker 容器。
-t:分配一个伪终端。
-i:交互式模式,保持 STDIN 打开。
-d:容器以分离模式启动,后台运行。
--privileged:给予容器额外的权限,允许执行几乎所有的主机操作。
-p 4321:54321:将主机的 4321 端口映射到容器的 54321 端口。
-v /docker:/home/kingbase/userdata/data:将主机的 /docker 目录挂载到容器的 /home/kingbase/userdata/data 目录,使得这两个目录间共享数据。
--name kingbase:将容器命名为 kingbase。
kingbase_v008r006c008b0014_single_x86:v1:使用名称为 kingbase_v008r006c008b0014_single_x86并带有 v1 标签的镜像来创建容器。
/usr/sbin/init:容器启动时执行的命令。在这种情况下,是启动容器的 init 系统。

image

使用 -v 参数挂载容器内数据目录到宿主机进行持久化,,可以通过以下命令查看挂载是否生效,或者直接df -h查看文件系统挂载

docker inspect -f ‘{{.Mounts}}’ kingbase

image

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

docker logs kingbase

image

进入容器

docker exec -it kingbase /bin/bash

image

image

访问数据库

数据库默认用户名:system

数据库默认密码:123456

数据库默认 data 目录:/home/kingbase/userdata/data

ksql -Usystem -dtest -p54321

image

容器运行配置

docker run -tid \
--name kingbase \
-e ENABLE_CI=${enable_ci} \
-e NEED_START=${need_start} \
-e DB_USER=${username} \
-e DB_PASSWORD=${passwd} \
-e DB_MODE=${dbmode} \
kingbase_v008r006c008b0014_single_x86:v1 \
/bin/bash


#参数解释
- ENABLE_CI: 是否需要配置大小写敏感
yes(默认大小写不敏感)/no(大小写敏感)

- NEED_START: 进入容器后是否启动数据库
yes(默认启动)/no(大小写敏感)

- DB_USER: 数据库用户

- DB_PASSWORD: 数据库初始密码

- DB_MODE: 数据库模式
支持 oracle/pg/mysql

这里我们控制配置

docker run -tid \
--name kingbase \
--privileged \
-p 4321:54321 \
-e ENABLE_CI=yes \
-e NEED_START=yes \
-e DB_USER=kingbase \
-e DB_PASSWORD=123456 \
-e DB_MODE=oracle \
kingbase_v008r006c008b0014_single_x86:v1 \
/bin/bash

PS: docker修改配置重新run需要先stop docker并remove

[root@kb01 ~]# docker stop kingbase && docker rm kingbase
kingbase
kingbase
[root@kb01 ~]# docker run -tid \
> --name kingbase \
> --privileged \
> -p 4321:54321 \
> -e ENABLE_CI=yes \
> -e NEED_START=yes \
> -e DB_USER=kingbase \
> -e DB_PASSWORD=123456 \
> -e DB_MODE=oracle \
> kingbase_v008r006c008b0014_single_x86:v1 \
> /bin/bash
13a8d212305be0f114a00d4d76f50b714444f456844197852df357ce2df28f69
[root@kb01 ~]#
[root@kb01 ~]#
[root@kb01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
13a8d212305b kingbase_v008r006c008b0014_single_x86:v1 "/bin/bash /home/kin…" 5 seconds ago Up 3 seconds 0.0.0.0:4321->54321/tcp, :::4321->54321/tcp kingbase
[root@kb01 ~]# docker logs kingbase
chmod: cannot access '/home/kingbase/userdata/data': No such file or directory
The files belonging to this database system will be owned by user "kingbase".
This user must also own the server process.

The database cluster will be initialized with locale "C".
The default database encoding has accordingly been set to "SQL_ASCII".
The default text search configuration will be set to "english".

The comparision of strings is case-insensitive.
Data page checksums are disabled.

fixing permissions on existing directory /home/kingbase/userdata/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... posix
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... UTC
creating configuration files ... ok
Begin setup encrypt device
initializing the encrypt device ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
create security database ... ok
load security database ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing sys_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

/home/kingbase/install/kingbase/bin/sys_ctl -D /home/kingbase/userdata/data -l logfile start

waiting for server to start.... done
server started
* * * * * kingbase /home/kingbase/docker-entrypoint.sh check_and_run /home/kingbase/userdata/data >> /home/kingbase/cronlog

宿主机直接登录数据库

容器端口54321在宿主机的映射是4321,在宿主机可以通过该端口直接连接数据库

image

License.dat 持久化及更换 license

容器启动后对应的数据库license.dat 文件会复制到 etc 持久化目录,并软连接到data目录下

image

image

image

更新license直接替换data目录etc下的license.dat文件,并修改成755权限

chown kingbase:kingbase /home/kingbase/userdata/etc/license.dat
chmod 755 /home/kingbase/userdata/etc/license.dat

数据库配置文件持久化及修改配置文件后生效

启动容器后, 相关配置文件会随着 data 目录一起持久化,包括 kingbase.conf、kingbase_auto.conf、sys_hba.conf 等配置文件;在持久化目录中修改配置文件后,使用如下命令使修改生效

/home/kingbase/install/kingbase/bin/sys_ctl reload -D /home/kingbase/userdata/data/

数据库检查

访问数据库

容器内访问

在容器启动配置中设置过默认数据库和密码,所以在容器内直接ksql即可访问数据库kingbase

image

容器外访问

容器外访问需要到对应目录,改变映射端口、加上-h参数,并输入密码

image

数据库版本查看

select version();

image

数据库启停

在容器kingbase用户下

--启动
sys_ctl start -D /home/kingbase/userdata/data

--关停
sys_ctl stop -D /home/kingbase/userdata/data -m immediate

卸载容器

  1. 停止容器运行

docker stop {contain_name}

  1. 删除容器

docker rm {contain_name}

  1. 删除镜像

docker rmi {image_name:tag}

初识kingbase,第一步跟着官方文档指导安装一个数据库试试

安装前准备

下载介质

人大金仓-成为世界卓越的数据库产品与服务提供商 (kingbase.com.cn)

选择对应的 docker 镜像

image

选择对应的试用license,要体验肯定要选择功能最全的,这里我们选企业版

image

上传软件安装包到准备的服务器

md5验证下安装包文件

# md5sum kdb_x86_64_V008R006C008B0014.tar 4f373955e7e0632a33178ff7aba3d3a8 kdb_x86_64_V008R006C008B0014.tar

安装环境

官方文档上的硬件要求如下:

image

先给个4C8G,存储20G

操作系统 cpu 内存 docker目录 数据文件存放空间
RHEL8.7 4 8g /docker /kingbase/data

Docker安装

配置yum源

#yum remove -y docker* #yum install -y yum-utils #yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #yum makecache #yum list docker-ce --showduplicates | sort -r 可安装的软件包 docker-ce.x86_64 3:26.1.3-1.el8 docker-ce-stable docker-ce.x86_64 3:26.1.2-1.el8 docker-ce-stable docker-ce.x86_64 3:26.1.1-1.el8 docker-ce-stable docker-ce.x86_64 3:26.1.0-1.el8 docker-ce-stable ...(列出部分)

安装docker

#指定版本安装 #yum install -y docker-ce-cli-1:26.1.3-1.el8.x86_64 docker-ce-3:26.1.3-1.el8.x86_64 ...(安装过程省略) 已安装: container-selinux-2:2.167.0-1.module_el8.5.0+911+f19012f9.noarch containerd.io-1.6.32-3.1.el8.x86_64 docker-buildx-plugin-0.14.0-1.el8.x86_64 docker-ce-3:26.1.3-1.el8.x86_64 docker-ce-cli-1:26.1.3-1.el8.x86_64 docker-compose-plugin-2.27.0-1.el8.x86_64 libcgroup-0.41-19.el8.x86_64 #指定docker的数据存储路径 #vim /etc/docker/daemon.json #添加以下 { "data-root": "/docker" } #重新加载配置并重启docker服务 #sudo systemctl daemon-reload #sudo systemctl restart docker #sudo systemctl enable docker #验证安装 #docker version Client: Docker Engine - Community Version: 26.1.3 API version: 1.45 Go version: go1.21.10 Git commit: b72abbb Built: Thu May 16 08:34:39 2024 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 26.1.3 API version: 1.45 (minimum version 1.24) Go version: go1.21.10 Git commit: 8e96db1 Built: Thu May 16 08:33:34 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.32 GitCommit: 8b3b7ca2e5ce38e8f31a34f35b2b68ceb8470d89 runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0

预安装工作

安装用户

使用root用户安装,对于安装路径需要有读、写、执行权限

需要创建kingbase用户及属主

groupadd -g 1000 kingbase useradd -u 1000 -g kingbase kingbase echo "kes1234" | passwd -stdin kingbase

安装目录

使用docker安装,安装目录会在docker的存储目录/docker下

数据目录

存放kingbaseES数据文件的目录,默认放在容器的/home/kingbase/userdata/data 目录 文件系统对应的目录设置为/kingbase/data

开始安装

导入镜像

  1. 导入tar包到docker镜像仓库

docker load -i /opt/kdb_x86_64_V008R006C008B0014.tar

image

  1. 查看导入的镜像

docker images

image

运行镜像

  1. 启动docker容器

docker run -idt --privileged -p ${hostport}:${containerport} –v ${hostpath}:${containerpath} --name ${sub_ container} ${image} /usr/sbin/init docker run -tdi --privileged -p 4321:54321 -v /kingbase/data:/home/kingbase/userdata/data --name kingbase kingbase_v008r006c008b0014_single_x86:v1 /usr/sbin/init ## PS:run命令解析 docker run:启动一个新的 Docker 容器。 -t:分配一个伪终端。 -i:交互式模式,保持 STDIN 打开。 -d:容器以分离模式启动,后台运行。 --privileged:给予容器额外的权限,允许执行几乎所有的主机操作。 -p 4321:54321:将主机的 4321 端口映射到容器的 54321 端口。 -v /docker:/home/kingbase/userdata/data:将主机的 /docker 目录挂载到容器的 /home/kingbase/userdata/data 目录,使得这两个目录间共享数据。 --name kingbase:将容器命名为 kingbase。 kingbase_v008r006c008b0014_single_x86:v1:使用名称为 kingbase_v008r006c008b0014_single_x86并带有 v1 标签的镜像来创建容器。 /usr/sbin/init:容器启动时执行的命令。在这种情况下,是启动容器的 init 系统。

image

使用 -v 参数挂载容器内数据目录到宿主机进行持久化,,可以通过以下命令查看挂载是否生效,或者直接df -h查看文件系统挂载

docker inspect -f ‘{{.Mounts}}’ kingbase

image

  1. docker logs查看容器脚本执行日志

docker logs kingbase

image

  1. 进入容器

docker exec -it kingbase /bin/bash

image

image

访问数据库

数据库默认用户名:system

数据库默认密码:123456

数据库默认 data 目录:/home/kingbase/userdata/data

ksql -Usystem -dtest -p54321

image

  1. 容器运行配置

docker run -tid \ --name kingbase \ -e ENABLE_CI=${enable_ci} \ -e NEED_START=${need_start} \ -e DB_USER=${username} \ -e DB_PASSWORD=${passwd} \ -e DB_MODE=${dbmode} \ kingbase_v008r006c008b0014_single_x86:v1 \ /bin/bash #参数解释 - ENABLE_CI: 是否需要配置大小写敏感 yes(默认大小写不敏感)/no(大小写敏感) - NEED_START: 进入容器后是否启动数据库 yes(默认启动)/no(大小写敏感) - DB_USER: 数据库用户 - DB_PASSWORD: 数据库初始密码 - DB_MODE: 数据库模式 支持 oracle/pg/mysql

这里我们控制配置

docker run -tid \ --name kingbase \ --privileged \ -p 4321:54321 \ -e ENABLE_CI=yes \ -e NEED_START=yes \ -e DB_USER=kingbase \ -e DB_PASSWORD=123456 \ -e DB_MODE=oracle \ kingbase_v008r006c008b0014_single_x86:v1 \ /bin/bash

PS: docker修改配置重新run需要先stop docker并remove

[root@kb01 ~]# docker stop kingbase && docker rm kingbase kingbase kingbase [root@kb01 ~]# docker run -tid \ > --name kingbase \ > --privileged \ > -p 4321:54321 \ > -e ENABLE_CI=yes \ > -e NEED_START=yes \ > -e DB_USER=kingbase \ > -e DB_PASSWORD=123456 \ > -e DB_MODE=oracle \ > kingbase_v008r006c008b0014_single_x86:v1 \ > /bin/bash 13a8d212305be0f114a00d4d76f50b714444f456844197852df357ce2df28f69 [root@kb01 ~]# [root@kb01 ~]# [root@kb01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 13a8d212305b kingbase_v008r006c008b0014_single_x86:v1 "/bin/bash /home/kin…" 5 seconds ago Up 3 seconds 0.0.0.0:4321->54321/tcp, :::4321->54321/tcp kingbase [root@kb01 ~]# docker logs kingbase chmod: cannot access '/home/kingbase/userdata/data': No such file or directory The files belonging to this database system will be owned by user "kingbase". This user must also own the server process. The database cluster will be initialized with locale "C". The default database encoding has accordingly been set to "SQL_ASCII". The default text search configuration will be set to "english". The comparision of strings is case-insensitive. Data page checksums are disabled. fixing permissions on existing directory /home/kingbase/userdata/data ... ok creating subdirectories ... ok selecting dynamic shared memory implementation ... posix selecting default max_connections ... 100 selecting default shared_buffers ... 128MB selecting default time zone ... UTC creating configuration files ... ok Begin setup encrypt device initializing the encrypt device ... ok running bootstrap script ... ok performing post-bootstrap initialization ... ok create security database ... ok load security database ... ok syncing data to disk ... ok initdb: warning: enabling "trust" authentication for local connections You can change this by editing sys_hba.conf or using the option -A, or --auth-local and --auth-host, the next time you run initdb. Success. You can now start the database server using: /home/kingbase/install/kingbase/bin/sys_ctl -D /home/kingbase/userdata/data -l logfile start waiting for server to start.... done server started * * * * * kingbase /home/kingbase/docker-entrypoint.sh check_and_run /home/kingbase/userdata/data >> /home/kingbase/cronlog
  1. 宿主机直接登录数据库

容器端口54321在宿主机的映射是4321,在宿主机可以通过该端口直接连接数据库

image

  1. License.dat 持久化及更换 license

容器启动后对应的数据库license.dat 文件会复制到 etc 持久化目录,并软连接到data目录下

image

image

image

更新license直接替换data目录etc下的license.dat文件,并修改成755权限

chown kingbase:kingbase /home/kingbase/userdata/etc/license.dat chmod 755 /home/kingbase/userdata/etc/license.dat
  1. 数据库配置文件持久化及修改配置文件后生效

启动容器后, 相关配置文件会随着 data 目录一起持久化,包括 kingbase.conf、kingbase_auto.conf、sys_hba.conf 等配置文件;在持久化目录中修改配置文件后,使用如下命令使修改生效

/home/kingbase/install/kingbase/bin/sys_ctl reload -D /home/kingbase/userdata/data/

数据库检查

访问数据库

  1. 容器内访问

在容器启动配置中设置过默认数据库和密码,所以在容器内直接ksql即可访问数据库kingbase

image

  1. 容器外访问

容器外访问需要到对应目录,改变映射端口、加上-h参数,并输入密码

image

数据库版本查看

select version();

image

数据库启停

在容器kingbase用户下

--启动 sys_ctl start -D /home/kingbase/userdata/data --关停 sys_ctl stop -D /home/kingbase/userdata/data -m immediate

卸载容器

  1. 停止容器运行

docker stop ${container_id}/${contain_name}

  1. 删除容器

docker rm ${container_id}/${contain_name}

  1. 删除镜像

docker rmi ${image_id}/${image_name:tag}

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论