通过Docker安装KingbaseES V8并激活License,同时postgis安装

在这里插入图片描述
人大金仓最大连接数的修改跟pgsql差不多,就是修改kingbase.conf文件,修改里面的max_connections = 10 ,有时候会发现修改后不成功的问题,最直接的表现就是在修改后重启服务,控制台还是提示重置为10,最大的原因是许可为开发版,需要重新下载企业版的lincense文件,然后替换掉重启就行了。

1.安装docker-ce
安装依赖的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker的阿里云yum源

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新软件包索引

yum makecache fast

查看docker版本,这里选择25.0.5

yum list docker-ce --showduplicates |sort –r

安装docker-ce

yum install -y docker-ce-25.0.5

2.启动Docker服务

systemctl start docker             #启动Docker
systemctl enable docker.service    #设置开机自启
查看docker版本
docker --version

简单介绍一下在Docker中安装人大金仓(KingbaseES V9)的过程,以及如何更换默认的License为官方提供的365天有效期的开发License。下面的安装过程都是在WSL2中完成的。
安装
首先,我们可以去KingbaseES的官网(https://www.kingbase.com.cn/xzzx/index.htm ,在软件版本中,注意下载的镜像为x86版本)下载docker镜像,下载完成后导入即可。
在这里插入图片描述
加载镜像

docker load -i  kdb_x86_64_V008R006C008B0014.tar

查看镜像

[root@k8s-normal-node01 license]# sudo docker images kingbase_v008r006c008b0014_single_x86
REPOSITORY                              TAG       IMAGE ID       CREATED        SIZE
kingbase_v008r006c008b0014_single_x86   v1        451a390d70bd   6 months ago   718MB

下载授权文件
在这里插入图片描述
上传到/data/kingbase/license下并解压
启动容器,可以直接下面的命令

docker run -d -it --privileged=true -p 54321:54321 -v /data/kingbase/license/:/opt -v /data/kingbase/data:/home/kingbase/userdata/data --name kingbase -e DB_USER=system -e DB_PASSWORD=kingbase@2024 kingbase_v008r006c008b0014_single_x86:v1

第二种就是直接直接指定授权文件

docker run -d -it --privileged=true -p 54321:54321 -v /data/kingbase/license/:/home/kingbase/userdata/etc -v /data/kingbase/data:/home/kingbase/userdata/data --name kingbase -e DB_USER=system -e DB_PASSWORD=4mfA6CN0ahSWsBbF kingbase_v008r006c008b0020_single_x86:v1

人大金仓链接信息

|  库名           | 登录名             | 密码                 |数据库类型   |
| ---------------- | ------------------| --------------------- |--------------------- |
| kingbase      | system         | kingbase@2024  |postgres	         |

容器启动后,我们就可以看一下系统的版本来确认一下安装成功

sudo docker exec -it kingbase ksql -Usystem kingbase -c 'select get_license_info();'
sudo docker exec -it kingbase ksql -Usystem kingbase -c 'select GET_LICENSE_VALIDDAYS();'
sudo docker exec -it kingbase ksql -Usystem kingbase -c 'show max_connections;'

更换License
我们可以通过下面的命令从宿主来直接查看KingbaseES的版本
sudo docker exec -it kingbase ksql -Usystem kingbase -c ‘select get_license_info();’

直接使用命令直接更换

sudo docker cp license_39893_0.dat kingbase:/home/kingbase/userdata/etc/license.dat
sudo docker exec -it kingbase sudo chown kingbase.kingbase /home/kingbase/userdata/etc/license.dat
sudo docker exec -it -u 0 kingbase chmod 644 /home/kingbase/userdata/etc/license.dat
sudo docker restart kingbase
docker cp /data/kingbase/sys_hba.conf  kingbase:/home/kingbase/userdata/data/sys_hba.conf

查看结果

[root@k8s-normal-node01 license]# sudo docker exec -it kingbase ksql -Usystem system -c 'select get_license_info();'
                           get_license_info                           
----------------------------------------------------------------------
 License序列号 --- 启用 --- EC0BC340-0F68-11EF-97BF-000C29CBE49F+
 生产日期 --- 启用 --- 2024-05-11                              +
 产品名称 --- 启用 --- KingbaseES V8                           +
 细分版本模板名 --- 启用 --- SALES-开发版 V8R6           +
 产品版本号 --- 启用 --- V008R006C                            +
 浮动基准日期 ------ 启用                                    +
 有效期间 --- 启用 --- 365                                     +
 用户名称 --- 启用 --- 官方网站试用授权                +
 项目名称 --- 启用 --- 官方网站试用授权                +
 CPU检查 --- 启用 --- 0                                          +
 容器名称 --- 禁用 --- 0                                       +
 MAC地址 --- 启用 --- 00:00:00:00:00:00                          +
 最大连接数 --- 启用 --- 10                                   +
 分区 --- 启用 --- 0                                             +
 物理同步 --- 启用 --- 0                                       +
 读写分离模块 --- 禁用 --- 0                                 +
 恢复到指定时间点 --- 启用 --- 0                           +
 集群对网络故障的容错 --- 启用 --- 0                     +
 快速加载 --- 启用 --- 0                                       +
 日志压缩 --- 启用 --- 0                                       +
 全文检索 --- 启用 --- 0                                       +
 性能优化包(性能诊断) --- 启用 --- 0                      +
 性能优化包(性能调优) --- 启用 --- 0                      +
 保密通讯协议 --- 启用 --- 0                                 +
 审计 --- 启用 --- 0                                             +
 三权分立 --- 启用 --- 0                                       +
 透明加密 --- 启用 --- 0                                       +
 强制访问控制 --- 启用 --- 0                                 +
 列加密 --- 启用 --- 0                                          +
 密码复杂度 --- 启用 --- 0                                    +
 用户锁定 --- 启用 --- 0                                       +
 集群管理软件 --- 启用 --- 0                                 +
 集群配置工具 --- 启用 --- 0                                 +
 集群高级管理包 --- 启用 --- 0                              +
 并行查询 --- 启用 --- 0                                       +
 并行备份还原 --- 启用 --- 0                                 +
 异构数据源 --- 启用 --- 0                                    +
 日志解析 --- 启用 --- 0                                       +
 GIS --- 禁用 --- 0                                                +
 日志解析为SQL --- 启用 --- 0                                 +
 操作系统类型 --- 启用 --- 0                                 +
 数据守护集群 --- 禁用 --- 0                                 +
 多活共享存储集群 --- 禁用 --- 0                           +
(1 row)

可以使用sql在连接工具查看是否更换成功

sudo docker exec -it kingbase ksql -Usystem kingbase -c 'select GET_LICENSE_VALIDDAYS()';

在这里插入图片描述

修改连接数 修改 kingbase.conf文件 从容容器内复制出来 改了 在复制进去,重启即可
找到 max_connections = 20000 修改为20000 修改时区 log_timezone = 'Asia/Shanghai' 和timezone = ‘UTC’ 改成 timezone = ‘Asia/Shanghai’

sudo docker exec -it kingbase ksql -Usystem kingbase -c 'select now()::timestamp with time zone';
docker cp kingbase:/home/kingbase/userdata/data/kingbase.conf /data/kingbase/kingbase.conf
docker cp /data/kingbase/kingbase.conf kingbase:/home/kingbase/userdata/data/kingbase.conf

修改 sys_hba.conf

docker cp kingbase:/home/kingbase/userdata/data/sys_hba.conf /data/kingbase/sys_hba.conf

在这里插入图片描述
扩展(复制数据)进行备份

docker cp kingbase:/home/kingbase/userdata/data /data/kingbase/temp_data

数据库还原

docker cp /data/kingbase/temp_data kingbase:/home/kingbase/userdata/

创建备份脚本

vi  backup.sh
#!/bin/bash

# Step 1: 将数据从Docker容器复制到主机
docker cp kingbase:/home/kingbase/userdata/data /data/kingbase/temp_data

# Step 2: 以YYYYMMDDHHMMSS格式获取当前日期和时间
timestamp=$(date +"%Y%m%d%H%M%S")

# Step 3: 使用时间戳重命名复制的文件夹
new_folder="/data/kingbase/${timestamp}_data"
mv /data/kingbase/temp_data "$new_folder"

# Step 4: 压缩重命名的文件夹
tar -czvf "${new_folder}.tar.gz" -C "$(dirname "$new_folder")" "$(basename "$new_folder")"

# Optional: 压缩后删除原始文件夹
rm -rf "$new_folder"

echo "数据复制、重命名和压缩成功。"
chmod +x backup.sh

定时备份 crontab -e
每天凌晨两点备份

0 2 * * * /data/backup.sh

在人大金仓中安装postgis插件,安装此插件后可用于geoserver发布服务,QGIS连接等,并介绍如何用shp2pgsql进行shp数据的导入,让我们开始吧,下载postgis插件包,插件包与数据库小版本要对应,之前尝试过大版本相同小版本不同,结果失败了,所以要保证小版本也要一致,我这里共享的postgis插件是与我的人大金仓所匹配的,我这里是基于 KingbaseES V008R006C008B0014 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28), 64-bit
下载postgis插件包
链接: https://pan.baidu.com/s/1Rptt-6pGraKgiaqP6zLfGg?pwd=pib9 提取码: pib9
下载好之后将插件上传至服务器,postgis文件夹里有三个文件夹,分别是bin、lib、share,然后找到人大金仓的安装路径的Servser文件夹,可以看见Server下也有bin、lib和share,先把postgis插件下的bin和lib文件夹中的文件复制过来,注意,不是把bin、lib文件夹进行替换,是复制里面的文件到人大金仓的对应文件夹中,然后是share文件夹,这个比较特殊一点,share文件夹下还有一个extension文件夹,是将extension文件夹下的文件复制到人大金仓对应的文件夹下(人大金仓的share文件夹下也有一个extension文件夹)

