人大金仓最大连接数的修改跟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个并行进程进行导出。
注意事项
确保指定的导出目录存在且具有适当的写入权限。
使用并行导出可以显著提高备份速度,但也会增加系统资源的消耗。
在高负载情况下,建议监控系统性能,以避免对其他操作造成影响。
文章到此就结束了,欢迎大家使用人大金仓国产化数据库。