0
点赞
收藏
分享

微信扫一扫

nacos一定要连mysql么

眼君 2023-07-22 阅读 68

nacos一定要连mysql么

简介

Nacos是一个用于动态服务发现、服务配置和服务管理的开源平台。它提供了服务注册和发现、配置管理、动态DNS服务等功能,使得微服务架构下的应用更加容易构建和管理。

在Nacos的使用过程中,经常会有人问到"nacos一定要连接MySQL么?"这个问题。本文将介绍为什么nacos需要连接MySQL,以及如何配置和使用MySQL作为nacos的存储介质。

为什么nacos需要连接MySQL?

Nacos需要连接MySQL的主要原因是为了持久化存储服务注册信息、配置信息以及其他元数据。MySQL提供了稳定、可靠、高性能的存储能力,可以确保nacos的数据安全和可用性。同时,MySQL也提供了丰富的数据操作和查询功能,方便用户对nacos的数据进行管理和分析。

另外,nacos还支持使用其他数据源,如Oracle、SQL Server等。用户可以根据实际需求选择合适的数据源。

如何配置nacos连接MySQL?

下面是一个使用MySQL作为nacos存储介质的配置示例:

spring:
  datasource:
    platform: mysql
    url: jdbc:mysql://localhost:3306/nacos?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root

nacos:
  config:
    dbDataSource: com.alibaba.nacos.config.server.datasource.MysqlDataSource
  workder:
    dbDataSource: com.alibaba.nacos.common.datasource.MysqlDataSource
  discovery:
    dbDataSource: com.alibaba.nacos.naming.core.v2.upgrade.mysql.MysqlDataSource

在上述配置中,我们需要设置MySQL的连接信息,包括URL、用户名和密码。其中nacos.config.dbDataSourcenacos.workder.dbDataSourcenacos.discovery.dbDataSource分别指定了配置、工作节点和服务发现节点使用的数据源。

MySQL表结构

nacos使用了一系列的MySQL表来存储各种信息。下面是nacos默认使用的表结构示例:

CREATE TABLE `config_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `data_id` varchar(255) NOT NULL,
  `group_id` varchar(128) NOT NULL,
  `content` longtext NOT NULL,
  `md5` varchar(32) NOT NULL,
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_configinfo_datagrouphash` (`data_id`,`group_id`,`md5`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `namespace` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `namespace` varchar(128) NOT NULL,
  `namespace_show_name` varchar(128) DEFAULT NULL,
  `config_count` bigint(20) DEFAULT '0',
  `type` int(11) DEFAULT '0',
  `quota` int(11) NOT NULL DEFAULT '100000',
  `quota_per_table` int(11) NOT NULL DEFAULT '30000',
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_namespace` (`namespace`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `service_info` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `namespace_id` bigint(20) NOT NULL,
  `app_name` varchar(128) NOT NULL,
  `ip` varchar(45) NOT NULL,
  `port` int(11) NOT NULL DEFAULT '8080',
  `weight` double NOT NULL DEFAULT '1',
  `enable` tinyint(1) NOT NULL DEFAULT '1',
  `health_check` tinyint(1) NOT NULL DEFAULT '0',
  `metadata` longtext DEFAULT NULL,
  `cluster_name` varchar(128) DEFAULT NULL,
  `group_name` varchar(128) DEFAULT NULL,
  `ephemeral` tinyint(1) NOT NULL DEFAULT '0',
  `marked` tinyint(1) NOT NULL DEFAULT '0',
  `tags` varchar(1024) DEFAULT NULL,
  `weight_adjust_history` varchar(255) DEFAULT NULL,
  `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP,
  `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
举报

相关推荐

0 条评论