都提示ok,那就是完成了,如果提示找不到文件之类的错误,最好重启数据库,或者重新复制文件进去

create extension postgis;
create extension postgis_raster;
create extension postgis_sfcgal;
create extension fuzzystrmatch;
create extension postgis_tiger_geocoder;
set exclude_reserved_words = 'level';
create extension postgis_topology;
create extension address_standardizer;
create extension address_standardizer_data_us;
select oid,proname,proargtypes,proisstrict from pg_proc where proname like '%addgeo%';

数据库导出备份dmp ,进入容器,dynamic_v3_last 为模式名字,

sys_dump -U SYSTEM -d dynamic_v3_last -Fc -f /home/kingbase/dynamic_v3_last_$(date +%Y%m%d).dmp

然后复制出来宿主机

docker cp kingbase:/home/kingbase/dynamic_v3_last_xxxx.dmp   /data/kingbase/temp_data

导入命令

sys_restore -U SYSTEM -d dynamic_v3_last -Fc -g public -G dynamic_v3_last /home/kingbase/dynamic_v3_last_20241026.dmp

说明
-U SYSTEM:指定数据库用户为 SYSTEM。
-d dynamic_v3_last:指定要导入的数据库。
-Fc:指定输入格式为自定义格式。
-g public:指定要导入的模式名称。
-G SYSTEM:指定要使用的角色名称(通常是导入数据时的用户)。
/home/kingbase/dynamic_v3_last_YYYYMMDD.dmp:指定备份文件路径和文件名,将 YYYYMMDD 替换为实际的日期。

