远程连接设置
fins / -name sys_hba.conf
找到sys_hba文件,将加密方式改为trust(否则无法远程连接,我使用navicat连接数据库,提示无法连接,问金仓技术人员,说是工具暂时不支持sm3/sm4,需要把sm3/sm4全改为trust,然后重启数据库)。
数据库重启
切换kingbase用户
su kingbase
完整的停止命令
/usr/local/kingbase/KESRealPro/V008R006C008B0014/Server/bin/sys_ctl -D /usr/local/kingbase/data/ stop
完整的启动命令
/usr/local/kingbase/KESRealPro/V008R006C008B0014/Server/bin/sys_ctl -D /usr/local/kingbase/data/ start
其中
-D前面是数据库安装路径
/usr/local/kingbase/KESRealPro/V008R006C008B0014/Server/bin/sys_ctl
-D后面是数据路径
/usr/local/kingbase/data/
安装gis扩展
根据官方解释,人大金仓数据库和gis扩展有严格的版本关系,如果需要安装gis扩展,直接通过官方渠道获取扩展文件,建议不要浪费时间折腾自己)
官方提供的gis扩展包有bin,lib,share/extension三个目录
将gis扩展文件拷贝至数据库依赖目录下
cp -r /home/kingbasesoft/postgis-3.1.2/bin/* /usr/local/kingbase/KESRealPro/V008R006C008B0014/Server/bin
注:将/home/kingbasesoft/postgis-3.1.2/bin/目录下的所有文件拷贝至/usr/local/kingbase/KESRealPro/V008R006C008B0014/Server/bin目录下。
拷贝完成后,重启数据库。然后开始创建GIS扩展。然后出现了以下问题。
提示undefundefined symbol: GEOSUnaryUnionPrec
经过检查发现,当电脑上有多个geos版本时,需要给kingbase做一下环境变量配置,否则在创建gis扩展的时候会出现无法创建扩展的情况。
通过设置环境变量指定使用的geos版本(推荐):
单独设置kingbase用户环境变量LD_LIBRARY_PATH指定使用跟数据库PostGIS版本匹配的geos:
在.bashrc或者.bash_profile,添加以下环境变量保存退出
vim .bash_profile
将以下内容添加到环境变量配置文件中(记得后面的路径根据自己的安装路径进行调整)。
export LD_LIBRARY_PATH=/usr/local/kingbase/KESRealPro/V008R006C008B0014/Server/lib
添加LD_LIBRARY_PATH环境变量后执行以下命令:
source .bash_profile
--然后登录数据库再次执行
--此时执行以下命令创建成功
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION postgis_sfcgal;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION address_standardizer;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION postgis_tiger_geocoder;
如果还提示无法创建gis扩展:
到安装目录查一下postpis-3.so的链接位置是否正确
1、进入依赖目录
cd /usr/local/kingbase/KESRealPro/V008R006C008B0014/Server/lib
2、ldd依赖文件
ldd postgis-3.so
根据控制台面板显示,链接成功。但是仍然无法创建gis扩展。
因为可以确定设置完环境变量之后,也做了重载配置操作。
所以只能放大招了,重启服务器,有时候重启服务器真的能解决80%的问题,还是那句不要折腾自己。
果然重启了服务器后,再创建gis扩展,成功。
数据迁移
可以使用pgsql自带的pg.dump命令行工具,进行数据的备份。
参考资料如下:pg数据库迁移进人大金仓 (volcengine.com)
pg_dump -U username -h hostname -p port dbname > dbname.sql
username :源数据库用户名
hostname :源数据库访问地址
port:源数据库端口
dbname:源数据库名称
dbname.sql:生成的备份文件名称
数据备份操作步骤:
到pg_pg_dump目录下,打开控制台,如下图。
然后输入备份命令:pg_dump -U postgres -h 127.0.0.1 -p 5432 zlsk_pro_shgymy > zlsk_pro_shgymy.sql
在控制台输入口令,即数据库密码。完成备份。此处没有提示。当有新的命令行即备份完毕。此时可以到pgsql的安装目录下查看是否生成自定义的备份文件。
比如示例中的备份文件被我命名为zlsk_pro_shgymy.sql。此时如果pgsql的安装目录下有zlsk_pro_shgymy.sql文件,即备份成功。
然后到kingbase安装目录找到数据库开发管理工具
一般在安装目录的ClientTools/guitools/KStudio/KStudio下:
然后通过图形化界面做数据恢复操作:
1、选择逻辑还原右边出现数据库还原界面;
2、点击浏览按钮,在服务器上选择数据库备份文件。备份文件有dmp和sql两种格式,根据自己的备份文件格式自主在右下角的下拉框筛选;
3、选择想要恢复的目标数据库,
4、点击右下角还原按钮进行还原;
5、使用qgis验证备份的数据库是否为空间数据库。