nacos支持mysql和postgreSQL持久化
一、下载源码并配置
- 下载github源码:
https://github.com/tudan110/nacos/tree/postgresql-and-mysql-dev - 修改相关console子模块下
application.properties:
spring.datasource.platform=postgresql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:postgresql://ip:5432/qcrddb?currentSchema=nacos_config
db.user.0=xx
db.password.0=xxx
- 启动nacos启动类服务:console模块下的Nacos.java
二、创建postgreSQL数据表
-- 需事先创建nacos_config模块;
CREATE TABLE nacos_config.config_info (
id serial4 NOT NULL,
data_id varchar(255) NOT NULL,
group_id varchar(255) NULL DEFAULT NULL::character varying,
"content" text NOT NULL,
md5 varchar(32) NULL DEFAULT NULL::character varying,
gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
src_user text NULL,
src_ip varchar(20) NULL DEFAULT NULL::character varying,
app_name varchar(128) NULL DEFAULT NULL::character varying,
tenant_id varchar(128) NULL DEFAULT ''::character varying,
c_desc varchar(256) NULL DEFAULT NULL::character varying,
c_use varchar(64) NULL DEFAULT NULL::character varying,
effect varchar(64) NULL DEFAULT NULL::character varying,
"type" varchar(64) NULL DEFAULT NULL::character varying,
c_schema text NULL,
encrypted_data_key text NULL,
CONSTRAINT config_info_pkey PRIMARY KEY (id),
CONSTRAINT uk_configinfo_datagrouptenant UNIQUE (data_id, group_id, tenant_id)
);
CREATE TABLE nacos_config.config_info_aggr (
id serial4 NOT NULL,
data_id varchar(255) NOT NULL,
group_id varchar(255) NOT NULL,
datum_id varchar(255) NOT NULL,
"content" text NOT NULL,
gmt_modified timestamp NOT NULL,
app_name varchar(128) NULL DEFAULT NULL::character varying,
tenant_id varchar(128) NULL DEFAULT ''::character varying,
CONSTRAINT config_info_aggr_pkey PRIMARY KEY (id),
CONSTRAINT uk_configinfoaggr_datagrouptenantdatum UNIQUE (data_id, group_id, tenant_id, datum_id)
);
CREATE TABLE nacos_config.config_info_beta (
id serial4 NOT NULL,
data_id varchar(255) NOT NULL,
group_id varchar(128) NOT NULL,
app_name varchar(128) NULL DEFAULT NULL::character varying,
"content" text NOT NULL,
beta_ips varchar(1024) NULL DEFAULT NULL::character varying,
md5 varchar(32) NULL DEFAULT NULL::character varying,
gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
src_user text NULL,
src_ip varchar(20) NULL DEFAULT NULL::character varying,
tenant_id varchar(128) NULL DEFAULT ''::character varying,
encrypted_data_key text NULL,
CONSTRAINT config_info_beta_pkey PRIMARY KEY (id),
CONSTRAINT uk_configinfobeta_datagrouptenant UNIQUE (data_id, group_id, tenant_id)
);
CREATE TABLE nacos_config.config_info_tag (
id serial4 NOT NULL,
data_id varchar(255) NOT NULL,
group_id varchar(128) NOT NULL,
tenant_id varchar(128) NULL DEFAULT ''::character varying,
tag_id varchar(128) NOT NULL,
app_name varchar(128) NULL DEFAULT NULL::character varying,
"content" text NOT NULL,
md5 varchar(32) NULL DEFAULT NULL::character varying,
gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
src_user text NULL,
src_ip varchar(20) NULL DEFAULT NULL::character varying,
CONSTRAINT config_info_tag_pkey PRIMARY KEY (id),
CONSTRAINT uk_configinfotag_datagrouptenanttag UNIQUE (data_id, group_id, tenant_id, tag_id)
);
CREATE TABLE nacos_config.config_tags_relation (
id int8 NOT NULL,
tag_name varchar(128) NOT NULL,
tag_type varchar(64) NULL DEFAULT NULL::character varying,
data_id varchar(255) NOT NULL,
group_id varchar(128) NOT NULL,
tenant_id varchar(128) NULL DEFAULT ''::character varying,
nid serial4 NOT NULL,
CONSTRAINT config_tags_relation_pkey PRIMARY KEY (nid),
CONSTRAINT uk_configtagrelation_configidtag UNIQUE (id, tag_name, tag_type)
);
CREATE TABLE nacos_config.group_capacity (
id serial4 NOT NULL,
group_id varchar(128) NOT NULL DEFAULT ''::character varying,
quota int4 NOT NULL DEFAULT 0,
"usage" int4 NOT NULL DEFAULT 0,
max_size int4 NOT NULL DEFAULT 0,
max_aggr_count int4 NOT NULL DEFAULT 0,
max_aggr_size int4 NOT NULL DEFAULT 0,
max_history_count int4 NOT NULL DEFAULT 0,
gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
CONSTRAINT group_capacity_max_aggr_count_check CHECK ((max_aggr_count >= 0)),
CONSTRAINT group_capacity_max_aggr_size_check CHECK ((max_aggr_size >= 0)),
CONSTRAINT group_capacity_max_history_count_check CHECK ((max_history_count >= 0)),
CONSTRAINT group_capacity_max_size_check CHECK ((max_size >= 0)),
CONSTRAINT group_capacity_pkey PRIMARY KEY (id),
CONSTRAINT group_capacity_quota_check CHECK ((quota >= 0)),
CONSTRAINT group_capacity_usage_check CHECK ((usage >= 0)),
CONSTRAINT uk_group_id UNIQUE (group_id)
);
CREATE TABLE nacos_config.his_config_info (
id int8 NOT NULL,
nid serial4 NOT NULL,
data_id varchar(255) NOT NULL,
group_id varchar(128) NOT NULL,
app_name varchar(128) NULL DEFAULT NULL::character varying,
"content" text NOT NULL,
md5 varchar(32) NULL DEFAULT NULL::character varying,
gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
src_user text NULL,
src_ip varchar(20) NULL DEFAULT NULL::character varying,
op_type bpchar(10) NULL DEFAULT NULL::bpchar,
tenant_id varchar(128) NULL DEFAULT ''::character varying,
encrypted_data_key text NULL,
CONSTRAINT his_config_info_id_check CHECK ((id >= 0)),
CONSTRAINT his_config_info_nid_check CHECK ((nid >= 0)),
CONSTRAINT his_config_info_pkey PRIMARY KEY (nid)
);
CREATE TABLE nacos_config.permissions (
"role" varchar(50) NOT NULL,
resource varchar(255) NOT NULL,
"action" varchar(8) NOT NULL
);
CREATE UNIQUE INDEX permissions_role_idx ON nacos_config.permissions USING btree (role, resource, action);
CREATE TABLE nacos_config.roles (
username varchar(50) NOT NULL,
"role" varchar(50) NOT NULL
);
CREATE TABLE nacos_config.tenant_capacity (
id serial4 NOT NULL,
tenant_id varchar(128) NOT NULL DEFAULT ''::character varying,
quota int4 NOT NULL DEFAULT 0,
"usage" int4 NOT NULL DEFAULT 0,
max_size int4 NOT NULL DEFAULT 0,
max_aggr_count int4 NOT NULL DEFAULT 0,
max_aggr_size int4 NOT NULL DEFAULT 0,
max_history_count int4 NOT NULL DEFAULT 0,
gmt_create timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
gmt_modified timestamp NOT NULL DEFAULT '2010-05-05 00:00:00'::timestamp without time zone,
CONSTRAINT tenant_capacity_id_check CHECK ((id >= 0)),
CONSTRAINT tenant_capacity_max_aggr_count_check CHECK ((max_aggr_count >= 0)),
CONSTRAINT tenant_capacity_max_aggr_size_check CHECK ((max_aggr_size >= 0)),
CONSTRAINT tenant_capacity_max_history_count_check CHECK ((max_history_count >= 0)),
CONSTRAINT tenant_capacity_max_size_check CHECK ((max_size >= 0)),
CONSTRAINT tenant_capacity_pkey PRIMARY KEY (id),
CONSTRAINT tenant_capacity_quota_check CHECK ((quota >= 0)),
CONSTRAINT tenant_capacity_usage_check CHECK ((usage >= 0)),
CONSTRAINT uk_tenant_id UNIQUE (tenant_id)
);
CREATE TABLE nacos_config.tenant_info (
id serial4 NOT NULL,
kp varchar(128) NOT NULL,
tenant_id varchar(128) NULL DEFAULT ''::character varying,
tenant_name varchar(128) NULL DEFAULT ''::character varying,
tenant_desc varchar(256) NULL DEFAULT NULL::character varying,
create_source varchar(32) NULL DEFAULT NULL::character varying,
gmt_create int8 NOT NULL,
gmt_modified int8 NOT NULL,
CONSTRAINT tenant_info_pkey PRIMARY KEY (id),
CONSTRAINT uk_tenant_info_kptenantid UNIQUE (kp, tenant_id)
);
CREATE TABLE nacos_config.users (
username varchar(50) NOT NULL,
"password" varchar(500) NOT NULL,
enabled bool NOT NULL,
CONSTRAINT users_pkey PRIMARY KEY (username)
);
三、源码打包
在nacos-postgresql-and-mysql-dev目录下(在项目pom.xml同级目录),启动terminal,执行install命令(不是package命令),自动把带依赖且完整可运行的jar放到distribution\target目录下。
mvn -Prelease-nacos -Dmaven.test.skip=true -Dcheckstyle.skip clean install -U -Drat.skip=true


