# nacos-datasource-support **Repository Path**: wanqiu_share/nacos-datasource-support ## Basic Information - **Project Name**: nacos-datasource-support - **Description**: 基于nacos的源码,对nacos支持的数据库datasource进行改造和拓展支持support,使大家可以更好使用和支持更多的数据库。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2024-12-04 - **Last Updated**: 2025-09-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: nacos, nacos数据库, datasource, Support ## README # nacos-datasource-support #### 介绍 基于nacos的源码,对nacos支持的数据库进行改造和拓展,使大家可以更好使用和支持更多的数据库 #### 版本说明 1. nacos版本:2.4.2 2. jdk版本 1.8 #### 配置账号密码支持加解密 1. 让配置文件的数据库账号密码支持enc加密 2. pom.xml文件添加加密工具支持: com.github.ulisesbocchio jasypt-spring-boot ${jasypt.version} 3. 启动类添加开启注解: [console]模块下的Nacos.java启动类上添加注解: @EnableEncryptableProperties 4. 配置文件添加密钥: [distribution]模块下的conf下的application.properties文件,添加密钥: jasypt.encryptor.password=wanqiu 5. 配置加密账号密码示例: [distribution]模块下的conf下的application.properties文件,修改数据库配置: ```properties db.user.0=ENC(0oeFzInq+E8h3c/B9n4/RQ==) db.password.0=ENC(9fYw0apKb5XMmpplq5fmwwg0q7SxnPsT) ``` 6. 修改配置[com.alibaba.nacos.plugin.datasource.mapper.Mapper](plugin-datasource-sqlserver-support/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper) ```xml com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoAggrMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoBetaMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigInfoTagMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.ConfigTagsRelationMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.HistoryConfigInfoMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.TenantInfoMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.TenantCapacityMapperBySqlserver com.alibaba.nacos.plugin.datasource.impl.sqlserver.GroupCapacityMapperBySqlserver ``` #### 数据库支持 1. 默认支持derby 2. 默认支持mysql 3. 开发支持sqlserver 4. 开发支持oracle #### sqlserver使用说明 1. 最外层pom.xml添加驱动: ```xml com.microsoft.sqlserver mssql-jdbc 12.6.0.jre8 ``` 2. [persistence]模块的pom文件添加驱动使用 ```xml com.microsoft.sqlserver mssql-jdbc ``` 3. 将[plugin-datasource-sqlserver-plugin]代码复制到plugin下对应的路径下更新 4. 修改[config]模块下的TenantCapacityPersistService.java文件 ```java public TenantCapacity getTenantCapacity(String tenantId) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); String sql = tenantCapacityMapper.select( Arrays.asList("id", "quota", "`usage`", "`max_size`", "max_aggr_count", "max_aggr_size", "tenant_id"), Collections.singletonList("tenant_id")); if (DataSourceConstant.SQLSERVER.equals(dataSourceService.getDataSourceType())) { sql = sql.replaceAll("`(\\w*)`", "[$1]"); } List list = jdbcTemplate.query(sql, new Object[] {tenantId}, TENANT_CAPACITY_ROW_MAPPER); if (list.isEmpty()) { return null; } return list.get(0); } ``` 5. 修改[distribution]里面的数据库驱动: ```properties spring.datasource.platform=sqlserver db.pool.config.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver ``` 6. 修改配置 #### oracle使用说明 1. 最外层pom.xml添加驱动: ```xml com.oracle.database.jdbc ojdbc8 21.5.0.0 ``` 2. [persistence]模块的pom文件添加驱动使用 ```xml com.oracle.database.jdbc ojdbc8 ``` 3. 将[plugin-datasource-oracle-support]代码复制到plugin下对应的路径下更新 4. 修改[config]模块下的TenantCapacityPersistService.java文件 ```java public TenantCapacity getTenantCapacity(String tenantId) { TenantCapacityMapper tenantCapacityMapper = mapperManager.findMapper(dataSourceService.getDataSourceType(), TableConstant.TENANT_CAPACITY); String sql = tenantCapacityMapper.select( Arrays.asList("id", "quota", "`usage`", "`max_size`", "max_aggr_count", "max_aggr_size", "tenant_id"), Collections.singletonList("tenant_id")); if (DataSourceConstant.ORACLE.equals(dataSourceService.getDataSourceType())) { sql = sql.replaceAll("`(\\w*)`", "$1"); } List list = jdbcTemplate.query(sql, new Object[] {tenantId}, TENANT_CAPACITY_ROW_MAPPER); if (list.isEmpty()) { return null; } return list.get(0); } ``` 5. 修改[distribution]里面的数据库驱动: ```properties spring.datasource.platform=oracle db.pool.config.driverClassName=oracle.jdbc.OracleDriver ``` 6. 修改配置[com.alibaba.nacos.plugin.datasource.mapper.Mapper](plugin-datasource-oracle-support/src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper) ```xml com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoAggrMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoBetaMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigInfoTagMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.ConfigTagsRelationMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.HistoryConfigInfoMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.TenantInfoMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.TenantCapacityMapperByOracle com.alibaba.nacos.plugin.datasource.impl.oracle.GroupCapacityMapperByOracles ``` #### sqlserver与oracle都支持 1. 四种数据库都支持,可以相互切换