# nacos-server-pg **Repository Path**: liuli-ke/nacos-server-pg ## Basic Information - **Project Name**: nacos-server-pg - **Description**: Nacos2.2.0使用PostgreSQL数据源插件存储数据 - **Primary Language**: Shell - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-11-07 - **Last Updated**: 2025-11-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: nacos, nacos-server ## README # Nacos2.2.0 使用PostgreSQL数据源插件存储数据 数据源插件开源仓库地址: [nacos-postgresql-plugin-1.0.0.jar && nacos-pg.sql](https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins) [nacos-postgresql.jar](https://gitee.com/zhc-gitee/nacos-postgresql1/blob/master/plugins/nacos-postgresql.jar) ## PG库初始化 在PG创建nacos的数据库,并初始化 导入Nacos的PostgreSQL数据库的脚本文件:[nacos-pg.sql](https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins/releases/download/1.0.0/nacos-pg.sql) > 项目内的数据库的脚本文件:[nacos-pg.sql](https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins/blob/main/nacos-datasource-plugin-ext/nacos-postgresql-datasource-plugin-ext/src/main/resources/schema/nacos-pg.sql) ## 引入插件 > 这种方式只适用于官方原始包 下载PostgreSQL的数据源插件项目源码进行打包编译或者使用已经提前编译好的数据源插件jar包:[nacos-postgresql-plugin-1.0.0.jar](https://github.com/wuchubuzai2018/nacos-datasource-extend-plugins/releases/download/1.0.0/nacos-postgresql-plugin-1.0.0.jar) 将该jar包放入到Nacos的plugins目录下,没有该目录可以新创建,放到该目录下以后,Nacos的启动脚本中loader.path参数将会将在外部jar包文件到Nacos的环境中,如下所示: ``` nacos-server-2.2.0/nacos ├── LICENSE ├── NOTICE ├── bin ├── conf │   ├── application.properties │   └── nacos-pg.sql ├── plugins │   └── nacos-postgresql-plugin-1.0.0.jar # 可以替换成nacos-postgresql.jar └── target └── nacos-server.jar ``` 修改Nacos的conf文件夹application.properties文件,增加postgresql的连接参数信息 ```properties spring.datasource.platform=postgresql db.num=1 db.url.0=jdbc:postgresql://127.0.0.1:5432/nacos?currentSchema=public&tcpKeepAlive=true&reWriteBatchedInserts=true&ApplicationName=nacos db.user=nacos db.password=nacos db.pool.config.driverClassName=org.postgresql.Driver ``` ## 启动测试 上面的基本配置完成后,下载Nacos的发布格式的软件包包,然后使用如下命令启动nacos: bin/startup.sh -m standalone 如果使用该插件启动没有报错,则代表启动成功 2、基本测试验证,登录到nacos的控制台,然后保存配置信息,看看数据库中是否可以查询到,后台添加一个pg的配置,然后再数据库中,可以看到该数据 ## 容器增加插件 > 官方镜像虽然是用的官方包进行构建的,但是启动脚本有改动,因此直接建立plugins放进去不一定可用,镜像【nacos/nacos-server:v2.2.0-slim】经过尝试不行,容器这块可以参考以下方式 ```bash # 基础镜像 nacos/nacos-server:v2.2.0-slim ``` 基础镜像添加plugins目录,放入nacos-postgresql-plugin-1.0.0.jar并没有用,经过尝试在原始nacos-server.jar包的lib目录无压缩添加插件也可以使用,因此最终的Dockerfile ```dockerfile FROM nacos/nacos-server:v2.2.0-slim COPY nacos-pg.sql /home/nacos/conf/nacos-pg.sql COPY application.properties /home/nacos/conf/application.properties COPY nacos-server.jar /home/nacos/target/nacos-server.jar # nacos-postgresql-plugin-1.0.0.jar 无压缩放入nacos-server.jar的lib目录 ``` > nacos-server.jar由于文件大于100M,上传不了,实际就是将插件放到了jar包的BOOT-INF\lib\目录下了,如果需要在:[nacos-server-pg.7z](https://gitee.com/liuli-ke/nacos-server-pg/releases/download/2.2.0/nacos-server-pg.7z),下载然后解压使用 或者解压项目内的[nacos-server.7z](nacos-server.7z)文件 改造application.properties,替换或增加以下配置 ```properties spring.datasource.platform=postgresql db.num=${PG_DATABASE_NUM:1} db.url.0=jdbc:postgresql://${PG_SERVICE_HOST}:${PG_SERVICE_PORT:5432}/${PG_SERVICE_DB_NAME}?currentSchema=${PG_SERVICE_SCHEMA:nacos}&${PG_SERVICE_DB_PARAM:tcpKeepAlive=true&reWriteBatchedInserts=true&ApplicationName=nacos} db.user.0=${PG_SERVICE_USER} db.password.0=${PG_SERVICE_PASSWORD} db.pool.config.driverClassName=org.postgresql.Driver ``` 新增或变更出的公共属性 | 名称 | 描述 | 选择 | | :-----------------: | :--------------: | :----------------------------------------------------------: | | PG_DATABASE_NUM | 数据库编号 | 默认值:1 | | PG_SERVICE_HOST | PG 数据库地址 | | | PG_SERVICE_PORT | PG 数据库端口 | 默认:5432 | | PG_SERVICE_DB_NAME | PG 数据库名称 | | | PG_SERVICE_SCHEMA | PG 模式名称 | 默认:nacos | | PG_SERVICE_DB_PARAM | PG 数据库url参数 | 默认值:tcpKeepAlive=true&reWriteBatchedInserts=true&ApplicationName=nacos | | PG_SERVICE_USER | PG 数据库用户名 | | | PG_SERVICE_PASSWORD | PG 数据库密码 | | ## 问题 ### 配置创建/导入失败? 1、调整his_config_info、his_config_info的encrypted_data_key字段配置 调整his_config_info的encrypted_data_key字段为【不是null】,如下 ![image-20241107100338107](README.assets/image-20241107100338107.png) 调整his_config_info的config_info字段为【不是null】,如下 ![image-20241107100444451](README.assets/image-20241107100444451.png) 也可以 ```sql ALTER TABLE config_info ADD COLUMN encrypted_data_key text; ALTER TABLE config_info_beta ADD COLUMN encrypted_data_key text; ALTER TABLE his_config_info ADD COLUMN encrypted_data_key text; ``` 2、检查需要导入的配置文件是不是大于1M了