nacos適配達夢數據庫
點擊這里直接看作者開源的成品
遇到問題可在評論區給我留言
加微信:pky86676022 有償提供技術支持(請說明來意)
從2.2.0版本開始,nacos可通過SPI機制注入多數據源實現插件,并在引入對應數據源實現后,便可在Nacos啟動時通過讀取application.properties配置文件中spring.datasource.platform配置項選擇加載對應多數據源插件。
下面我來演示通過多數據源插件實現nacos適配達夢數據庫
一、準備工作
首先要下載nacos源碼,nacos-plugin源碼,還要準備好達夢數據庫環境。
這里我采用nacos2.3.2的源碼,下載路徑https://github.com/alibaba/nacos/archive/refs/tags/2.3.2.zip
nacos插件源碼,下載路徑https://github.com/pkyit/nacos-plugin/archive/refs/heads/develop.zip
將下載的2個壓縮包解壓縮并用idea打開:

在達夢數據庫中新建一個名叫NACOS的數據庫,然后在NACOS數據庫下創建如下表:(注意最后有個commit提交事務)
CREATE TABLE "NACOS"."USERS"
(
"USERNAME" VARCHAR(50) NOT NULL,
"PASSWORD" VARCHAR(500) NOT NULL,
"ENABLED" TINYINT NOT NULL
);
CREATE TABLE "NACOS"."TENANT_INFO"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"KP" VARCHAR(128) NOT NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NULL,
"TENANT_NAME" VARCHAR(128) DEFAULT ''
NULL,
"TENANT_DESC" VARCHAR(256) NULL,
"CREATE_SOURCE" VARCHAR(32) NULL,
"GMT_CREATE" BIGINT NOT NULL,
"GMT_MODIFIED" BIGINT NOT NULL
);
CREATE TABLE "NACOS"."TENANT_CAPACITY"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NOT NULL,
"QUOTA" BIGINT DEFAULT 0
NOT NULL,
"USAGE" BIGINT DEFAULT 0
NOT NULL,
"MAX_SIZE" BIGINT DEFAULT 0
NOT NULL,
"MAX_AGGR_COUNT" BIGINT DEFAULT 0
NOT NULL,
"MAX_AGGR_SIZE" BIGINT DEFAULT 0
NOT NULL,
"MAX_HISTORY_COUNT" BIGINT DEFAULT 0
NOT NULL,
"GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL
);
CREATE TABLE "NACOS"."ROLES"
(
"USERNAME" VARCHAR(50) NOT NULL,
"ROLE" VARCHAR(50) NOT NULL
);
CREATE TABLE "NACOS"."PERMISSIONS"
(
"ROLE" VARCHAR(50) NOT NULL,
"RESOURCE" VARCHAR(255) NOT NULL,
"ACTION" VARCHAR(8) NOT NULL
);
CREATE TABLE "NACOS"."HIS_CONFIG_INFO"
(
"ID" DECIMAL(20, 0) NOT NULL,
"NID" BIGINT IDENTITY(1,1) NOT NULL,
"DATA_ID" VARCHAR(255) NOT NULL,
"GROUP_ID" VARCHAR(128) NOT NULL,
"APP_NAME" VARCHAR(128) NULL,
"CONTENT" CLOB NOT NULL,
"MD5" VARCHAR(32) NULL,
"GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"SRC_USER" TEXT NULL,
"SRC_IP" VARCHAR(50) NULL,
"OP_TYPE" CHAR(10) NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NULL,
"ENCRYPTED_DATA_KEY" TEXT NOT NULL
);
CREATE TABLE "NACOS"."GROUP_CAPACITY"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"GROUP_ID" VARCHAR(128) DEFAULT ''
NOT NULL,
"QUOTA" BIGINT DEFAULT 0
NOT NULL,
"USAGE" BIGINT DEFAULT 0
NOT NULL,
"MAX_SIZE" BIGINT DEFAULT 0
NOT NULL,
"MAX_AGGR_COUNT" BIGINT DEFAULT 0
NOT NULL,
"MAX_AGGR_SIZE" BIGINT DEFAULT 0
NOT NULL,
"MAX_HISTORY_COUNT" BIGINT DEFAULT 0
NOT NULL,
"GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL
);
CREATE TABLE "NACOS"."CONFIG_TAGS_RELATION"
(
"ID" BIGINT NOT NULL,
"TAG_NAME" VARCHAR(128) NOT NULL,
"TAG_TYPE" VARCHAR(64) NULL,
"DATA_ID" VARCHAR(255) NOT NULL,
"GROUP_ID" VARCHAR(128) NOT NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NULL,
"NID" BIGINT IDENTITY(1,1) NOT NULL
);
CREATE TABLE "NACOS"."CONFIG_INFO_TAG"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"DATA_ID" VARCHAR(255) NOT NULL,
"GROUP_ID" VARCHAR(128) NOT NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NULL,
"TAG_ID" VARCHAR(128) NOT NULL,
"APP_NAME" VARCHAR(128) NULL,
"CONTENT" CLOB NOT NULL,
"MD5" VARCHAR(32) NULL,
"GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"SRC_USER" TEXT NULL,
"SRC_IP" VARCHAR(50) NULL
);
CREATE TABLE "NACOS"."CONFIG_INFO_BETA"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"DATA_ID" VARCHAR(255) NOT NULL,
"GROUP_ID" VARCHAR(128) NOT NULL,
"APP_NAME" VARCHAR(128) NULL,
"CONTENT" CLOB NOT NULL,
"BETA_IPS" VARCHAR(1024) NULL,
"MD5" VARCHAR(32) NULL,
"GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"SRC_USER" TEXT NULL,
"SRC_IP" VARCHAR(50) NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NULL,
"ENCRYPTED_DATA_KEY" TEXT NOT NULL
);
CREATE TABLE "NACOS"."CONFIG_INFO_AGGR"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"DATA_ID" VARCHAR(255) NOT NULL,
"GROUP_ID" VARCHAR(128) NOT NULL,
"DATUM_ID" VARCHAR(255) NOT NULL,
"CONTENT" CLOB NOT NULL,
"GMT_MODIFIED" TIMESTAMP(0) NOT NULL,
"APP_NAME" VARCHAR(128) NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NULL
);
CREATE TABLE "NACOS"."CONFIG_INFO"
(
"ID" BIGINT IDENTITY(1,1) NOT NULL,
"DATA_ID" VARCHAR(255) NOT NULL,
"GROUP_ID" VARCHAR(128) NULL,
"CONTENT" CLOB NOT NULL,
"MD5" VARCHAR(32) NULL,
"GMT_CREATE" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
NOT NULL,
"SRC_USER" TEXT NULL,
"SRC_IP" VARCHAR(50) NULL,
"APP_NAME" VARCHAR(128) NULL,
"TENANT_ID" VARCHAR(128) DEFAULT ''
NULL,
"C_DESC" VARCHAR(256) NULL,
"C_USE" VARCHAR(64) NULL,
"EFFECT" VARCHAR(64) NULL,
"TYPE" VARCHAR(64) NULL,
"C_SCHEMA" TEXT NULL,
"ENCRYPTED_DATA_KEY" TEXT NOT NULL
);
ALTER TABLE "NACOS"."USERS"
ADD CONSTRAINT PRIMARY KEY ("USERNAME");
ALTER TABLE "NACOS"."TENANT_INFO"
ADD CONSTRAINT PRIMARY KEY ("ID");
ALTER TABLE "NACOS"."TENANT_INFO"
ADD CONSTRAINT "UK_TENANT_INFO_KPTENANTID" UNIQUE ("KP", "TENANT_ID");
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CONSTRAINT PRIMARY KEY ("ID");
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CONSTRAINT "UK_TENANT_ID" UNIQUE ("TENANT_ID");
ALTER TABLE "NACOS"."ROLES"
ADD CONSTRAINT "IDX_USER_ROLE" UNIQUE ("USERNAME", "ROLE");
ALTER TABLE "NACOS"."PERMISSIONS"
ADD CONSTRAINT "UK_ROLE_PERMISSION" UNIQUE ("ROLE", "RESOURCE", "ACTION");
ALTER TABLE "NACOS"."HIS_CONFIG_INFO"
ADD CONSTRAINT PRIMARY KEY ("NID");
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CONSTRAINT PRIMARY KEY ("ID");
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CONSTRAINT "UK_GROUP_ID" UNIQUE ("GROUP_ID");
ALTER TABLE "NACOS"."CONFIG_TAGS_RELATION"
ADD CONSTRAINT PRIMARY KEY ("NID");
ALTER TABLE "NACOS"."CONFIG_TAGS_RELATION"
ADD CONSTRAINT "UK_CONFIGTAGRELATION_CONFIGIDTAG" UNIQUE ("ID", "TAG_NAME", "TAG_TYPE");
ALTER TABLE "NACOS"."CONFIG_INFO_TAG"
ADD CONSTRAINT PRIMARY KEY ("ID");
ALTER TABLE "NACOS"."CONFIG_INFO_TAG"
ADD CONSTRAINT "UK_CONFIGINFOTAG_DATAGROUPTENANTTAG" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID", "TAG_ID");
ALTER TABLE "NACOS"."CONFIG_INFO_BETA"
ADD CONSTRAINT PRIMARY KEY ("ID");
ALTER TABLE "NACOS"."CONFIG_INFO_BETA"
ADD CONSTRAINT "UK_CONFIGINFOBETA_DATAGROUPTENANT" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID");
ALTER TABLE "NACOS"."CONFIG_INFO_AGGR"
ADD CONSTRAINT PRIMARY KEY ("ID");
ALTER TABLE "NACOS"."CONFIG_INFO_AGGR"
ADD CONSTRAINT "UK_CONFIGINFOAGGR_DATAGROUPTENANTDATUM" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID", "DATUM_ID");
ALTER TABLE "NACOS"."CONFIG_INFO"
ADD CONSTRAINT PRIMARY KEY ("ID");
ALTER TABLE "NACOS"."CONFIG_INFO"
ADD CONSTRAINT "UK_CONFIGINFO_DATAGROUPTENANT" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID");
CREATE INDEX "IDX_TENANT_ID"
ON "NACOS"."TENANT_INFO" ("TENANT_ID");
COMMENT
ON TABLE "NACOS"."TENANT_INFO" IS 'tenant_info';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."ID" IS 'id';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."KP" IS 'kp';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."TENANT_ID" IS 'tenant_id';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."TENANT_NAME" IS 'tenant_name';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."TENANT_DESC" IS 'tenant_desc';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."CREATE_SOURCE" IS 'create_source';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."GMT_CREATE" IS '創建時間';
COMMENT
ON COLUMN "NACOS"."TENANT_INFO"."GMT_MODIFIED" IS '修改時間';
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CHECK ("QUOTA" >= 0) ENABLE;
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CHECK ("MAX_HISTORY_COUNT" >= 0) ENABLE;
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CHECK ("MAX_AGGR_SIZE" >= 0) ENABLE;
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CHECK ("MAX_AGGR_COUNT" >= 0) ENABLE;
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CHECK ("MAX_SIZE" >= 0) ENABLE;
ALTER TABLE "NACOS"."TENANT_CAPACITY"
ADD CHECK ("USAGE" >= 0) ENABLE;
COMMENT
ON TABLE "NACOS"."TENANT_CAPACITY" IS '租戶容量信息表';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."ID" IS '主鍵ID';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."TENANT_ID" IS 'Tenant ID';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."QUOTA" IS '配額,0表示使用默認值';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."USAGE" IS '使用量';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_SIZE" IS '單個配置大小上限,單位為字節,0表示使用默認值';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_AGGR_COUNT" IS '聚合子配置最大個數';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_AGGR_SIZE" IS '單個聚合數據的子配置大小上限,單位為字節,0表示使用默認值';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_HISTORY_COUNT" IS '最大變更歷史數量';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."GMT_CREATE" IS '創建時間';
COMMENT
ON COLUMN "NACOS"."TENANT_CAPACITY"."GMT_MODIFIED" IS '修改時間';
ALTER TABLE "NACOS"."HIS_CONFIG_INFO"
ADD CHECK ("ID" >= 0) ENABLE;
CREATE INDEX "IDX_GMT_MODIFIED"
ON "NACOS"."HIS_CONFIG_INFO" ("GMT_MODIFIED");
CREATE INDEX "IDX_GMT_CREATE"
ON "NACOS"."HIS_CONFIG_INFO" ("GMT_CREATE");
CREATE INDEX "IDX_DID"
ON "NACOS"."HIS_CONFIG_INFO" ("DATA_ID");
COMMENT
ON TABLE "NACOS"."HIS_CONFIG_INFO" IS '多租戶改造';
COMMENT
ON COLUMN "NACOS"."HIS_CONFIG_INFO"."APP_NAME" IS 'app_name';
COMMENT
ON COLUMN "NACOS"."HIS_CONFIG_INFO"."TENANT_ID" IS '租戶字段';
COMMENT
ON COLUMN "NACOS"."HIS_CONFIG_INFO"."ENCRYPTED_DATA_KEY" IS '密鑰';
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CHECK ("QUOTA" >= 0) ENABLE;
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CHECK ("MAX_HISTORY_COUNT" >= 0) ENABLE;
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CHECK ("MAX_AGGR_SIZE" >= 0) ENABLE;
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CHECK ("MAX_AGGR_COUNT" >= 0) ENABLE;
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CHECK ("MAX_SIZE" >= 0) ENABLE;
ALTER TABLE "NACOS"."GROUP_CAPACITY"
ADD CHECK ("USAGE" >= 0) ENABLE;
COMMENT
ON TABLE "NACOS"."GROUP_CAPACITY" IS '集群、各Group容量信息表';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."ID" IS '主鍵ID';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."GROUP_ID" IS 'Group ID,空字符表示整個集群';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."QUOTA" IS '配額,0表示使用默認值';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."USAGE" IS '使用量';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_SIZE" IS '單個配置大小上限,單位為字節,0表示使用默認值';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_AGGR_COUNT" IS '聚合子配置最大個數,,0表示使用默認值';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_AGGR_SIZE" IS '單個聚合數據的子配置大小上限,單位為字節,0表示使用默認值';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_HISTORY_COUNT" IS '最大變更歷史數量';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."GMT_CREATE" IS '創建時間';
COMMENT
ON COLUMN "NACOS"."GROUP_CAPACITY"."GMT_MODIFIED" IS '修改時間';
COMMENT
ON TABLE "NACOS"."CONFIG_TAGS_RELATION" IS 'config_tag_relation';
COMMENT
ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."ID" IS 'id';
COMMENT
ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."TAG_NAME" IS 'tag_name';
COMMENT
ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."TAG_TYPE" IS 'tag_type';
COMMENT
ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."DATA_ID" IS 'data_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."GROUP_ID" IS 'group_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."TENANT_ID" IS 'tenant_id';
COMMENT
ON TABLE "NACOS"."CONFIG_INFO_TAG" IS 'config_info_tag';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."ID" IS 'id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."DATA_ID" IS 'data_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."GROUP_ID" IS 'group_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."TENANT_ID" IS 'tenant_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."TAG_ID" IS 'tag_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."APP_NAME" IS 'app_name';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."CONTENT" IS 'content';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."MD5" IS 'md5';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."GMT_CREATE" IS '創建時間';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."GMT_MODIFIED" IS '修改時間';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."SRC_USER" IS 'source user';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_TAG"."SRC_IP" IS 'source ip';
COMMENT
ON TABLE "NACOS"."CONFIG_INFO_BETA" IS 'config_info_beta';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."ID" IS 'id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."DATA_ID" IS 'data_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."GROUP_ID" IS 'group_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."APP_NAME" IS 'app_name';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."CONTENT" IS 'content';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."BETA_IPS" IS 'betaIps';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."MD5" IS 'md5';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."GMT_CREATE" IS '創建時間';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."GMT_MODIFIED" IS '修改時間';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."SRC_USER" IS 'source user';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."SRC_IP" IS 'source ip';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."TENANT_ID" IS '租戶字段';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_BETA"."ENCRYPTED_DATA_KEY" IS '密鑰';
COMMENT
ON TABLE "NACOS"."CONFIG_INFO_AGGR" IS '增加租戶字段';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."ID" IS 'id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."DATA_ID" IS 'data_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."GROUP_ID" IS 'group_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."DATUM_ID" IS 'datum_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."CONTENT" IS '內容';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."GMT_MODIFIED" IS '修改時間';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."TENANT_ID" IS '租戶字段';
COMMENT
ON TABLE "NACOS"."CONFIG_INFO" IS 'config_info';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."ID" IS 'id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."DATA_ID" IS 'data_id';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."CONTENT" IS 'content';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."MD5" IS 'md5';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."GMT_CREATE" IS '創建時間';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."GMT_MODIFIED" IS '修改時間';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."SRC_USER" IS 'source user';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."SRC_IP" IS 'source ip';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."TENANT_ID" IS '租戶字段';
COMMENT
ON COLUMN "NACOS"."CONFIG_INFO"."ENCRYPTED_DATA_KEY" IS '密鑰';
INSERT INTO "NACOS"."USERS"("USERNAME", "PASSWORD", "ENABLED")
VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1);
INSERT INTO "NACOS"."ROLES"("USERNAME", "ROLE")
VALUES ('nacos', 'ROLE_ADMIN');
commit;