备份
要使用 sys_dump 备份 dynamic_v3_last 数据库中的 public 模式,你可以使用以下命令格式。根据你的要求,以下是两个示例
输出到标准输出并重定向到文件

./sys_dump -U system -p 54321 -d dynamic_v3_last > dynamic_v3_last_backup.sql

直接将输出保存到指定文件

./sys_dump -U system -p 54321 -d dynamic_v3_last -f dynamic_v3_last_backup.sql

说明
-U system:指定连接用户为 system。
-p 54321:指定数据库连接的端口为 54321。
-d dynamic_v3_last:指定要备份的数据库为 dynamic_v3_last。

或 -f:将输出重定向到 dynamic_v3_last_backup.sql 文件。

要自定义导出文件格式为自定义格式(使用 -Fc 参数)并备份 dynamic_v3_last 数据库,你可以使用以下命令格式。这里有两个示例:
输出到标准输出并重定向到文件

./sys_dump -U system -p 54321 -d dynamic_v3_last -Fc > dynamic_v3_last_backup.dump

直接将输出保存到指定文件

./sys_dump -U system -p 54321 -d dynamic_v3_last -Fc -f dynamic_v3_last_backup.dump

说明
-U system:指定连接用户为 system。
-p 54321:指定数据库连接的端口为 54321。
-d dynamic_v3_last:指定要备份的数据库为 dynamic_v3_last。
-Fc:指定导出的文件格式为自定义格式。

或 -f:将输出重定向到 dynamic_v3_last_backup.dump 文件。
注意事项
使用自定义格式(-Fc)可以在后续恢复时提供更多灵活性,例如按模式或表恢复。
确保在执行命令时有足够的权限来访问和备份数据库。
确保目标文件名和路径有效,避免覆盖重要文件。

要快速导出 dynamic_v3_last 数据库,并使用并行处理,你可以使用 -Fd 参数。以下是如何使用这些参数的示例:

1:普通导出
将数据库中每张表导出为单独的文件,输出到指定目录:

./sys_dump -U system -p 54321 -d dynamic_v3_last -Fd -f /home/kingbase

并行导出
使用并行导出,指定并行进程的数量(例如,10个进程)

./sys_dump -U system -p 54321 -d dynamic_v3_last -Fd -j 10 -f /home/kingbase

说明
-U system:指定连接用户为 system。
-p 54321:指定数据库连接的端口为 54321。
-d dynamic_v3_last:指定要备份的数据库为 dynamic_v3_last。
-Fd:将数据库中每张表导出为一个文件。
-f /path/to/directory:指定导出文件的保存目录。
-j 10:使用10个并行进程进行导出。
注意事项
确保指定的导出目录存在且具有适当的写入权限。
使用并行导出可以显著提高备份速度,但也会增加系统资源的消耗。
在高负载情况下,建议监控系统性能,以避免对其他操作造成影响。

文章到此就结束了,欢迎大家使用人大金仓国产化数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

❀͜͡傀儡师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值