找回密码
 立即注册
首页 业界区 安全 nacos适配达梦数据库

nacos适配达梦数据库

瞪皱炕 2025-9-26 11:42:10
点击这里直接看作者开源的成品
遇到问题可在评论区给我留言
加微信: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打开:
1.png

在达梦数据库中新建一个名叫NACOS的数据库,然后在NACOS数据库下创建如下表:(注意最后有个commit提交事务)
  1. CREATE TABLE "NACOS"."USERS"
  2. (
  3.     "USERNAME" VARCHAR(50)  NOT NULL,
  4.     "PASSWORD" VARCHAR(500) NOT NULL,
  5.     "ENABLED"  TINYINT      NOT NULL
  6. );
  7. CREATE TABLE "NACOS"."TENANT_INFO"
  8. (
  9.     "ID"            BIGINT IDENTITY(1,1) NOT NULL,
  10.     "KP"            VARCHAR(128) NOT NULL,
  11.     "TENANT_ID"     VARCHAR(128) DEFAULT ''
  12.         NULL,
  13.     "TENANT_NAME"   VARCHAR(128) DEFAULT ''
  14.         NULL,
  15.     "TENANT_DESC"   VARCHAR(256) NULL,
  16.     "CREATE_SOURCE" VARCHAR(32) NULL,
  17.     "GMT_CREATE"    BIGINT       NOT NULL,
  18.     "GMT_MODIFIED"  BIGINT       NOT NULL
  19. );
  20. CREATE TABLE "NACOS"."TENANT_CAPACITY"
  21. (
  22.     "ID"                BIGINT IDENTITY(1,1) NOT NULL,
  23.     "TENANT_ID"         VARCHAR(128) DEFAULT ''
  24.         NOT NULL,
  25.     "QUOTA"             BIGINT       DEFAULT 0
  26.         NOT NULL,
  27.     "USAGE"             BIGINT       DEFAULT 0
  28.         NOT NULL,
  29.     "MAX_SIZE"          BIGINT       DEFAULT 0
  30.         NOT NULL,
  31.     "MAX_AGGR_COUNT"    BIGINT       DEFAULT 0
  32.         NOT NULL,
  33.     "MAX_AGGR_SIZE"     BIGINT       DEFAULT 0
  34.         NOT NULL,
  35.     "MAX_HISTORY_COUNT" BIGINT       DEFAULT 0
  36.         NOT NULL,
  37.     "GMT_CREATE"        TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  38.         NOT NULL,
  39.     "GMT_MODIFIED"      TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  40.         NOT NULL
  41. );
  42. CREATE TABLE "NACOS"."ROLES"
  43. (
  44.     "USERNAME" VARCHAR(50) NOT NULL,
  45.     "ROLE"     VARCHAR(50) NOT NULL
  46. );
  47. CREATE TABLE "NACOS"."PERMISSIONS"
  48. (
  49.     "ROLE"     VARCHAR(50)  NOT NULL,
  50.     "RESOURCE" VARCHAR(255) NOT NULL,
  51.     "ACTION"   VARCHAR(8)   NOT NULL
  52. );
  53. CREATE TABLE "NACOS"."HIS_CONFIG_INFO"
  54. (
  55.     "ID"                 DECIMAL(20, 0) NOT NULL,
  56.     "NID"                BIGINT IDENTITY(1,1) NOT NULL,
  57.     "DATA_ID"            VARCHAR(255)   NOT NULL,
  58.     "GROUP_ID"           VARCHAR(128)   NOT NULL,
  59.     "APP_NAME"           VARCHAR(128) NULL,
  60.     "CONTENT"            CLOB           NOT NULL,
  61.     "MD5"                VARCHAR(32) NULL,
  62.     "GMT_CREATE"         TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  63.                                         NOT NULL,
  64.     "GMT_MODIFIED"       TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  65.                                         NOT NULL,
  66.     "SRC_USER"           TEXT NULL,
  67.     "SRC_IP"             VARCHAR(50) NULL,
  68.     "OP_TYPE"            CHAR(10) NULL,
  69.     "TENANT_ID"          VARCHAR(128) DEFAULT ''
  70.         NULL,
  71.     "ENCRYPTED_DATA_KEY" TEXT           NOT NULL
  72. );
  73. CREATE TABLE "NACOS"."GROUP_CAPACITY"
  74. (
  75.     "ID"                BIGINT IDENTITY(1,1) NOT NULL,
  76.     "GROUP_ID"          VARCHAR(128) DEFAULT ''
  77.         NOT NULL,
  78.     "QUOTA"             BIGINT       DEFAULT 0
  79.         NOT NULL,
  80.     "USAGE"             BIGINT       DEFAULT 0
  81.         NOT NULL,
  82.     "MAX_SIZE"          BIGINT       DEFAULT 0
  83.         NOT NULL,
  84.     "MAX_AGGR_COUNT"    BIGINT       DEFAULT 0
  85.         NOT NULL,
  86.     "MAX_AGGR_SIZE"     BIGINT       DEFAULT 0
  87.         NOT NULL,
  88.     "MAX_HISTORY_COUNT" BIGINT       DEFAULT 0
  89.         NOT NULL,
  90.     "GMT_CREATE"        TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  91.         NOT NULL,
  92.     "GMT_MODIFIED"      TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  93.         NOT NULL
  94. );
  95. CREATE TABLE "NACOS"."CONFIG_TAGS_RELATION"
  96. (
  97.     "ID"        BIGINT       NOT NULL,
  98.     "TAG_NAME"  VARCHAR(128) NOT NULL,
  99.     "TAG_TYPE"  VARCHAR(64) NULL,
  100.     "DATA_ID"   VARCHAR(255) NOT NULL,
  101.     "GROUP_ID"  VARCHAR(128) NOT NULL,
  102.     "TENANT_ID" VARCHAR(128) DEFAULT ''
  103.         NULL,
  104.     "NID"       BIGINT IDENTITY(1,1) NOT NULL
  105. );
  106. CREATE TABLE "NACOS"."CONFIG_INFO_TAG"
  107. (
  108.     "ID"           BIGINT IDENTITY(1,1) NOT NULL,
  109.     "DATA_ID"      VARCHAR(255) NOT NULL,
  110.     "GROUP_ID"     VARCHAR(128) NOT NULL,
  111.     "TENANT_ID"    VARCHAR(128) DEFAULT ''
  112.         NULL,
  113.     "TAG_ID"       VARCHAR(128) NOT NULL,
  114.     "APP_NAME"     VARCHAR(128) NULL,
  115.     "CONTENT"      CLOB         NOT NULL,
  116.     "MD5"          VARCHAR(32) NULL,
  117.     "GMT_CREATE"   TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  118.                                 NOT NULL,
  119.     "GMT_MODIFIED" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  120.                                 NOT NULL,
  121.     "SRC_USER"     TEXT NULL,
  122.     "SRC_IP"       VARCHAR(50) NULL
  123. );
  124. CREATE TABLE "NACOS"."CONFIG_INFO_BETA"
  125. (
  126.     "ID"                 BIGINT IDENTITY(1,1) NOT NULL,
  127.     "DATA_ID"            VARCHAR(255) NOT NULL,
  128.     "GROUP_ID"           VARCHAR(128) NOT NULL,
  129.     "APP_NAME"           VARCHAR(128) NULL,
  130.     "CONTENT"            CLOB         NOT NULL,
  131.     "BETA_IPS"           VARCHAR(1024) NULL,
  132.     "MD5"                VARCHAR(32) NULL,
  133.     "GMT_CREATE"         TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  134.                                       NOT NULL,
  135.     "GMT_MODIFIED"       TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  136.                                       NOT NULL,
  137.     "SRC_USER"           TEXT NULL,
  138.     "SRC_IP"             VARCHAR(50) NULL,
  139.     "TENANT_ID"          VARCHAR(128) DEFAULT ''
  140.         NULL,
  141.     "ENCRYPTED_DATA_KEY" TEXT         NOT NULL
  142. );
  143. CREATE TABLE "NACOS"."CONFIG_INFO_AGGR"
  144. (
  145.     "ID"           BIGINT IDENTITY(1,1) NOT NULL,
  146.     "DATA_ID"      VARCHAR(255) NOT NULL,
  147.     "GROUP_ID"     VARCHAR(128) NOT NULL,
  148.     "DATUM_ID"     VARCHAR(255) NOT NULL,
  149.     "CONTENT"      CLOB         NOT NULL,
  150.     "GMT_MODIFIED" TIMESTAMP(0) NOT NULL,
  151.     "APP_NAME"     VARCHAR(128) NULL,
  152.     "TENANT_ID"    VARCHAR(128) DEFAULT ''
  153.         NULL
  154. );
  155. CREATE TABLE "NACOS"."CONFIG_INFO"
  156. (
  157.     "ID"                 BIGINT IDENTITY(1,1) NOT NULL,
  158.     "DATA_ID"            VARCHAR(255) NOT NULL,
  159.     "GROUP_ID"           VARCHAR(128) NULL,
  160.     "CONTENT"            CLOB         NOT NULL,
  161.     "MD5"                VARCHAR(32) NULL,
  162.     "GMT_CREATE"         TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  163.                                       NOT NULL,
  164.     "GMT_MODIFIED"       TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP()
  165.                                       NOT NULL,
  166.     "SRC_USER"           TEXT NULL,
  167.     "SRC_IP"             VARCHAR(50) NULL,
  168.     "APP_NAME"           VARCHAR(128) NULL,
  169.     "TENANT_ID"          VARCHAR(128) DEFAULT ''
  170.         NULL,
  171.     "C_DESC"             VARCHAR(256) NULL,
  172.     "C_USE"              VARCHAR(64) NULL,
  173.     "EFFECT"             VARCHAR(64) NULL,
  174.     "TYPE"               VARCHAR(64) NULL,
  175.     "C_SCHEMA"           TEXT NULL,
  176.     "ENCRYPTED_DATA_KEY" TEXT         NOT NULL
  177. );
  178. ALTER TABLE "NACOS"."USERS"
  179.     ADD CONSTRAINT PRIMARY KEY ("USERNAME");
  180. ALTER TABLE "NACOS"."TENANT_INFO"
  181.     ADD CONSTRAINT PRIMARY KEY ("ID");
  182. ALTER TABLE "NACOS"."TENANT_INFO"
  183.     ADD CONSTRAINT "UK_TENANT_INFO_KPTENANTID" UNIQUE ("KP", "TENANT_ID");
  184. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  185.     ADD CONSTRAINT PRIMARY KEY ("ID");
  186. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  187.     ADD CONSTRAINT "UK_TENANT_ID" UNIQUE ("TENANT_ID");
  188. ALTER TABLE "NACOS"."ROLES"
  189.     ADD CONSTRAINT "IDX_USER_ROLE" UNIQUE ("USERNAME", "ROLE");
  190. ALTER TABLE "NACOS"."PERMISSIONS"
  191.     ADD CONSTRAINT "UK_ROLE_PERMISSION" UNIQUE ("ROLE", "RESOURCE", "ACTION");
  192. ALTER TABLE "NACOS"."HIS_CONFIG_INFO"
  193.     ADD CONSTRAINT PRIMARY KEY ("NID");
  194. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  195.     ADD CONSTRAINT PRIMARY KEY ("ID");
  196. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  197.     ADD CONSTRAINT "UK_GROUP_ID" UNIQUE ("GROUP_ID");
  198. ALTER TABLE "NACOS"."CONFIG_TAGS_RELATION"
  199.     ADD CONSTRAINT PRIMARY KEY ("NID");
  200. ALTER TABLE "NACOS"."CONFIG_TAGS_RELATION"
  201.     ADD CONSTRAINT "UK_CONFIGTAGRELATION_CONFIGIDTAG" UNIQUE ("ID", "TAG_NAME", "TAG_TYPE");
  202. ALTER TABLE "NACOS"."CONFIG_INFO_TAG"
  203.     ADD CONSTRAINT PRIMARY KEY ("ID");
  204. ALTER TABLE "NACOS"."CONFIG_INFO_TAG"
  205.     ADD CONSTRAINT "UK_CONFIGINFOTAG_DATAGROUPTENANTTAG" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID", "TAG_ID");
  206. ALTER TABLE "NACOS"."CONFIG_INFO_BETA"
  207.     ADD CONSTRAINT PRIMARY KEY ("ID");
  208. ALTER TABLE "NACOS"."CONFIG_INFO_BETA"
  209.     ADD CONSTRAINT "UK_CONFIGINFOBETA_DATAGROUPTENANT" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID");
  210. ALTER TABLE "NACOS"."CONFIG_INFO_AGGR"
  211.     ADD CONSTRAINT PRIMARY KEY ("ID");
  212. ALTER TABLE "NACOS"."CONFIG_INFO_AGGR"
  213.     ADD CONSTRAINT "UK_CONFIGINFOAGGR_DATAGROUPTENANTDATUM" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID", "DATUM_ID");
  214. ALTER TABLE "NACOS"."CONFIG_INFO"
  215.     ADD CONSTRAINT PRIMARY KEY ("ID");
  216. ALTER TABLE "NACOS"."CONFIG_INFO"
  217.     ADD CONSTRAINT "UK_CONFIGINFO_DATAGROUPTENANT" UNIQUE ("DATA_ID", "GROUP_ID", "TENANT_ID");
  218. CREATE INDEX "IDX_TENANT_ID"
  219.     ON "NACOS"."TENANT_INFO" ("TENANT_ID");
  220. COMMENT
  221. ON TABLE "NACOS"."TENANT_INFO" IS 'tenant_info';
  222. COMMENT
  223. ON COLUMN "NACOS"."TENANT_INFO"."ID" IS 'id';
  224. COMMENT
  225. ON COLUMN "NACOS"."TENANT_INFO"."KP" IS 'kp';
  226. COMMENT
  227. ON COLUMN "NACOS"."TENANT_INFO"."TENANT_ID" IS 'tenant_id';
  228. COMMENT
  229. ON COLUMN "NACOS"."TENANT_INFO"."TENANT_NAME" IS 'tenant_name';
  230. COMMENT
  231. ON COLUMN "NACOS"."TENANT_INFO"."TENANT_DESC" IS 'tenant_desc';
  232. COMMENT
  233. ON COLUMN "NACOS"."TENANT_INFO"."CREATE_SOURCE" IS 'create_source';
  234. COMMENT
  235. ON COLUMN "NACOS"."TENANT_INFO"."GMT_CREATE" IS '创建时间';
  236. COMMENT
  237. ON COLUMN "NACOS"."TENANT_INFO"."GMT_MODIFIED" IS '修改时间';
  238. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  239.     ADD CHECK ("QUOTA" >= 0) ENABLE;
  240. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  241.     ADD CHECK ("MAX_HISTORY_COUNT" >= 0) ENABLE;
  242. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  243.     ADD CHECK ("MAX_AGGR_SIZE" >= 0) ENABLE;
  244. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  245.     ADD CHECK ("MAX_AGGR_COUNT" >= 0) ENABLE;
  246. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  247.     ADD CHECK ("MAX_SIZE" >= 0) ENABLE;
  248. ALTER TABLE "NACOS"."TENANT_CAPACITY"
  249.     ADD CHECK ("USAGE" >= 0) ENABLE;
  250. COMMENT
  251. ON TABLE "NACOS"."TENANT_CAPACITY" IS '租户容量信息表';
  252. COMMENT
  253. ON COLUMN "NACOS"."TENANT_CAPACITY"."ID" IS '主键ID';
  254. COMMENT
  255. ON COLUMN "NACOS"."TENANT_CAPACITY"."TENANT_ID" IS 'Tenant ID';
  256. COMMENT
  257. ON COLUMN "NACOS"."TENANT_CAPACITY"."QUOTA" IS '配额,0表示使用默认值';
  258. COMMENT
  259. ON COLUMN "NACOS"."TENANT_CAPACITY"."USAGE" IS '使用量';
  260. COMMENT
  261. ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_SIZE" IS '单个配置大小上限,单位为字节,0表示使用默认值';
  262. COMMENT
  263. ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_AGGR_COUNT" IS '聚合子配置最大个数';
  264. COMMENT
  265. ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_AGGR_SIZE" IS '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值';
  266. COMMENT
  267. ON COLUMN "NACOS"."TENANT_CAPACITY"."MAX_HISTORY_COUNT" IS '最大变更历史数量';
  268. COMMENT
  269. ON COLUMN "NACOS"."TENANT_CAPACITY"."GMT_CREATE" IS '创建时间';
  270. COMMENT
  271. ON COLUMN "NACOS"."TENANT_CAPACITY"."GMT_MODIFIED" IS '修改时间';
  272. ALTER TABLE "NACOS"."HIS_CONFIG_INFO"
  273.     ADD CHECK ("ID" >= 0) ENABLE;
  274. CREATE INDEX "IDX_GMT_MODIFIED"
  275.     ON "NACOS"."HIS_CONFIG_INFO" ("GMT_MODIFIED");
  276. CREATE INDEX "IDX_GMT_CREATE"
  277.     ON "NACOS"."HIS_CONFIG_INFO" ("GMT_CREATE");
  278. CREATE INDEX "IDX_DID"
  279.     ON "NACOS"."HIS_CONFIG_INFO" ("DATA_ID");
  280. COMMENT
  281. ON TABLE "NACOS"."HIS_CONFIG_INFO" IS '多租户改造';
  282. COMMENT
  283. ON COLUMN "NACOS"."HIS_CONFIG_INFO"."APP_NAME" IS 'app_name';
  284. COMMENT
  285. ON COLUMN "NACOS"."HIS_CONFIG_INFO"."TENANT_ID" IS '租户字段';
  286. COMMENT
  287. ON COLUMN "NACOS"."HIS_CONFIG_INFO"."ENCRYPTED_DATA_KEY" IS '密钥';
  288. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  289.     ADD CHECK ("QUOTA" >= 0) ENABLE;
  290. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  291.     ADD CHECK ("MAX_HISTORY_COUNT" >= 0) ENABLE;
  292. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  293.     ADD CHECK ("MAX_AGGR_SIZE" >= 0) ENABLE;
  294. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  295.     ADD CHECK ("MAX_AGGR_COUNT" >= 0) ENABLE;
  296. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  297.     ADD CHECK ("MAX_SIZE" >= 0) ENABLE;
  298. ALTER TABLE "NACOS"."GROUP_CAPACITY"
  299.     ADD CHECK ("USAGE" >= 0) ENABLE;
  300. COMMENT
  301. ON TABLE "NACOS"."GROUP_CAPACITY" IS '集群、各Group容量信息表';
  302. COMMENT
  303. ON COLUMN "NACOS"."GROUP_CAPACITY"."ID" IS '主键ID';
  304. COMMENT
  305. ON COLUMN "NACOS"."GROUP_CAPACITY"."GROUP_ID" IS 'Group ID,空字符表示整个集群';
  306. COMMENT
  307. ON COLUMN "NACOS"."GROUP_CAPACITY"."QUOTA" IS '配额,0表示使用默认值';
  308. COMMENT
  309. ON COLUMN "NACOS"."GROUP_CAPACITY"."USAGE" IS '使用量';
  310. COMMENT
  311. ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_SIZE" IS '单个配置大小上限,单位为字节,0表示使用默认值';
  312. COMMENT
  313. ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_AGGR_COUNT" IS '聚合子配置最大个数,,0表示使用默认值';
  314. COMMENT
  315. ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_AGGR_SIZE" IS '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值';
  316. COMMENT
  317. ON COLUMN "NACOS"."GROUP_CAPACITY"."MAX_HISTORY_COUNT" IS '最大变更历史数量';
  318. COMMENT
  319. ON COLUMN "NACOS"."GROUP_CAPACITY"."GMT_CREATE" IS '创建时间';
  320. COMMENT
  321. ON COLUMN "NACOS"."GROUP_CAPACITY"."GMT_MODIFIED" IS '修改时间';
  322. COMMENT
  323. ON TABLE "NACOS"."CONFIG_TAGS_RELATION" IS 'config_tag_relation';
  324. COMMENT
  325. ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."ID" IS 'id';
  326. COMMENT
  327. ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."TAG_NAME" IS 'tag_name';
  328. COMMENT
  329. ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."TAG_TYPE" IS 'tag_type';
  330. COMMENT
  331. ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."DATA_ID" IS 'data_id';
  332. COMMENT
  333. ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."GROUP_ID" IS 'group_id';
  334. COMMENT
  335. ON COLUMN "NACOS"."CONFIG_TAGS_RELATION"."TENANT_ID" IS 'tenant_id';
  336. COMMENT
  337. ON TABLE "NACOS"."CONFIG_INFO_TAG" IS 'config_info_tag';
  338. COMMENT
  339. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."ID" IS 'id';
  340. COMMENT
  341. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."DATA_ID" IS 'data_id';
  342. COMMENT
  343. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."GROUP_ID" IS 'group_id';
  344. COMMENT
  345. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."TENANT_ID" IS 'tenant_id';
  346. COMMENT
  347. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."TAG_ID" IS 'tag_id';
  348. COMMENT
  349. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."APP_NAME" IS 'app_name';
  350. COMMENT
  351. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."CONTENT" IS 'content';
  352. COMMENT
  353. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."MD5" IS 'md5';
  354. COMMENT
  355. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."GMT_CREATE" IS '创建时间';
  356. COMMENT
  357. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."GMT_MODIFIED" IS '修改时间';
  358. COMMENT
  359. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."SRC_USER" IS 'source user';
  360. COMMENT
  361. ON COLUMN "NACOS"."CONFIG_INFO_TAG"."SRC_IP" IS 'source ip';
  362. COMMENT
  363. ON TABLE "NACOS"."CONFIG_INFO_BETA" IS 'config_info_beta';
  364. COMMENT
  365. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."ID" IS 'id';
  366. COMMENT
  367. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."DATA_ID" IS 'data_id';
  368. COMMENT
  369. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."GROUP_ID" IS 'group_id';
  370. COMMENT
  371. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."APP_NAME" IS 'app_name';
  372. COMMENT
  373. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."CONTENT" IS 'content';
  374. COMMENT
  375. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."BETA_IPS" IS 'betaIps';
  376. COMMENT
  377. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."MD5" IS 'md5';
  378. COMMENT
  379. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."GMT_CREATE" IS '创建时间';
  380. COMMENT
  381. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."GMT_MODIFIED" IS '修改时间';
  382. COMMENT
  383. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."SRC_USER" IS 'source user';
  384. COMMENT
  385. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."SRC_IP" IS 'source ip';
  386. COMMENT
  387. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."TENANT_ID" IS '租户字段';
  388. COMMENT
  389. ON COLUMN "NACOS"."CONFIG_INFO_BETA"."ENCRYPTED_DATA_KEY" IS '密钥';
  390. COMMENT
  391. ON TABLE "NACOS"."CONFIG_INFO_AGGR" IS '增加租户字段';
  392. COMMENT
  393. ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."ID" IS 'id';
  394. COMMENT
  395. ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."DATA_ID" IS 'data_id';
  396. COMMENT
  397. ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."GROUP_ID" IS 'group_id';
  398. COMMENT
  399. ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."DATUM_ID" IS 'datum_id';
  400. COMMENT
  401. ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."CONTENT" IS '内容';
  402. COMMENT
  403. ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."GMT_MODIFIED" IS '修改时间';
  404. COMMENT
  405. ON COLUMN "NACOS"."CONFIG_INFO_AGGR"."TENANT_ID" IS '租户字段';
  406. COMMENT
  407. ON TABLE "NACOS"."CONFIG_INFO" IS 'config_info';
  408. COMMENT
  409. ON COLUMN "NACOS"."CONFIG_INFO"."ID" IS 'id';
  410. COMMENT
  411. ON COLUMN "NACOS"."CONFIG_INFO"."DATA_ID" IS 'data_id';
  412. COMMENT
  413. ON COLUMN "NACOS"."CONFIG_INFO"."CONTENT" IS 'content';
  414. COMMENT
  415. ON COLUMN "NACOS"."CONFIG_INFO"."MD5" IS 'md5';
  416. COMMENT
  417. ON COLUMN "NACOS"."CONFIG_INFO"."GMT_CREATE" IS '创建时间';
  418. COMMENT
  419. ON COLUMN "NACOS"."CONFIG_INFO"."GMT_MODIFIED" IS '修改时间';
  420. COMMENT
  421. ON COLUMN "NACOS"."CONFIG_INFO"."SRC_USER" IS 'source user';
  422. COMMENT
  423. ON COLUMN "NACOS"."CONFIG_INFO"."SRC_IP" IS 'source ip';
  424. COMMENT
  425. ON COLUMN "NACOS"."CONFIG_INFO"."TENANT_ID" IS '租户字段';
  426. COMMENT
  427. ON COLUMN "NACOS"."CONFIG_INFO"."ENCRYPTED_DATA_KEY" IS '密钥';
  428. INSERT INTO "NACOS"."USERS"("USERNAME", "PASSWORD", "ENABLED")
  429. VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', 1);
  430. INSERT INTO "NACOS"."ROLES"("USERNAME", "ROLE")
  431. VALUES ('nacos', 'ROLE_ADMIN');
  432. commit;
