CnosDB集群启动失败:默认租户‘cnosdb’初始化失败
CnosDB 2.3.0集群模式启动data节点崩溃:TenantNotFound { tenant: "cnosdb" }
问题描述
本地部署CnosDB 2.3.0(修订版本f4b52408171467c5ea2b2f75480deecc6f6ad733)集群模式时,启动data节点程序崩溃,抛出错误:
make dbms: Meta { source: TenantNotFound { tenant: "cnosdb" } }
默认租户cnosdb初始化失败,已确认meta节点监听127.0.0.1:8901正常,data节点配置的meta服务地址正确,但问题依旧。
配置信息
元数据节点(meta_1)
服务地址:127.0.0.1:8901
配置内容:
id = 1 host = "127.0.0.1" port = 8901 snapshot_path = "/tmp/meta_1/snapshot" journal_path = "/tmp/meta_1/journal" snapshot_per_events = 500 [log] level = "info" path = "/tmp/meta_1/logs" [meta_init] cluster_name = "meta_1" admin_user = "root" system_tenant = "cnosdb" default_database = ["public", "usage_schema"] [heartbeat] heartbeat_recheck_interval = 300 heartbeat_expired_interval = 600
数据节点(data_1)
服务地址:127.0.0.1:8912
配置内容:
host = '127.0.0.1' [cluster] name = 'data_1' http_listen_port = 8912 grpc_listen_port = 8913 flight_rpc_listen_port = 8914 tcp_listen_port = 8915 meta_service_addr = ['127.0.0.1:8901'] [node_basic] node_id = 1 cold_data_server = false store_metrics = true [deployment] mode = 'query_tskv' [query] [storage] path = '/tmp/data_1/data' [wal] path = '/tmp/data_1/wal' [cache] [log] level = 'info' path = '/tmp/data_1/wal' [security] [hinted_off] [heartbeat]
操作步骤及错误输出
# 清理环境 $ rm -rf /tmp/test/* # 启动元数据节点 $ cnosdb-meta --config ./meta_1.toml ......... # 初始化元数据集群 $ curl http://127.0.0.1:8901/init -d '{}' {"Ok":null} # 启动数据节点 $ cnosdb run --config data_1.toml ......... 2023-05-29T00:36:19.264002000+08:00 INFO tskv::wal: WAL '1' starts write 2023-05-29T00:36:19.264278000+08:00 WARN tskv::wal: Recover: reading wal from seq '0' 2023-05-29T00:36:19.264431000+08:00 INFO tskv::kvcore: Job 'WAL' starting. 2023-05-29T00:36:19.264463000+08:00 INFO tskv::kvcore: Flush task handler started 2023-05-29T00:36:19.264510000+08:00 INFO tskv::kvcore: Job 'WAL' started. 2023-05-29T00:36:19.264742000+08:00 INFO tskv::kvcore: Summary task handler started The application panicked (crashed). Message: make dbms: Meta { source: TenantNotFound { tenant: "cnosdb" } } Location: main/src/server.rs:246 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ BACKTRACE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ⋮ 10 frames hidden ⋮ 11: cnosdb::server::ServiceBuilder::create_dbms::{{closure}}::h1aef1bae443f563d at <unknown source file>:<unknown line> 12: cnosdb::server::ServiceBuilder::build_query_storage::{{closure}}::h778497860af930a7 at <unknown source file>:<unknown line> 13: cnosdb::main::{{closure}}::hd08bd0324e3b1f23 at <unknown source file>:<unknown line> 14: cnosdb::main::h4f1efcc4db9ef8ea at <unknown source file>:<unknown line> 15: std::sys_common::backtrace::__rust_begin_short_backtrace::hf3cbd67dc5a868f8 at <unknown source file>:<unknown line> 16: std::rt::lang_start::{{closure}}::h76d82e46c7eb707c at <unknown source file>:<unknown line> 17: std::rt::lang_start_internal::h672762ded3eb0218 at <unknown source file>:<unknown line> 18: _main<unknown> at <unknown source file>:<unknown line>
解决办法
确认meta节点初始化是否正确创建租户
执行命令查询meta节点中的租户信息:curl http://127.0.0.1:8901/api/v1/tenants如果返回结果中没有
cnosdb租户,说明初始化未成功创建默认租户。手动创建默认租户
若租户未存在,执行以下命令手动创建cnosdb租户:curl -X POST http://127.0.0.1:8901/api/v1/tenant \ -H "Content-Type: application/json" \ -d '{ "name": "cnosdb", "comment": "system tenant" }'创建完成后,再启动data节点。
检查data节点配置的租户一致性
确认data节点配置中是否指定了正确的租户名称,若未显式配置,CnosDB默认使用cnosdb作为租户名,需确保与meta节点中的租户名称完全一致。重新初始化meta集群(清理环境后)
若以上步骤无效,清理meta节点数据目录(/tmp/meta_1/snapshot、/tmp/meta_1/journal),重新启动meta节点并执行初始化命令:rm -rf /tmp/meta_1/snapshot /tmp/meta_1/journal cnosdb-meta --config ./meta_1.toml # 等待meta节点启动完成后执行 curl http://127.0.0.1:8901/init -d '{ "cluster_name": "meta_1", "admin_user": "root", "system_tenant": "cnosdb", "default_database": ["public", "usage_schema"] }'初始化时显式传入参数,避免默认配置未生效。
内容的提问来源于stack exchange,提问作者Darts
相关产品推荐
相关产品推荐