- 注意: 由于本机存在2个maven的系统变量,优先使用非预期的mvn,导致compile出错
- 注意:在console模块修改application.properties,且console为nacos的启动入口,但打包时不能在console路径下执行
mvn install,因为不会导入依赖、且会出出现找不到主类和清单错误.
![]()

- 注意:若将nacos-server-2.1.0.tar.gz直接放在断网的机器上,由于网络不同会出现依赖不满足问题(本机可正常运行)

- 注意:
mvn package -Dmaven.javadoc.skip=true -Dcheckstyle.skip -Dmaven.test.skip=true只会在子模块中创建target目录,生成子模块jar包,但是不会生成整个项目(带依赖)的jar包. (注意install和package的区别)

四、离线启动nacos jar包服务
4.1 单机方式
sh bin/startup.sh -m standalone

4.2 集群方式
java -jar -Dcom.alibaba.nacos.config.log.level=error -Dcom.alibaba.nacos.naming.log.level=error -DJM.LOG.PATH=./logs -DJM.SNAPSHOT.PATH=./logs -Daddress.server.domain=localhost target/nacos-server.jar
- 指定log目录和级别,因为源码中使用了安装idea软件的参数

- 注意:因为该nacos默认是集群模式启动,参数项address.server.domain指明主节点位置(必须配置,不然报UnknownHostException)

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'distroMapper' defined in URL [jar:file:/root/wzDir/nacos/nacos-server.jar!/BOOT-INF/lib/nacos-naming-2.1.0.jar!/com/alibaba/nacos/naming/core/DistroMapper.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverMemberManager' defined in URL [jar:file:/root/wzDir/nacos/nacos-server.jar!/BOOT-INF/lib/nacos-core-2.1.0.jar!/com/alibaba/nacos/core/cluster/ServerMemberManager.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.cluster.ServerMemberManager]: Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.net
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:595)
... 85 common frames omitted
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'serverMemberManager' defined in URL [jar:file:/root/wzDir/nacos/nacos-server.jar!/BOOT-INF/lib/nacos-core-2.1.0.jar!/com/alibaba/nacos/core/cluster/ServerMemberManager.class]: Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.cluster.ServerMemberManager]: Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.net
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:304)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:285)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
... 98 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.alibaba.nacos.core.cluster.ServerMemberManager]: Constructor threw exception; nested exception is ErrCode:500, ErrMsg:jmenv.tbsite.net
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:187)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:117)
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:300)
... 112 common frames omitted
Caused by: com.alibaba.nacos.api.exception.NacosException: java.net.UnknownHostException: jmenv.tbsite.net
at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.run(AddressServerMemberLookup.java:152)
at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.doStart(AddressServerMemberLookup.java:100)
at com.alibaba.nacos.core.cluster.AbstractMemberLookup.start(AbstractMemberLookup.java:55)
at com.alibaba.nacos.core.cluster.ServerMemberManager.initAndStartLookup(ServerMemberManager.java:185)
at com.alibaba.nacos.core.cluster.ServerMemberManager.init(ServerMemberManager.java:165)
at com.alibaba.nacos.core.cluster.ServerMemberManager.<init>(ServerMemberManager.java:146)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:175)
... 114 common frames omitted
Caused by: java.net.UnknownHostException: jmenv.tbsite.net
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at sun.net.NetworkClient.doConnect(NetworkClient.java:175)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:463)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:558)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
at sun.net.www.http.HttpClient.New(HttpClient.java:339)
at sun.net.www.http.HttpClient.New(HttpClient.java:357)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:1220)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect0(HttpURLConnection.java:1156)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:1050)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:984)
at com.alibaba.nacos.common.http.client.request.JdkHttpClientRequest.execute(JdkHttpClientRequest.java:114)
at com.alibaba.nacos.common.http.client.NacosRestTemplate.execute(NacosRestTemplate.java:482)
at com.alibaba.nacos.common.http.client.NacosRestTemplate.get(NacosRestTemplate.java:72)
at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.syncFromAddressUrl(AddressServerMemberLookup.java:175)
at com.alibaba.nacos.core.cluster.lookup.AddressServerMemberLookup.run(AddressServerMemberLookup.java:143)
... 124 common frames omitted


浙公网安备 33010602011771号