复制代码
2.png

二、实现步骤

2.1 nacos源码中引入达梦8数据库的驱动包

建议使用达梦数据库自带的驱动,达梦数据库安装目录下drivers/jdbc下的驱动,否则可能会出现驱动版本不兼容的问题 (读取超长CLOB,TEXT)
在naming模块和console模块的resources目录下新建lib目录,把DmJdbcDriver18.jar包拷贝进去,自行找一个合适的驱动jar包。
分别在naming模块和console模块的pom.xml下新增依赖项:
  1.   <dependency>
  2.             <groupId>com.dameng</groupId>
  3.             DmJdbcDriver18</artifactId>
  4.             <version>8.1.3.140</version>
  5.         </dependency>
复制代码
3.png

2.2 修改nacos源码

(1).把下载的nacos-plugin-develop中的nacos-datasource-plugin-ext模块下的nacos-datasource-plugin-ext-base中的源码依次拷贝进入nacos-2.3.2中的datasource模块下,注意路径。如图所示:
4.png

(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这个文件,防止覆盖,等下我们要自己新增一些内容。
5.png

(3).修改nacos-2.3.2\plugin\datasource\src\main\resources\META-INF\services\com.alibaba.nacos.plugin.datasource.mapper.Mapper的这个文件,在最下面新增如下:
  1. com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoAggrMapperByDaMeng
  2. com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoBetaMapperByDaMeng
  3. com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoMapperByDaMeng
  4. com.alibaba.nacos.plugin.datasource.impl.dm.ConfigInfoTagMapperByDaMeng
  5. com.alibaba.nacos.plugin.datasource.impl.dm.ConfigTagsRelationMapperByDaMeng
  6. com.alibaba.nacos.plugin.datasource.impl.dm.HistoryConfigInfoMapperByDaMeng
  7. com.alibaba.nacos.plugin.datasource.impl.dm.TenantInfoMapperByDaMeng
  8. com.alibaba.nacos.plugin.datasource.impl.dm.TenantCapacityMapperByDaMeng
  9. com.alibaba.nacos.plugin.datasource.impl.dm.GroupCapacityMapperByDaMeng
复制代码
6.png

2.3 编译打包

在终端打开nacos-2.3.2,运行如下命令:
  1. mvn -Prelease-nacos -Dmaven.test.skip=true -Dpmd.skip=true -Drat.skip=true -Dcheckstyle.skip=true clean install -U
复制代码
7.png

如果构建成功,则在distribution模块下有生成的nacos包:
8.png

三、运行验证

把nacos-server-2.3.2.zip取出解压缩,修改conf目录下的application.properties配置文件:
  1. ### Default web context path:
  2. server.servlet.contextPath=/nacos
  3. ### Include message field
  4. server.error.include-message=ALWAYS
  5. ### Default web server port:
  6. server.port=8848
  7. ### Count of DB:
  8. db.num=1
  9. ### Connect URL of DB:
  10. spring.sql.init.platform=dm
  11. db.url.0=jdbc:dm://10.10.10.104:5236?schema=NACOS
  12. db.user.0=SYSDBA
  13. db.password.0=SYSDBA001
  14. db.pool.config.driverClassName=dm.jdbc.driver.DmDriver
  15. ### Connection pool configuration: hikariCP
  16. db.pool.config.connectionTimeout=30000
  17. db.pool.config.validationTimeout=10000
  18. db.pool.config.maximumPoolSize=20
  19. db.pool.config.minimumIdle=2
  20. ### the maximum retry times for push
  21. nacos.config.push.maxRetryTime=50
  22. #***********Metrics for tomcat **************************#
  23. server.tomcat.mbeanregistry.enabled=true
  24. #***********Expose prometheus and health **************************#
  25. #management.endpoints.web.exposure.include=prometheus,health
  26. ### Metrics for elastic search
  27. management.metrics.export.elastic.enabled=false
  28. #management.metrics.export.elastic.host=http://localhost:9200
  29. ### Metrics for influx
  30. management.metrics.export.influx.enabled=false
  31. #*************** Access Log Related Configurations ***************#
  32. ### If turn on the access log:
  33. server.tomcat.accesslog.enabled=true
  34. ### file name pattern, one file per hour
  35. server.tomcat.accesslog.rotate=true
  36. server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH
  37. ### The access log pattern:
  38. server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
  39. ### The directory of access log:
  40. server.tomcat.basedir=file:.
  41. #*************** Access Control Related Configurations ***************#
  42. ### If enable spring security, this option is deprecated in 1.2.0:
  43. #spring.security.enabled=false
  44. ### The ignore urls of auth
  45. nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
  46. ### The auth system to use, currently only 'nacos' and 'ldap' is supported:
  47. nacos.core.auth.system.type=nacos
  48. ### If turn on auth system:
  49. nacos.core.auth.enabled=true
  50. ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
  51. nacos.core.auth.caching.enabled=true
  52. ### Since 1.4.1, Turn on/off white auth for user-agent: nacos-server, only for upgrade from old version.
  53. nacos.core.auth.enable.userAgentAuthWhite=false
  54. ### Since 1.4.1, worked when nacos.core.auth.enabled=true and nacos.core.auth.enable.userAgentAuthWhite=false.
  55. ### The two properties is the white list for auth and used by identity the request from other server.
  56. nacos.core.auth.server.identity.key=nacos
  57. nacos.core.auth.server.identity.value=nacos
  58. ### worked when nacos.core.auth.system.type=nacos
  59. ### The token expiration in seconds:
  60. nacos.core.auth.plugin.nacos.token.cache.enable=false
  61. nacos.core.auth.plugin.nacos.token.expire.seconds=18000
  62. ### The default token (Base64 String):
  63. nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
  64. nacos.istio.mcp.server.enabled=false
复制代码
具体的配置规则参考官网:https://nacos.io/docs/latest/concepts/
在bin目录下运行cmd,输入startup.cmd -m standalone
9.png

访问localhost:8848/nacos
10.png

新增一些配置文件,在达梦数据库的NACOS.CONFIG——INFO表中看到如下:
11.png

也可以创建一个简单的spring cloud的demo来实验注册中心和配置中心:
12.png

13.png

如上图,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
如果我的文章对您有帮助,还请您多多支持我。支付宝帮忙扫一下吧
14.png


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册