苍穹的垂直分库、水平分表的架构,使得开发者和用户无法直接通过SQL进行跨库、跨表的查询。
当需要进行跨库查询时,目前只能通过数据库的特性如PG的FDW扩展等实现。
实现方式参考大佬发布的帖子PostgresSQL 数据库 【跨库】 功能发布贴
本贴仅记录本人部署过程中遇到问题及处理方式,所有内容仅供参考,欢迎各位大佬指教补充。
准备信息:
MC、GPASS、数据库连接,数据库服务器连接
操作步骤:
1. MC升级补丁:发布贴附件
2. Gpass基础服务节点配置CUSLIBS:xsw_custom_pg
3. 新增分库作为跨库主库,从而不影响正常业务
3.1在环境的mc中新建分库标识。我们这里新建了一个test的分库标识。
3.2在环境的mc中选择你需要的数据中心,关闭启用按钮,并点击保存,方便后续修改数据中心。
3.3在环境的mc中新建你的应用的分库信息,我们这里新建了测试库的实例为next_gjtest。然后提交建库并保存。(这里有一个很重要的经验点,提交建库的时候,后面的状态标识只有你新增的分库才能是黄色感叹号,其他的应该是绿色的,如果其他的也是黄色的,千万不要点击提交建库,否则你所有的数据库都可能被重新初始化!!!)
3.4在环境的mc中启用该数据中心,并保存
3.5在环境的mc中发布集群
4. 系统服务云-数据库跨库管理-PG数据库跨库管理(如无法新增,可到开发平台预览编辑界面新增一条记录,再修改)(主数据库填写第3步3.1中新创建的分库标识);维护完信息依次点击‘保存’、‘创建数据库FDW扩展’(数据库实例名参考3.3图示数据库实例名)
5.跨库执行成功
常见问题:
1.点击创建数据库FDW扩展,如果有这个错误,就用root登录pg数据库安装服务器;linux服务器,执行 ln -s /var/postgresql/soft/pg12.8/lib/libpq.so.5 /usr/lib64/libpq.so.5
2.如点击‘创建数据库FDW扩展’报错,在主数据库执行建表语句:create table pg_viewstempviews as select * from pg_views where 1=2
3.报错如图,跨库插件139行报错
3.1 数据库工具执行报错行语句
/*dialect*/ import foreign schema public from server sys into sys
3.2 经上分析,参考处理:password authentication failed for user