二、實現步驟
2.1 nacos源碼中引入達夢8數據庫的驅動包
建議使用達夢數據庫自帶的驅動,達夢數據庫安裝目錄下drivers/jdbc下的驅動,否則可能會出現驅動版本不兼容的問題 (讀取超長CLOB,TEXT)
在naming模塊和console模塊的resources目錄下新建lib目錄,把DmJdbcDriver18.jar包拷貝進去,自行找一個合適的驅動jar包。
分別在naming模塊和console模塊的pom.xml下新增依賴項:
<dependency>
<groupId>com.dameng</groupId>
<artifactId>DmJdbcDriver18</artifactId>
<version>8.1.3.140</version>
</dependency>

2.2 修改nacos源碼
(1).把下載的nacos-plugin-develop中的nacos-datasource-plugin-ext模塊下的nacos-datasource-plugin-ext-base中的源碼依次拷貝進入nacos-2.3.2中的datasource模塊下,注意路徑。如圖所示:

(2).把下載的nacos-plugin-develop中的nacos-datasource-plugin-ext模塊下的nacos-dm-datasource-plugin-ext中的源碼依次拷貝進入nacos-2.3.2中的datasource模塊下,注意路徑。
注意不要拷貝src/main/resources/META-INF/services/com.alibaba.nacos.plugin.datasource.mapper.Mapper這個文件,防止覆蓋,等下我們要自己新增一些內容。

