Skip to content

1.3.0版本如何通过关键字全局查询 #5401

Closed

Description

@zhuangdl

描述bug

你好,我们apollo是1.3.0版本,想通过关键字,查询在哪里配置了,有什么方法吗?看文档说管理员工具,但是我的怎么没有呢

Image

Image

Activity

  1. dosubot commented on Jun 5, 2025

    @dosubot

    Hi @zhuangdl! I'm Dosu and I’m helping the apollo team.

    Apollo 1.3.0 并不支持通过关键字进行全局配置查询。你在文档中看到的“管理员工具-全局搜索”功能,是在 2.4.0 版本才引入的,1.3.0 版本没有这个功能入口和后端实现,所以你现在的界面里找不到是正常的。如果需要全局搜索配置项,建议升级到 2.4.0 或更高版本,届时管理员可以在“管理员工具”中使用全局搜索功能,按 key 或 value 模糊查找配置项,定位其所在的应用、环境、集群和命名空间等参考。

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

  2. dosubot commented on Jun 5, 2025

    @dosubot

    Apollo 1.3.0 没有内置全局关键字查询功能,但你可以通过查数据库实现类似需求。核心配置数据存储在 Release 表(发布历史)和 Item 表(配置项)中。你可以用 SQL 在这些表里按 key 或 value 关键字模糊查询,比如:

    SELECT * FROM `Item` WHERE `Key` LIKE '%你的关键字%' OR `Value` LIKE '%你的关键字%';

    如果想查发布后的实际配置,可以查 Release 表的 Configurations 字段(JSON 格式),用 SQL 的 JSON 函数或导出后用脚本处理。

    Apollo 的服务端代码也是通过 service 层(如 ReleaseService、ReleaseRepository)查询这些表实现配置下发的,具体实现可以参考 ConfigController 和 ReleaseRepository。

    注意:直接查库有一定风险,建议只读操作,避免误操作影响线上环境。

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  3. zhuangdl commented on Jun 5, 2025

    @zhuangdl
    Author

    @dosu 非常感谢

  4. dosubot commented on Jun 5, 2025

    @dosubot

    不客气!有其他 Apollo 配置相关的问题随时 @我。祝你使用顺利!

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

  5. zhuangdl commented on Jun 5, 2025

    @zhuangdl
    Author

    @dosu 你好,如何通过namespace id获取app id呢

    Image

  6. dosubot commented on Jun 5, 2025

    @dosubot

    在 Apollo 1.3.0 里,NamespaceId(命名空间ID)和 AppId(应用ID)之间没有直接的映射表,但你可以通过查数据库的 Namespace 表来获取。Namespace 表里有 Id(即 NamespaceId)和 AppId 字段。

    你可以用如下 SQL 查询通过 NamespaceId 查到对应的 AppId:

    SELECT AppId FROM Namespace WHERE Id = {你的NamespaceId};

    这样就能拿到这个命名空间对应的应用ID了。注意只读查询,避免误操作影响线上环境。

    这种设计在 Apollo 1.3.0 里是通用的,所有命名空间的唯一标识其实是 AppId、ClusterName 和 NamespaceName 的组合,Id 只是数据库主键,业务查询一般用这三个字段组合参考。

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  7. zhuangdl commented on Jun 5, 2025

    @zhuangdl
    Author

    @dosu 谢谢,已解决

  8. dosubot commented on Jun 5, 2025

    @dosubot

    不客气!有需要随时 @我。

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

  9. zhuangdl commented on Jul 3, 2026

    @zhuangdl
    Author

    @dosu apollo机器、slb部署在云上,机器通过slb代理。本地和slb网络相同,本地和apollo机器不通。启动java程序报读apollo配置超时,将本地和config机器网络打通后,才能启动,这是为什么

  10. dosubot commented on Jul 3, 2026

    @dosubot

    这是 Apollo 的服务发现机制决定的。即使你的 Meta Server(SLB)地址本地可达,客户端最终仍然会直连 Config Service 的真实 IP,而不是通过 SLB 访问 Config Service。

    原因如下:

    Apollo 客户端启动时的连接流程是:

    客户端 → Meta Server (通过SLB) → 查询Eureka注册中心 → 返回 Config Service 实例的真实IP列表
        ↓
    客户端 → 直连 Config Service 实例IP:Port(绕过SLB)
    
    1. 客户端先通过 SLB 访问 Meta Server 的 /services/config 接口 [1]
    2. Meta Server 从 Eureka 获取已注册的 Config Service 实例列表,返回的是各实例的真实 IP+Port(homepageUrl 字段)[2]
    3. 客户端拿到这些 IP 后,直接用 IP+Port 连接 Config Service,实现客户端侧负载均衡和故障重试 [3]

    所以虽然你本地能访问 SLB,但客户端实际读配置时是直连 Config Service 机器的 IP,如果网络不通就会超时。

    解决方案(任选其一):

    • 打通网络:让本地能直接访问 Config Service 机器的 IP+Port(你目前的做法)
    • 修改注册地址:让 Config Service 注册到 Eureka 时使用 SLB 地址而非真实 IP(需要配置 eureka.instance.homePageUrl 等参数指向 SLB)
    • 使用 apollo.config-service 跳过服务发现:在客户端直接配置 -Dapollo.config-service=http://你的SLB地址,这样客户端会跳过 Meta Server 服务发现,直接用你指定的地址访问 Config Service

    这是 Apollo 架构设计上的特点——客户端使用长轮询(60秒 HTTP 长连接)实时接收配置变更推送 [4],这种有状态的持久连接更适合直连实例而非经过负载均衡器。

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

  11. zhuangdl commented on Jul 13, 2026

    @zhuangdl
    Author

    @dosu apollo 1.3.0版本,有DEV、UAT、PRO三个环境,如何将每个应用的UAT、PRO两个环境所有配置导出来

  12. dosubot commented on Jul 13, 2026

    @dosubot

    Apollo 1.3.0 没有内置的批量导出功能,只支持单个 namespace 逐个导出。要导出所有应用的 UAT 和 PRO 环境配置,有以下两种实用方案:

    方案一:直接查数据库(推荐,最高效)

    Apollo 每个环境有独立的 ApolloConfigDB,已发布的配置存储在 Release 表的 Configurations 字段(JSON 格式)。分别连接 UAT 和 PRO 环境的数据库执行:

    SELECT 
        AppId,
        ClusterName,
        NamespaceName,
        Configurations,
        DataChange_LastTime as LastModified
    FROM Release
    WHERE IsDeleted = 0
    ORDER BY AppId, NamespaceName;

    这样可以一次性拿到该环境所有应用的已发布配置 [1]。Configurations 字段是 JSON 格式的 key-value 键值对 。

    方案二:通过 Portal API 脚本导出

    1.3.0 版本有单 namespace 导出接口 [2]:

    GET /apps/{appId}/envs/{env}/clusters/{clusterName}/namespaces/{namespaceName}/items/export
    

    你可以写个脚本:先获取所有应用列表,再遍历每个应用的所有 namespace,逐个调用该接口导出。但效率不如直接查库。

    注意事项:

    • 查数据库请使用只读账号,避免误操作
    • 每个环境(UAT、PRO)对应独立的 ApolloConfigDB 实例,需要分别连接
    • 如果后续有批量导出需求较多,建议升级到较新版本,已内置全局批量导出功能 [3]

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  13. zhuangdl commented on Jul 13, 2026

    @zhuangdl
    Author

    @dosu 直接查数据库方式,是否消耗mysql过多资源

  14. dosubot commented on Jul 13, 2026

    @dosubot

    正常情况下不会消耗过多资源,原因如下:

    1. 数据量有限:Release 表的记录数取决于你的应用数量和 namespace 数量,一般中小规模(几百个应用)的数据量并不大,一次 SELECT 查询压力很小。

    2. 一次性查询:这是一次性的导出操作,不是持续高频查询,对数据库的影响是短暂的。

    3. 只读操作:纯 SELECT 不会产生锁竞争,不影响 Apollo 正常的配置读写。

    如果你仍然担心影响线上,建议:

    • 在业务低峰期执行
    • 如果有 MySQL 从库/只读副本,连接从库查询
    • 加上 LIMIT 分批导出,避免一次返回过大的结果集(主要是 Configurations 字段可能较大)
    • 可以先 SELECT COUNT(*) FROM Release WHERE IsDeleted = 0 评估一下数据量

    总的来说,对于一次性导出场景,直接查库是安全的,不用太担心。

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  15. 13 remaining items

  16. dosubot commented on Aug 28, 2026

    @dosubot

    @zhuangdl Apollo 1.3.0 的 Portal 没有专门的登录审计日志功能,代码本身不会主动记录"谁在什么时间登录了"这类信息 [1]。

    具体来说:

    1. 认证流程不产生业务日志:Portal 基于 Spring Security 实现登录(/signin 接口),但在认证成功或失败时没有专门打印日志或写入审计表的逻辑 [2]。

    2. Web 容器访问日志可以间接记录:如果你的 Tomcat 或 Nginx 开启了 access log,每次登录请求的 IP、时间、URL 会出现在容器的访问日志里(但不会记录用户名等业务信息)。

    3. 认证方式影响外部日志:Apollo 支持 default(无认证)、auth(Spring Security 数据库认证)、ldap、oidc 等多种登录模式 [3]。如果你接入了 LDAP 或 OIDC 外部认证系统,这些系统本身可能会有登录审计日志。

    总结:如果需要追溯 Portal 的登录记录,Apollo 1.3.0 本身不提供这个能力,需要依赖容器访问日志或外部认证系统的日志。

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

  17. zhuangdl commented on Aug 28, 2026

    @zhuangdl
    Author

    @dosu apollo-configservice.log、apollo-adminservice.log、apollo-portal.log记录的都是什么信息

  18. dosubot commented on Aug 28, 2026

    @dosubot

    @zhuangdl 这三个日志文件分别对应 Apollo 三个核心服务模块的运行日志,都是基于 Logback 的 Spring Boot 标准日志,默认级别为 INFO [1] [2] [3]:

    apollo-configservice.log — Config Service 的运行日志,主要包括服务启动信息、客户端拉取配置和长轮询通知的请求处理、Eureka 服务注册/发现相关信息,以及异常堆栈等。

    apollo-adminservice.log — Admin Service 的运行日志,主要包括服务启动信息、Portal 发起的配置增删改查和发布/回滚等管理操作的处理过程,以及异常堆栈等。

    apollo-portal.log — Portal Web 应用的运行日志,主要包括应用启动信息、用户在管理界面上的操作请求处理(如编辑配置、发布等)、调用 Admin Service 接口的记录,以及异常堆栈等。

    三个模块的日志配置结构完全一致,默认同时输出到文件和控制台 [4]。默认文件路径分别是 /tmp/apollo-configservice.log、/tmp/apollo-adminservice.log、/tmp/apollo-portal.log,可通过 LOG_PATH 或 LOG_FILE 环境变量修改 [5]。

    如果你是想排查某个具体问题(比如超时、报错),可以告诉我具体现象,我可以帮你定位应该重点看哪个日志和关注哪些关键字。

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

  19. zhuangdl commented on Aug 28, 2026

    @zhuangdl
    Author

    @dosu apollo-portal.log 能看到某个用户做了哪些操作吗

  20. dosubot commented on Aug 28, 2026

    @dosubot

    @zhuangdl apollo-portal.log 本身不能按用户维度追踪操作——它只是标准的应用运行日志(启动信息、请求处理、异常堆栈等),并非审计日志 [1]。

    Apollo 提供了专门的 Audit Log(审计日志)模块,能记录 Who, When, Why, Where, What and How 这些操作信息 [2],这才是你需要的功能。

    如何开启:
    在 application.properties 中添加 [3]:

    apollo.audit.log.enabled = true

    如何查看:

    • UI 方式:Portal 的「管理员工具(Admin Tools)」中有审计日志入口,可以搜索查看操作记录,还能查看具体字段的历史变更值 [4]
    • 数据库方式:数据存储在 ApolloPortalDB 的 AuditLog 和 AuditLogDataInfluence 表中,可以直接 SQL 查询 [5]

    操作人信息来自当前登录用户(通过 UserInfoHolder 获取)[6],也就是说用户通过 Portal 登录后执行的带审计注解的操作(创建应用、修改配置、发布等)都会被记录到 AuditLog 表中。

    注意: 审计日志模块是较新版本才引入的功能。如果你当前的版本较老,可能不包含该模块,需要升级后才能使用。

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

  21. zhuangdl commented on Oct 23, 2026

    @zhuangdl
    Author

    @dosu apollo1.3.0版本,某个appid提供了公共namespace test,类型为properties,有个配置name。如何查看哪些appid关联了该namespace并修改了name的值吗

  22. dosubot commented on Oct 23, 2026

    @dosubot

    可以通过 Namespace 关联 Item 表查询。Apollo 1.3.0 中,应用关联公共 Namespace 后,在自己的关联 Namespace 中配置同名 key,就可以覆盖公共值。这里要查的是各应用自己保存的 name,而不是继承到的公共值。1.3.0 的覆盖说明

    建议在目标环境的 ApolloConfigDB 中用只读账号执行下面的 SQL。将 公共配置所属AppId 替换成提供 test 的应用 ID;Namespace 名称按页面上的完整名称填写:

    SELECT
        n.AppId,
        n.ClusterName,
        n.NamespaceName,
        CASE WHEN i.Id IS NULL THEN '未本地覆盖'
             ELSE '有本地配置' END AS OverrideStatus,
        i.`Value` AS LocalValue,
        i.DataChange_LastModifiedBy AS LastModifiedBy,
        i.DataChange_LastTime AS LastModifiedTime
    FROM `Namespace` n
    LEFT JOIN `Item` i
        ON i.NamespaceId = n.Id
       AND i.`Key` = 'name'
       AND i.IsDeleted = 0
    WHERE n.NamespaceName = 'test'
      AND n.AppId <> '公共配置所属AppId'
      AND n.IsDeleted = 0
    ORDER BY n.AppId, n.ClusterName;

    这条查询按应用、集群列出关联情况:存在本地 name 时显示其值、最后修改人和时间;没有该项也会列出。若只看配置了本地覆盖值的应用,在 WHERE 中再加 AND i.Id IS NOT NULL。这些字段分别来自 Namespace 和 Item 表,二者通过 NamespaceId = Id 关联。[1]

    注意:这里查的是当前编辑状态,可能包含未发布修改;“有本地配置”也不代表它一定与公共值不同。若要确认客户端当前使用的已发布值,还需要核对对应应用、集群、Namespace 的最新有效发布,不能仅凭 Item 判断。[2]

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  23. zhuangdl commented on Oct 23, 2026

    @zhuangdl
    Author

    32. 可以通过 Namespace 关联 Item 表查询。Apollo 1.3.0 中,应用关联公共 Namespace 后,在自己的关联 Namespace 中配置同名 key,就可以覆盖公共值。这里要查的是各应用自己保存的 name,而不是继承到的公共值。1.3.0 的覆盖说明
    建议在目标环境的 ApolloConfigDB 中用只读账号执行下面的 SQL。将 公共配置所属AppId 替换成提供 test 的应用 ID;Namespace 名称按页面上的完整名称填写:
    SELECT
    n.AppId,
    n.ClusterName,
    n.NamespaceName,
    CASE WHEN i.Id IS NULL THEN '未本地覆盖'
    ELSE '有本地配置' END AS OverrideStatus,
    i.Value AS LocalValue,
    i.DataChange_LastModifiedBy AS LastModifiedBy,
    i.DataChange_LastTime AS LastModifiedTime
    FROM Namespace n
    LEFT JOIN Item i
    ON i.NamespaceId = n.Id
    AND i.Key = 'name'
    AND i.IsDeleted = 0
    WHERE n.NamespaceName = 'test'
    AND n.AppId <> '公共配置所属AppId'
    AND n.IsDeleted = 0
    ORDER BY n.AppId, n.ClusterName;

     这条查询按应用、集群列出关联情况:存在本地 `name` 时显示其值、最后修改人和时间;没有该项也会列出。若**只看配置了本地覆盖值的应用**,在 `WHERE` 中再加 `AND i.Id IS NOT NULL`。这些字段分别来自 `Namespace` 和 `Item` 表,二者通过 `NamespaceId = Id` 关联。[[1]](https://github.com/apolloconfig/apollo/blob/ea356770c6393deccd1dbfb18e5a7607e71f2f9e/scripts/sql/src/apolloconfigdb.sql#L231-L271)
     注意:这里查的是**当前编辑状态**,可能包含未发布修改;“有本地配置”也不代表它一定与公共值不同。若要确认客户端当前使用的已发布值,还需要核对对应应用、集群、Namespace 的最新有效发布,不能仅凭 `Item` 判断。[[2]](https://github.com/apolloconfig/apollo/blob/ea356770c6393deccd1dbfb18e5a7607e71f2f9e/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java#L443-L474)
     
     _To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=apolloconfig%2Fapollo)._
     
     Docs are dead. Just use [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-tagline&utm_term=apolloconfig%2Fapollo).
     [![Leave Feedback](https://camo.githubusercontent.com/36dab98b8d4c28691f39c02dac135dc55eafb15d1194cd4c3280d181fde2f178/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c65617665253230466565646261636b2d3535353535353f7374796c653d666c6174)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-feedback&utm_term=apolloconfig%2Fapollo&message_id=f188f57a-591a-44f7-bf97-62998798013d) [![Ask Dosu about apollo](https://camo.githubusercontent.com/ce64e68b2ce2c5d775603775af58cac84a1d0172ce48b87733c58356fc4e622b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41736b253230446f737525323061626f757425323061706f6c6c6f2d3266376233663f7374796c653d666c6174266c6f676f3d64617461253341696d616765253246737667253242786d6c25334262617365363425324350484e325a79423361575230614430694f4459694947686c6157646f644430694f446b6949485a705a58644362336739496a41674d4341344e6941344f5349675a6d6c7362443069626d39755a53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e496a3438634746306143426b50534a4e4e5334794f54497a4e6941784d6934334f544934544445334c6a63314f544d674e6934324f4445344f4659334d6934314e6a5933544455754d6a6b794d7a59674f4451754d4459784f4659784d6934334f544934576949675a6d6c736244306949304930516b49354d534976506a78775958526f49475139496b30784f4334794e5463314944637a4c6a45784f545a4d4e546b754d544d794f5341334d6934334e44684d4e5445754e7a41784d5341344d6934304d446b31544449354c6a417a4d7a67674f4459754d6a6b78544459754d6a4d354e6a49674f4455754d5455314e4577784f4334794e5463314944637a4c6a45784f545a614969426d615778735053496a4e7a63344e54597849693825324250484268644767675a443069545445334c6a51354d5459674d7934334d7a597a4d30777a4c6a55344e545533494445794c6a63774f546c574f444d754e5463354d6b4d7a4c6a55344e545533494467304c6a63314e4449674e4334354f4455324d7941344e53347a4e6a5579494455754f4451334d4455674f4451754e545932544445354c6a59794f5459674e7a45754e7a67774d534967633352796232746c50534a696247466a61794967633352796232746c4c5864705a48526f505349324c6a51794f4451304969427a64484a766132557462476c755a574e6863443069636d3931626d51694c7a34386257467a617942705a4430695a47397a6453316b4c574e3164473931644349675a6d6c73624430696432687064475569506a78775958526f49475a7062477774636e56735a5430695a585a6c626d396b5a43496759327870634331796457786c50534a6c646d56756232526b4969426b50534a4e4e4441754e7a4130494441754e5445344d445932534445334c6a41304d7a6c574e7a59754d6a49794d5567304d4334334d4452494e4449754e5467774e5567304e7934344d44457a517a59344c6a63774e6a51674e7a59754d6a49794d5341344e5334324e544d7a494455354c6a49334e5449674f4455754e6a557a4d79417a4f43347a4e7a4178517a67314c6a59314d7a4d674d5463754e445931494459344c6a63774e6a4d674d4334314d5467774e6a59674e4463754f4441784d7941774c6a55784f4441324e6b67304d6934314f444131534451774c6a63774e466f694c7a34384c32316863327325324250484268644767675a6d6c73624331796457786c50534a6c646d56756232526b4969426a62476c774c584a3162475539496d56325a5735765a47516949475139496b30304d4334334d4451674d4334314d5467774e6a5a494d5463754d44517a4f5659334e6934794d6a4978534451774c6a63774e4567304d6934314f444131534451334c6a67774d544e444e6a67754e7a41324e4341334e6934794d6a4978494467314c6a59314d7a4d674e546b754d6a63314d6941344e5334324e544d7a49444d344c6a4d334d4446444f4455754e6a557a4d7941784e7934304e6a55674e6a67754e7a41324d7941774c6a55784f4441324e6941304e7934344d44457a494441754e5445344d445932534451794c6a55344d4456494e4441754e7a4130576949675a6d6c73624430694930597a526a5a474d534976506a78775958526f49475139496b30784e7934774e444d35494441754e5445344d445932566930324c6a55334f54453553446b754f5451324e6a6c574d4334314d5467774e6a5a494d5463754d44517a4f56704e4d5463754d44517a4f5341334e6934794d6a497853446b754f5451324e6a6c574f444d754d7a45354e4567784e7934774e444d35566a63324c6a49794d6a4661545445334c6a41304d7a6b674e7934324d54557a4d6b67304d4334334d4452574c5459754e5463354d546c494d5463754d44517a4f5659334c6a59784e544d79576b30794e4334784e444579494463324c6a49794d6a46574d4334314d5467774e6a5a494f5334354e4459324f5659334e6934794d6a4978534449304c6a45304d544a61545451774c6a63774e4341324f5334784d6a5135534445334c6a41304d7a6c574f444d754d7a45354e4567304d4334334d4452574e6a6b754d5449304f56704e4e4449754e5467774e5341324f5334784d6a5135534451774c6a63774e4659344d79347a4d546b30534451794c6a55344d4456574e6a6b754d5449304f56704e4e4463754f4441784d7941324f5334784d6a5135534451794c6a55344d4456574f444d754d7a45354e4567304e7934344d44457a566a59354c6a45794e446c61545463344c6a55314e69417a4f43347a4e7a4178517a63344c6a55314e6941314e53347a4e545531494459304c6a63344e6a63674e6a6b754d5449304f5341304e7934344d44457a494459354c6a45794e446c574f444d754d7a45354e454d334d6934324d6a59784944677a4c6a4d784f5451674f5449754e7a55774e5341324d7934784f54513549446b794c6a63314d4455674d7a67754d7a63774d5567334f4334314e545a61545451334c6a67774d544d674e7934324d54557a4d6b4d324e4334334f445932494463754e6a45314d7a49674e7a67754e545532494449784c6a4d344e4463674e7a67754e54553249444d344c6a4d334d4446494f5449754e7a55774e554d354d6934334e5441314944457a4c6a55304e544d674e7a49754e6a4932494330324c6a55334f544535494451334c6a67774d544d674c5459754e5463354d546c574e7934324d54557a4d6c704e4e4449754e5467774e5341334c6a59784e544d79534451334c6a67774d544e574c5459754e5463354d546c494e4449754e5467774e5659334c6a59784e544d79576b30304d4334334d4451674e7934324d54557a4d6b67304d6934314f444131566930324c6a55334f544535534451774c6a63774e4659334c6a59784e544d79576949675a6d6c7362443069596d7868593273694947316863327339496e56796243676a5a47397a6453316b4c574e316447393164436b694c7a3438634746306143426b50534a4e4e6a67754f5449784e53417a4e6934774d544d31517a59344c6a6b794d5455674d7a59754d44457a4e5341324e5334334d7a5935494451354c6a51334d7a67674e5445754e44497a4d5341304f5334304e7a4d34517a4d334c6a45774f544d674e446b754e44637a4f43417a4d6934314e7a673349444d334c6a4d314f5459674d7a49754e5463344e79417a4e6934774d544d314969427a64484a7661325539496d4a7359574e724969427a64484a766132557464326c6b64476739496a63754e6a6b784e6a456949484e30636d39725a5331736157356c5932467750534a79623356755a434967633352796232746c4c577870626d567162326c7550534a79623356755a434976506a78775958526f49475139496b30774c6a4d304f44597a4d7941344e5334304f545132517a41754d7a51344e6a4d7a494467314c6a51354e4459674d6a6b754e4467314e6941344e5334344d7a413549444d304c6a67774f5341344e5334324f5468444e4451754f444d7a4e7941344e5334304e446333494455784c6a49344e7a49674f4451754e444179494455334c6a55794e6a6b674e7a67754f5463794e454d324d6934344d544935494463304c6a4d334d6a63674e7a55754d544d304d6941314f5334324f444d32494463314c6a457a4e4449674e546b754e6a677a4e694967633352796232746c50534a696247466a61794967633352796232746c4c5864705a48526f505349324c6a45324e4467794969382532425043397a646d63253242)](https://github.dosu.com/apolloconfig/apollo?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-ask-repo&utm_term=apolloconfig%2Fapollo) [![Share Dosu with your team](https://camo.githubusercontent.com/75e6a5670cb470de110632344578950590e98c31e05e4b76b7c0a8caca2f1be5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5368617265253230446f737525323077697468253230796f75722532307465616d2d3166366665623f7374796c653d666c6174)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-share-team&utm_term=apolloconfig%2Fapollo)
    

    @dosu 这个sql确定没问题吧,执行了返回为空

  24. dosubot commented on Oct 23, 2026

    @dosubot

    关联条件本身没错,但我上条没有把“返回空”的排查讲清楚,抱歉。如果执行的是原始 LEFT JOIN,没有额外加 AND i.Id IS NOT NULL,即使没有本地 name,也应该返回关联的 Namespace。 所以应先排查 Namespace 的名称、环境和排除 AppId 的条件,而不是先查 Item。

    建议按下面两步只读查询:

    1. 确认连接的是目标环境的 ApolloConfigDB,DEV、UAT、PRO 要分别查各自的库,不能用一个环境的结果代表其他环境。[1]

      先查看提供公共配置的应用实际有哪些 Namespace:

      SELECT DATABASE();
      
      SELECT Id, AppId, ClusterName, NamespaceName
      FROM `Namespace`
      WHERE AppId = '提供公共配置的实际AppId'
        AND IsDeleted = 0;

      注意实际名称可能是 部门编号.test,而不是 test;公共 Namespace 创建时可以自动加部门前缀,properties 类型本身不加 .properties 后缀。[2]

    2. 用上一步查出的完整名称查询,暂时不要排除任何 AppId:

      SELECT Id, AppId, ClusterName, NamespaceName
      FROM `Namespace`
      WHERE NamespaceName = '上一步查到的完整名称'
        AND IsDeleted = 0
      ORDER BY AppId, ClusterName;

      这些就是之前 SQL 左表应匹配的记录。[3]

      • 如果这里只剩公共配置所属应用,那么原 SQL 排除它后返回空是符合预期的。
      • 如果有其他 AppId,把这个完整名称填回原 SQL;排除条件应填写公共配置所属 AppId,不要填成关联方 AppId。
      • 如果你额外加过 AND i.Id IS NOT NULL,请先去掉,否则没有本地 name 的记录都会被过滤。

    另外,客户端读取了公共 Namespace,不代表它一定在 Portal 中做过关联。不需要覆盖配置的应用可以直接使用公共配置,因此这条 SQL 不能列出所有读取它的应用。[4]

    请贴一下这两步的脱敏结果,以及实际执行的 SQL,不用提供配置值,就能继续定位是哪个条件过滤掉了记录。

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  25. zhuangdl commented on Oct 23, 2026

    @zhuangdl
    Author

    @dosu 能否用这种思路,通过key的名称,查对应value。要求返回appid、namespace、key、value

  26. dosubot commented on Oct 23, 2026

    @dosubot

    可以。通过 Item.NamespaceId = Namespace.Id 关联,就能按 key 查询对应的 AppId、Namespace、key 和 value。[1]

    在目标环境的 ApolloConfigDB 中,用只读账号执行,把 name 换成你要查的 key:

    SELECT
        n.AppId AS appid,
        n.NamespaceName AS namespace,
        i.`Key` AS `key`,
        i.`Value` AS `value`
    FROM `Item` i
    INNER JOIN `Namespace` n ON n.Id = i.NamespaceId
    WHERE i.`Key` = 'name'
      AND i.IsDeleted = 0
      AND n.IsDeleted = 0
    ORDER BY n.AppId, n.NamespaceName, n.ClusterName;

    如果要按 key 模糊查询,将条件改成:

    WHERE i.`Key` LIKE '%name%'

    同一应用的不同集群可能都有这个 key,建议在 SELECT 中再加一列 n.ClusterName AS cluster,便于区分。[2]

    注意:查询结果是数据库中当前保存的配置项,可能包含未发布修改,不一定是客户端正在使用的值;它也不会把公共 Namespace 的继承值展开到每个使用它的 AppId 下。[3] [4]

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  27. zhuangdl commented on Oct 23, 2026

    @zhuangdl
    Author

    32. 可以。通过 Item.NamespaceId = Namespace.Id 关联,就能按 key 查询对应的 AppId、Namespace、key 和 value。[1]
    在目标环境的 ApolloConfigDB 中,用只读账号执行,把 name 换成你要查的 key:
    SELECT
    n.AppId AS appid,
    n.NamespaceName AS namespace,
    i.Key AS key,
    i.Value AS value
    FROM Item i
    INNER JOIN Namespace n ON n.Id = i.NamespaceId
    WHERE i.Key = 'name'
    AND i.IsDeleted = 0
    AND n.IsDeleted = 0
    ORDER BY n.AppId, n.NamespaceName, n.ClusterName;

     如果要按 key **模糊查询**,将条件改成:
     WHERE i.`Key` LIKE '%name%'
         
           
         
     
           
         
     
         
       
     同一应用的不同集群可能都有这个 key,建议在 `SELECT` 中再加一列 `n.ClusterName AS cluster`,便于区分。[[2]](https://github.com/apolloconfig/apollo/blob/ea356770c6393deccd1dbfb18e5a7607e71f2f9e/scripts/sql/src/apolloconfigdb.sql#L257-L271)
     注意:查询结果是数据库中**当前保存的配置项**,可能包含未发布修改,不一定是客户端正在使用的值;它也不会把公共 Namespace 的继承值展开到每个使用它的 AppId 下。[[3]](https://github.com/apolloconfig/apollo/blob/ea356770c6393deccd1dbfb18e5a7607e71f2f9e/apollo-biz/src/main/java/com/ctrip/framework/apollo/biz/service/NamespaceService.java#L440-L463) [[4]](https://github.com/apolloconfig/apollo/blob/ea356770c6393deccd1dbfb18e5a7607e71f2f9e/apollo-portal/src/main/resources/static/i18n/zh-CN.json#L503-L508)
     
     _To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=apolloconfig%2Fapollo)._
     
     Docs are dead. Just use [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-tagline&utm_term=apolloconfig%2Fapollo).
     [![Leave Feedback](https://camo.githubusercontent.com/36dab98b8d4c28691f39c02dac135dc55eafb15d1194cd4c3280d181fde2f178/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c65617665253230466565646261636b2d3535353535353f7374796c653d666c6174)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-feedback&utm_term=apolloconfig%2Fapollo&message_id=dfb35ecb-04c2-4388-99f8-49155eccd061) [![Ask Dosu about apollo](https://camo.githubusercontent.com/ce64e68b2ce2c5d775603775af58cac84a1d0172ce48b87733c58356fc4e622b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f41736b253230446f737525323061626f757425323061706f6c6c6f2d3266376233663f7374796c653d666c6174266c6f676f3d64617461253341696d616765253246737667253242786d6c25334262617365363425324350484e325a79423361575230614430694f4459694947686c6157646f644430694f446b6949485a705a58644362336739496a41674d4341344e6941344f5349675a6d6c7362443069626d39755a53496765473173626e4d39496d6830644841364c79393364336375647a4d7562334a6e4c7a49774d44417663335a6e496a3438634746306143426b50534a4e4e5334794f54497a4e6941784d6934334f544934544445334c6a63314f544d674e6934324f4445344f4659334d6934314e6a5933544455754d6a6b794d7a59674f4451754d4459784f4659784d6934334f544934576949675a6d6c736244306949304930516b49354d534976506a78775958526f49475139496b30784f4334794e5463314944637a4c6a45784f545a4d4e546b754d544d794f5341334d6934334e44684d4e5445754e7a41784d5341344d6934304d446b31544449354c6a417a4d7a67674f4459754d6a6b78544459754d6a4d354e6a49674f4455754d5455314e4577784f4334794e5463314944637a4c6a45784f545a614969426d615778735053496a4e7a63344e54597849693825324250484268644767675a443069545445334c6a51354d5459674d7934334d7a597a4d30777a4c6a55344e545533494445794c6a63774f546c574f444d754e5463354d6b4d7a4c6a55344e545533494467304c6a63314e4449674e4334354f4455324d7941344e53347a4e6a5579494455754f4451334d4455674f4451754e545932544445354c6a59794f5459674e7a45754e7a67774d534967633352796232746c50534a696247466a61794967633352796232746c4c5864705a48526f505349324c6a51794f4451304969427a64484a766132557462476c755a574e6863443069636d3931626d51694c7a34386257467a617942705a4430695a47397a6453316b4c574e3164473931644349675a6d6c73624430696432687064475569506a78775958526f49475a7062477774636e56735a5430695a585a6c626d396b5a43496759327870634331796457786c50534a6c646d56756232526b4969426b50534a4e4e4441754e7a4130494441754e5445344d445932534445334c6a41304d7a6c574e7a59754d6a49794d5567304d4334334d4452494e4449754e5467774e5567304e7934344d44457a517a59344c6a63774e6a51674e7a59754d6a49794d5341344e5334324e544d7a494455354c6a49334e5449674f4455754e6a557a4d79417a4f43347a4e7a4178517a67314c6a59314d7a4d674d5463754e445931494459344c6a63774e6a4d674d4334314d5467774e6a59674e4463754f4441784d7941774c6a55784f4441324e6b67304d6934314f444131534451774c6a63774e466f694c7a34384c32316863327325324250484268644767675a6d6c73624331796457786c50534a6c646d56756232526b4969426a62476c774c584a3162475539496d56325a5735765a47516949475139496b30304d4334334d4451674d4334314d5467774e6a5a494d5463754d44517a4f5659334e6934794d6a4978534451774c6a63774e4567304d6934314f444131534451334c6a67774d544e444e6a67754e7a41324e4341334e6934794d6a4978494467314c6a59314d7a4d674e546b754d6a63314d6941344e5334324e544d7a49444d344c6a4d334d4446444f4455754e6a557a4d7941784e7934304e6a55674e6a67754e7a41324d7941774c6a55784f4441324e6941304e7934344d44457a494441754e5445344d445932534451794c6a55344d4456494e4441754e7a4130576949675a6d6c73624430694930597a526a5a474d534976506a78775958526f49475139496b30784e7934774e444d35494441754e5445344d445932566930324c6a55334f54453553446b754f5451324e6a6c574d4334314d5467774e6a5a494d5463754d44517a4f56704e4d5463754d44517a4f5341334e6934794d6a497853446b754f5451324e6a6c574f444d754d7a45354e4567784e7934774e444d35566a63324c6a49794d6a4661545445334c6a41304d7a6b674e7934324d54557a4d6b67304d4334334d4452574c5459754e5463354d546c494d5463754d44517a4f5659334c6a59784e544d79576b30794e4334784e444579494463324c6a49794d6a46574d4334314d5467774e6a5a494f5334354e4459324f5659334e6934794d6a4978534449304c6a45304d544a61545451774c6a63774e4341324f5334784d6a5135534445334c6a41304d7a6c574f444d754d7a45354e4567304d4334334d4452574e6a6b754d5449304f56704e4e4449754e5467774e5341324f5334784d6a5135534451774c6a63774e4659344d79347a4d546b30534451794c6a55344d4456574e6a6b754d5449304f56704e4e4463754f4441784d7941324f5334784d6a5135534451794c6a55344d4456574f444d754d7a45354e4567304e7934344d44457a566a59354c6a45794e446c61545463344c6a55314e69417a4f43347a4e7a4178517a63344c6a55314e6941314e53347a4e545531494459304c6a63344e6a63674e6a6b754d5449304f5341304e7934344d44457a494459354c6a45794e446c574f444d754d7a45354e454d334d6934324d6a59784944677a4c6a4d784f5451674f5449754e7a55774e5341324d7934784f54513549446b794c6a63314d4455674d7a67754d7a63774d5567334f4334314e545a61545451334c6a67774d544d674e7934324d54557a4d6b4d324e4334334f445932494463754e6a45314d7a49674e7a67754e545532494449784c6a4d344e4463674e7a67754e54553249444d344c6a4d334d4446494f5449754e7a55774e554d354d6934334e5441314944457a4c6a55304e544d674e7a49754e6a4932494330324c6a55334f544535494451334c6a67774d544d674c5459754e5463354d546c574e7934324d54557a4d6c704e4e4449754e5467774e5341334c6a59784e544d79534451334c6a67774d544e574c5459754e5463354d546c494e4449754e5467774e5659334c6a59784e544d79576b30304d4334334d4451674e7934324d54557a4d6b67304d6934314f444131566930324c6a55334f544535534451774c6a63774e4659334c6a59784e544d79576949675a6d6c7362443069596d7868593273694947316863327339496e56796243676a5a47397a6453316b4c574e316447393164436b694c7a3438634746306143426b50534a4e4e6a67754f5449784e53417a4e6934774d544d31517a59344c6a6b794d5455674d7a59754d44457a4e5341324e5334334d7a5935494451354c6a51334d7a67674e5445754e44497a4d5341304f5334304e7a4d34517a4d334c6a45774f544d674e446b754e44637a4f43417a4d6934314e7a673349444d334c6a4d314f5459674d7a49754e5463344e79417a4e6934774d544d314969427a64484a7661325539496d4a7359574e724969427a64484a766132557464326c6b64476739496a63754e6a6b784e6a456949484e30636d39725a5331736157356c5932467750534a79623356755a434967633352796232746c4c577870626d567162326c7550534a79623356755a434976506a78775958526f49475139496b30774c6a4d304f44597a4d7941344e5334304f545132517a41754d7a51344e6a4d7a494467314c6a51354e4459674d6a6b754e4467314e6941344e5334344d7a413549444d304c6a67774f5341344e5334324f5468444e4451754f444d7a4e7941344e5334304e446333494455784c6a49344e7a49674f4451754e444179494455334c6a55794e6a6b674e7a67754f5463794e454d324d6934344d544935494463304c6a4d334d6a63674e7a55754d544d304d6941314f5334324f444d32494463314c6a457a4e4449674e546b754e6a677a4e694967633352796232746c50534a696247466a61794967633352796232746c4c5864705a48526f505349324c6a45324e4467794969382532425043397a646d63253242)](https://github.dosu.com/apolloconfig/apollo?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-ask-repo&utm_term=apolloconfig%2Fapollo) [![Share Dosu with your team](https://camo.githubusercontent.com/75e6a5670cb470de110632344578950590e98c31e05e4b76b7c0a8caca2f1be5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5368617265253230446f737525323077697468253230796f75722532307465616d2d3166366665623f7374796c653d666c6174)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-share-team&utm_term=apolloconfig%2Fapollo)
    

    @dosu 这个sql能展示关联公共namespace的appid和修改后配置,需要再修改下sql,指定key名和namespace名

  28. dosubot commented on Oct 23, 2026

    @dosubot

    可以,在原 SQL 中同时指定 Namespace 名和 key 名,并排除公共配置提供方的 AppId,就能列出关联应用本地保存的覆盖值。[1]

    在目标环境的 ApolloConfigDB 中用只读账号执行,替换下面三个条件值:

    SELECT
        n.AppId AS appid,
        n.ClusterName AS cluster,
        n.NamespaceName AS namespace,
        i.`Key` AS `key`,
        i.`Value` AS `value`
    FROM `Namespace` n
    INNER JOIN `Item` i ON i.NamespaceId = n.Id
    WHERE n.NamespaceName = 'test'              -- 公共 Namespace 完整名称
      AND i.`Key` = 'name'                     -- 要查询的 key
      AND n.AppId <> '公共配置所属的实际AppId'   -- 排除公共配置提供方
      AND n.IsDeleted = 0
      AND i.IsDeleted = 0
    ORDER BY n.AppId, n.ClusterName;

    这条 SQL 只返回本地配置了该 key 的关联应用,不会列出仅继承公共值、没有本地配置该 key 的应用;即使本地值与公共值相同,也会返回。[1]

    结果仍是当前保存的编辑值,可能尚未发布,不一定是客户端正在使用的值。[2]

    To reply, just mention @dosu.


    Docs are dead. Just use Dosu.

    Leave Feedback Ask Dosu about apollo Share Dosu with your team

  29. zhuangdl commented on Oct 23, 2026

    @zhuangdl
    Author

    @dosu 如何查某个公共命名空间被哪些appid关联了

  30. dosubot commented on Oct 23, 2026

    @dosubot

    只查“哪些 AppId 关联了公共 Namespace”,不需要关联 Item 表,也不需要指定 key。直接按 Namespace 名查询,并排除公共配置提供方的 AppId 即可,Apollo 的关联统计也使用这个逻辑。[1]

    在目标环境的 ApolloConfigDB 中,用只读账号执行:

    SELECT DISTINCT AppId
    FROM `Namespace`
    WHERE NamespaceName = 'test'                 -- 替换为公共 Namespace 完整名称
      AND AppId <> '公共配置所属的实际AppId'      -- 替换为提供方 AppId
      AND IsDeleted = 0
    ORDER BY AppId;

    如果还想看关联在哪个集群,将查询列改成 SELECT DISTINCT AppId, ClusterName 即可。[2]

    注意:这查的是显式关联,不是所有读取该公共 Namespace 的应用。应用如果只读取公共配置、不做覆盖,可以不创建关联,所以不会出现在这个结果中。[3]

    To reply, just mention @dosu.


    Share context across your team and agents. Try Dosu.

    Leave Feedback Learn about apollo with Dosu Add Dosu to your team

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions