【Nacos】Nacos 2.2.4支持pg数据库适配改造

news2024/11/17 3:48:32

Nacos 2.2.4支持postgresql数据库
本文基源码:扩展插件包
网上资料都有,还是个人爬坑补充异常处理记录,以便后续升级改造有漏洞修复

下载源码

https://github.com/alibaba/nacos/releases
在这里插入图片描述

添加依赖

  • 根pom添加pg依赖
<postgresql.version>42.5.1</postgresql.version>
 
 <dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
      <version>${postgresql.version}</version>
</dependency>

在这里插入图片描述

  • config模块pom添加依赖
<dependency>
      <groupId>org.postgresql</groupId>
      <artifactId>postgresql</artifactId>
</dependency>
  • plugin模块

/plugin/datasource/src/main/resources/META-INF/services 下增加以下数据
com.alibaba.nacos.plugin.datasource.mapper.Mapper

com.alibaba.nacos.plugin.datasource.impl.postgresql.ConfigInfoAggrMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.ConfigInfoBetaMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.ConfigInfoMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.ConfigInfoTagMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.ConfigTagsRelationMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.HistoryConfigInfoMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.TenantInfoMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.TenantCapacityMapperByPostgreSql
com.alibaba.nacos.plugin.datasource.impl.postgresql.GroupCapacityMapperByPostgreSql
  • plugin增加 postgresql文件夹

com.alibaba.nacos.plugin.datasource.impl 模块下

  • plugin增加postgresql常量
    com.alibaba.nacos.plugin.datasource.constants.DataSourceConstant.java
 public static final String POSTGRESQL = "postgresql";
  • 根据SPI机制进行代码扩展
ConfigInfoAggrMapperByPostgreSql
ConfigInfoBetaMapperByPostgreSql
ConfigInfoMapperByPostgreSql
ConfigInfoTagMapperByPostgreSql
ConfigTagsRelationMapperByPostgreSql
HistoryConfigInfoMapperByPostgreSql
TenantInfoMapperByPostgreSql
TenantCapacityMapperByPostgreSql
GroupCapacityMapperByPostgreSql

编译打包源码

mvn -Prelease-nacos clean package install -Dmaven.test.skip=true
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
# mvn Failed during checkstyle execution: There are errors reported by Checkstyle
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U  -Dcheckstyle.skip

如果发现异常,单独排查处理(没有则忽略):
在这里插入图片描述
发现maven构建还是失败,如下:
在这里插入图片描述

问题:Cannot access mirror (https://maven.aliyun.com/nexus/content/groups/public) in offline mode and the artifact org.springframework.boot:spring-boot-maven-plugin:pom:2.6.14 has not been downloaded from it before.
解决:idea中maven项目下载依赖cannot resolve的问题
在这里插入图片描述

最终结果:
在这里插入图片描述
个人取名:2.2.4.IKPOEM传入私服中使用,和外部区分开来
在这里插入图片描述
在这里插入图片描述

配置文件修改

spring.datasource.platform=postgresql
db.num=1
db.url.0=jdbc:postgresql://127.0.0.1:5432/nacos_db?currentSchema=nacos_config&reWriteBatchedInserts=true&useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
db.user.0=postgres
db.password.0=123456
# 注意添加配置需要
db.pool.config.driverClassName=org.postgresql.Driver

jdbc:postgresql://127.0.0.1:5432/nacos_config?currentSchema=public&tcpKeepAlive=true&reWriteBatchedInserts=true

运行nacos

jar包位置,生成的jar包在nacos\distribution\target目录下
在这里插入图片描述

  • 运行
 .\startup.cmd -m standalone

在这里插入图片描述
访问:http://localhost:8848/nacos nacos/nacos
在这里插入图片描述

运行调试

console: com.alibaba.nacos.Nacos
VM options: -Dnacos.standalone=true 单击版本
在这里插入图片描述

异常登记

情况说明:本人使用nacos-mysql脚本同步到pg库当中,部分表字段类型调整,自增调整为seq,还有时间问题调整等

在这里插入图片描述

处理序列

添加序列:tenant_info_id_seq等多个seq

CREATE SEQUENCE "nacos_config"."config_info_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

SELECT setval('"nacos_config"."config_info_id_seq"', 1, false);

ALTER SEQUENCE "nacos_config"."config_info_id_seq"
OWNED BY "nacos_config"."config_info"."id";

ALTER SEQUENCE "nacos_config"."config_info_id_seq" OWNER TO "root";
-- nextval('nacos_config.config_info_id_seq'::regclass)


CREATE SEQUENCE "nacos_config"."tenant_capacity_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

SELECT setval('"nacos_config"."tenant_capacity_id_seq"', 1, false);

ALTER SEQUENCE "nacos_config"."tenant_capacity_id_seq"
OWNED BY "nacos_config"."tenant_capacity"."id";

ALTER SEQUENCE "nacos_config"."tenant_capacity_id_seq" OWNER TO "root";
-- nextval('nacos_config.tenant_capacity_id_seq'::regclass)

CREATE SEQUENCE "nacos_config"."group_capacity_id_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

SELECT setval('"nacos_config"."group_capacity_id_seq"', 1, false);

ALTER SEQUENCE "nacos_config"."group_capacity_id_seq"
OWNED BY "nacos_config"."group_capacity"."id";

ALTER SEQUENCE "nacos_config"."group_capacity_id_seq" OWNER TO "root";
-- nextval('nacos_config.group_capacity_id_seq'::regclass)


CREATE SEQUENCE "nacos_config"."his_config_info_nid_seq" 
INCREMENT 1
MINVALUE  1
MAXVALUE 9223372036854775807
START 1
CACHE 1;

SELECT setval('"nacos_config"."his_config_info_nid_seq"', 1, false);

ALTER SEQUENCE "nacos_config"."his_config_info_nid_seq"
OWNED BY "nacos_config"."his_config_info"."id";

ALTER SEQUENCE "nacos_config"."his_config_info_nid_seq" OWNER TO "root";
-- nextval('nacos_config.his_config_info_nid_seq'::regclass)

表添加nextval('ikbpx_config.tenant_info_id_seq'::regclass)
在这里插入图片描述
在这里插入图片描述

处理表时间

在这里插入图片描述

数据结构sql

pg

在这里插入图片描述

打包处理

Nacos Too many files with unapproved license:

[ERROR] Failed to execute goal org.apache.rat:apache-rat-plugin:0.12:check (default) on project nacos-datasource-plugin: Too many files with unapproved license: 1 See RAT report in: G:\nacos

原因:我添加了新的文档,代码路径 \plugin\datasource\target\rat.txt未知的Licenses,把新增的代码头上加上 Licenses 即可
在这里插入图片描述

打包私服

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy

报错原因:意思是在pom文件中缺少distributionManagement标签,或者缺少-DaltDeployementRepositoty,说的是缺少deploy的地址,maven不知道你想要deploy到哪里,在pom文件中增加如下信息,就发布成功了.

浏览地址

Nacos 2.2.0支持postgresql数据库
修改nacos源码编译打包
idea中maven项目下载依赖cannot resolve的问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/734623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跨平台轻量级RTSP服务模块设计思路及实现探讨

技术背景 为满足内网无纸化/电子教室等内网超低延迟需求&#xff0c;避免让用户配置单独的服务器&#xff0c;我们发布了轻量级RTSP服务模块&#xff0c;轻量级RTSP服务解决的核心痛点是避免用户或者开发者单独部署RTSP或者RTMP服务&#xff0c;实现本地的音视频数据&#xff…

(4)【轨迹优化篇】方法一:基于Frenet车道线坐标系,采用解耦采样五次多项式拟合进行局部规划

系列文章目录 提示&#xff1a;这里可以添加系列文章的所有文章的目录&#xff0c;目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录前言A、第一章&#xff1a;Frenet车道线坐标系介绍及坐标转换一、frenet坐标系介绍1.Frenet坐标的定义2.ST图&#xff08;纵向速度…

【ARM Coresight 系列文章 3 - ARM Coresight 组件 DAP(Debug Access Port) 介绍】

文章目录 1.1 Debug Access Port1.2 Access Port1.2.1 IDR 寄存器 1.3 Mem-APs 介绍1.3.1 Debug 寄存器访问模型1.3.2 APs 中寄存器的介绍 1.1 Debug Access Port 外部 Debugger(DS-5/Trace32) 会通过JTAG接口或者SWD接口和DAP相连&#xff1a; JITAG 一般是5个pin&#xff1…

JAVA每日一练(1)

【程序1】 题目&#xff1a;古典问题&#xff1a;有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;小兔子长到第三个月后每个月又生一对兔子&#xff0c;假如兔子都不死&#xff0c;问每个月的兔子对数为多少&#xff1f; import java.util.Scanner;/*…

【ElasticSearch】数据聚合语法与Java实现

文章目录 1、聚合的分类2、DSL实现bucket聚合3、DSL实现Metrics 聚合4、RestClient实现聚合5、需求&#xff1a;返回过滤条件的信息6、带过滤条件的聚合 1、聚合的分类 聚合&#xff08;aggregations&#xff09;可以实现对文档数据的统计、分析、运算。&#xff08;类比MySQL…

如何记牢托福口语考试的关键词?

一般情况下&#xff0c;托福独立口语一类问题是自由回答间题(Free-choice Response)&#xff0c;如&#xff1a;If you could have any job in the world, what would it be? Use details to support your. response;另一类是选择类问题(Paired-choice Response)&#xff0c;如…

BERT论文解读及实现(一)

BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 1 论文解读 1.1 模型概览 There are two steps in our framework: pre-training and fine-tuning. bert由预训练模型微调模型组成。 ① pre-training, the model is trained on unlabele…

前端Vue入门-day01

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 Vue 快速上手 Vue 概念 创建实例 插值表达式 响应式特性 开发者工具 Vue 指令 v-show v-if …

【Spring Boot】第一个Spring Boot项目:helloworld

第一个Spring Boot项目&#xff1a;helloworld 本节从简单的helloworld程序开始介绍创建Spring Boot项目的方法和流程&#xff0c;以及Spring Boot项目结构&#xff0c;最后介绍项目中非常重要的pom.xml文件。 1.创建Spring Boot项目 有两种方式来构建Spring Boot项目的基础…

【1++的C++初阶】之string

&#x1f44d;作者主页&#xff1a;进击的1 &#x1f929; 专栏链接&#xff1a;【1的C初阶】 文章目录 一&#xff0c;浅谈string类二&#xff0c;string 类常用接口2.1 string的构造2.2 string类对象的容量操作2.3 string类对象的访问及遍历操作2.4 string类对象的修改操作2.…

Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘 文章目录 Python 有趣的模块之pynupt ——通过pynput控制鼠标和键盘1️⃣简介2️⃣鼠标控制与移动3️⃣键盘控制与输入4️⃣结语&#x1f4e2; 1️⃣简介 &#x1f680;&#x1f680;&#x1f680;学会控制鼠标和键盘是…

Mongodb连接数据库

1.初始化 npm init 2.安装mongoose npm i mongoose 3.导入mongoose const mongooserequire("mongoose") 4.连接mongodb服务 mongoose.connect("mongodb://127.0.0.1:27017/user") 说明&#xff1a;mongodb是协议,user是数据库&#xff0c;如果没有会自动创…

经OPA运放后,读取电压出错

问题&#xff1a; 在焊接完两块板子上传程序测试时&#xff0c;程序上传完成&#xff0c;有一块板子在使用OPA读取电压时&#xff0c;在未插入电阻情况下&#xff0c;电压读取是正确的&#xff0c;在插入50K电压后&#xff0c;电压值应该是之前的两倍&#xff0c;但是电压变化…

unittest单元测试2

目录 unittest框架解析 构建测试套件 用例的执行顺序 unittest断言 HTML报告生成 异常捕捉与错误截图 数据驱动 &#x1f381;更多干货 完整版文档下载方式&#xff1a; unittest框架解析 unittest 是python 的单元测试框架&#xff0c;unittest 单元测试提供了创建测…

怎么把CAJ转换成PDF文件格式?分享这两个方法!

随着互联网的发展&#xff0c;中国知网(CNKI)已成为许多学术研究人员和学生们获取文献资料的重要来源。在CNKI上&#xff0c;常见的文件格式是CAJ&#xff08;China Academic Journals&#xff09;。然而&#xff0c;由于个人喜好或特定需求&#xff0c;我们有时会希望将这些CA…

PDF文档转化为HTML网页格式怎么操作?分享这三个方法给大家!

PDF文档作为一种常见的文档格式&#xff0c;广泛应用于各个领域。然而&#xff0c;如果您想将PDF文档直接发布到网站上&#xff0c;或是想在网页上进行展示&#xff0c;您可能需要将PDF转化为HTML格式。在此&#xff0c;我为大家介绍三种将PDF转化为HTML格式的方法。 方法一&am…

mysql语句练习题,创建表create ,枚举中文字符集设置,修改(update)

作业&#xff1a; 1.创建表&#xff1a; 创建员工表employee&#xff0c;字段如下&#xff1a; id&#xff08;员工编号&#xff09;&#xff0c;name&#xff08;员工名字&#xff09;&#xff0c;gender&#xff08;员工性别&#xff09;&#xff0c;salary&#xff08;员工薪…

d3dx9_43.dll丢失怎么解决(分享三个解决方法)

d3dx9_43.dll是一个Microsoft DirectX的动态链接库文件&#xff0c;它包含了一系列用于图形、音频和输入的功能和接口。它是DirectX 9的一部分&#xff0c;用于提供游戏和其他图形应用程序所需的图形和声音效果。如果计算机中d3dx9_43.dll丢失&#xff0c;会造成很多游戏无法打…

opencv图片根据规则改变颜色

解析 1. 读入图片 2.通道分离 3.像素值在【100&#xff0c;200】之间&#xff0c;赋值128。大于200赋值255&#xff0c;小于100赋值0。 源码 import cv2 img_raw_path"past/unet-test_result0-0-1-0.png" img_rawcv2.imread(img_raw_path) (r,g,b)cv2.split(img_…

运动控制介绍

运动控制介绍 1 介绍1.1 概述1.2 运动控制的基本架构1.3 常见的控制功能1.4 运动控制研究的问题分类位置变化问题周期式旋转速度变化问题 1.5 知识体系1.6 路径规划 和 轨迹规划区别与联系1.7 运动控制系统 2 《运动控制系统》[班华 李长友 主编] 摘要1 绪论1.1 运动控制研究的…