(3).修改nacos-2.3.2\plugin\datasource\src\main\resources\META-INF\services\com.alibaba.nacos.plugin.datasource.mapper.Mapper的這個文件,在最下面新增如下:
com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoAggrMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoBetaMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoTagMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.ConfigTagsRelationMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.HistoryConfigInfoMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.TenantInfoMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.TenantCapacityMapperByDaMeng
com.alibaba.nacos.plugin.datasource.impl.dm.GroupCapacityMapperByDaMeng

2.3 編譯打包
在終端打開nacos-2.3.2,運行如下命令:
mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Drat.skip=true -Dcheckstyle.skip=true clean install -U

如果構建成功,則在distribution模塊下有生成的nacos包:

三、運行驗證
把nacos-server-2.3.2.zip取出解壓縮,修改conf目錄下的application.properties配置文件:
### Default web context path:
server.servlet.contextPath=/nacos
### Include message field
server.error.include-message=ALWAYS
### Default web server port:
server.port=8848
### Count of DB:
db.num=1
### Connect URL of DB:
spring.sql.init.platform=dm
db.url.0=jdbc:dm://10.10.10.104:5236?schema=NACOS
db.user.0=SYSDBA
db.password.0=SYSDBA001
db.pool.config.driverClassName=dm.jdbc.driver.DmDriver
### Connection pool configuration: hikariCP
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
### the maximum retry times for push
nacos.config.push.maxRetryTime=50
#***********Metrics for tomcat **************************#
server.tomcat.mbeanregistry.enabled=true
#***********Expose prometheus and health **************************#
#management.endpoints.web.exposure.include=prometheus,health
### Metrics for elastic search
management.metrics.export.elastic.enabled=false
#management.metrics.export.elastic.host=http://localhost:9200
### Metrics for influx
management.metrics.export.influx.enabled=false
#*************** Access Log Related Configurations ***************#
### If turn on the access log:
server.tomcat.accesslog.enabled=true
### file name pattern, one file per hour
server.tomcat.accesslog.rotate=true
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH
### The access log pattern:
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
### The directory of access log:
server.tomcat.basedir=file:.
#*************** Access Control Related Configurations ***************#
### If enable spring security, this option is deprecated in 1.2.0:
#spring.security.enabled=false
### The ignore urls of auth
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=nacos
### If turn on auth system:
nacos.core.auth.enabled=true
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=true
### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
nacos.core.auth.enable.userAgentAuthWhite=false
### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
### The two properties is the white list for auth and used by identity the request from other server.
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
### The default token (Base64 String):
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
nacos.istio.mcp.server.enabled=false
具體的配置規則參考官網:https://nacos.io/docs/latest/concepts/
在bin目錄下運行cmd,輸入startup.cmd -m standalone

