docker安装KES V9
初识kingbase,第一步跟着官方文档指导安装一个数据库试试
安装前准备
下载介质
人大金仓-成为世界卓越的数据库产品与服务提供商 (kingbase.com.cn)
选择对应的 docker 镜像
选择对应的试用license,要体验肯定要选择功能最全的,这里我们选企业版
上传软件安装包到准备的服务器
md5验证下安装包文件
# md5sum kdb_x86_64_V008R006C008B0014.tar
4f373955e7e0632a33178ff7aba3d3a8 kdb_x86_64_V008R006C008B0014.tar
安装环境
官方文档上的硬件要求如下:
先给个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
-
查看导入的镜像
docker images
运行镜像
-
启动docker容器
docker run -idt --privileged -p
h
o
s
t
p
o
r
t
:
{hostport}:
hostport:{containerport} –v
h
o
s
t
p
a
t
h
:
{hostpath}:
hostpath:{containerpath} --name
s
u
b
c
o
n
t
a
i
n
e
r
{sub_ container}
subcontainer{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 系统。
使用 -v 参数挂载容器内数据目录到宿主机进行持久化,,可以通过以下命令查看挂载是否生效,或者直接df -h
查看文件系统挂载
docker inspect -f ‘{{.Mounts}}’ kingbase
-
docker logs查看容器脚本执行日志
docker logs kingbase
-
进入容器
docker exec -it kingbase /bin/bash
访问数据库
数据库默认用户名:system
数据库默认密码:123456
数据库默认 data 目录:/home/kingbase/userdata/data
ksql -Usystem -dtest -p54321
-
容器运行配置
docker run -tid \
--name kingbase \
-e ENABLE_CI=
e
n
a
b
l
e
c
i
−
e
N
E
E
D
S
T
A
R
T
=
{enable_ci} \ -e NEED_START=
enableci −eNEEDSTART={need_start} \
-e DB_USER=
u
s
e
r
n
a
m
e
−
e
D
B
P
A
S
S
W
O
R
D
=
{username} \ -e DB_PASSWORD=
username −eDBPASSWORD={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,在宿主机可以通过该端口直接连接数据库
-
License.dat 持久化及更换 license
容器启动后对应的数据库license.dat 文件会复制到 etc 持久化目录,并软连接到data目录下
更新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
-
容器外访问
容器外访问需要到对应目录,改变映射端口、加上-h参数,并输入密码
数据库版本查看
select version();
数据库启停
在容器kingbase用户下
--启动
sys_ctl start -D /home/kingbase/userdata/data
--关停
sys_ctl stop -D /home/kingbase/userdata/data -m immediate
卸载容器
- 停止容器运行
docker stop
c
o
n
t
a
i
n
e
r
i
d
/
{container_id}/
containerid/{contain_name}
- 删除容器
docker rm
c
o
n
t
a
i
n
e
r
i
d
/
{container_id}/
containerid/{contain_name}
- 删除镜像
docker rmi
i
m
a
g
e
i
d
/
{image_id}/
imageid/{image_name:tag}