訪問localhost:8848/nacos

新增一些配置文件,在達夢數據庫的NACOS.CONFIG——INFO表中看到如下:

也可以創建一個簡單的spring cloud的demo來實驗注冊中心和配置中心:


如上圖,springcloud-demo已經成功注冊到nacos,并且能讀出nacos中的配置文件的值,說明此達夢數據庫版nacos可用。
至此nacos適配達夢數據庫成功!
四、福利(直接看這里可以拿到已經做好的成品)
2025-7-12 新版本的nacos2.4.3達夢版在這里: https://gitee.com/pengkaiyan/nacos-dm
我這里已經把弄好的源碼發布在了github上,需要的話可以下載直接運行mvn編譯就好了
https://github.com/pkyit/nacos-2.3.2
點擊這里下載源碼和nacos達夢版壓縮包
如果不想編譯也可以直接用我已經構建好的nacos,解壓縮就可以使用了。
點擊這里免費下載達夢版nacos-2.3.2.tar.gz
https://github.com/pkyit/nacos-2.3.2/releases/download/v2.3.2/nacos-server-2.3.2.tar.gz
docker版的也有哦,請看這里(arm64和amd64) 點這里看docker的nacos-dm8
docker pull pkyit/nacos:2.3.2-dm8
參考:https://github.com/nacos-group/nacos-plugin
參考:https://github.com/alibaba/nacos
參考:https://nacos.io/
參考:https://blog.csdn.net/zhuyangyong/article/details/136215650
參考:https://blog.csdn.net/weixin_45726578/article/details/129835862
如果我的文章對您有幫助,還請您多多支持我。支付寶幫忙掃一下吧

浙公網安備 33010602011771號