ODC 生产环境部署最佳实践:MetaDB、Docker 与高可用架构配置全解析

📅 2026/8/22 15:20:46
ODC 生产环境部署最佳实践:MetaDB、Docker 与高可用架构配置全解析
ODC 生产环境部署最佳实践MetaDB、Docker 与高可用架构配置全解析【免费下载链接】odcOceanBase Developer Center(ODC), An open-source, enterprise-grade database tool for collaborative development项目地址: https://gitcode.com/gh_mirrors/od/odcODCOceanBase Developer Center是一款开源的企业级数据库开发协作工具覆盖 SQL 开发、数据变更、安全规则、在线 DDL 等数据库研发全流程。要把它稳定地跑在生产环境核心是三件事MetaDB 元数据库配置、Docker 容器化部署、高可用架构规划。本文面向新手和运维同学带你一步步搞懂 ODC 部署的关键配置项。 部署前先搞懂ODC 的三种运行角色ODC 服务端不只是一个进程而是由三种角色组成的架构理解它们是高可用部署的前提角色启动脚本职责建议部署odc-serverscript/start-odc.shWeb 服务、API 网关默认监听8989端口多实例 负载均衡odc-jobscript/start-job.sh任务执行器执行数据变更等后台任务独立节点可水平扩展odc-supervisorscript/start-supervisor.sh监控并调度 job 节点的任务分发与 server 同机关键机制所有角色共享同一个MetaDB元数据库。server 负责任务调度job 节点从 MetaDB 拉取任务执行——这就是 ODC 高可用的基础。角色切换靠环境变量实现设置ODC_BOOT_MODETASK_EXECUTOR→ 启动为任务执行器设置ODC_SUPERVISOR_LISTEN_PORT→ 启动为 supervisor 模式️ MetaDB 配置ODC 部署的核心依赖MetaDB 是 ODC 的大脑存储连接信息、流程记录、审计日志等全部元数据。生产环境强烈建议使用独立的 OceanBase 集群MySQL 模式租户作为 MetaDB。启动必填的环境变量查看script/start-odc.sh中的usage()函数可知启动前必须设置DATABASE_HOST— MetaDB 地址DATABASE_PORT— MetaDB 端口DATABASE_USERNAME— MetaDB 用户DATABASE_PASSWORD— MetaDB 密码DATABASE_NAME— 元数据库名建议odc_metadbODC_ADMIN_INITIAL_PASSWORD— 首次登录的 admin 初始密码务必设置强密码好消息MetaDB 的表结构无需手工建表。ODC 内置了server/odc-migrate/迁移模块如 AbstractMetaDBMigrate首次启动时自动完成建表和版本升级且通过MetaDBLockConfiguration加锁保证多实例并发启动时只有一个执行迁移。 Docker 部署一条命令跑起来的推荐方式生产环境推荐使用官方 Docker 镜像源码见 Dockerfile。它有几个值得了解的设计多架构支持通过ARG ARCH参数同时支持amd64和arm64x86 与国产 ARM 服务器均可部署基础镜像安全采用 AnolisOS 8.6并锁定 root 账号、禁用 SSH 密码登录进程守护镜像内置 supervisor 作为 ENTRYPOINT进程崩溃可自动拉起端口对外仅暴露8989一个 Web 端口export DATABASE_HOSTyour-metadb-host export DATABASE_PORT2881 export DATABASE_USERNAMEodctenant export DATABASE_PASSWORDyour-password export DATABASE_NAMEodc_metadb export ODC_ADMIN_INITIAL_PASSWORDyour-strong-pwd docker run -d -p 8989:8989 --env-file .env odc-server构建相关脚本在distribution/docker/目录RPM 离线包构建见script/build_rpm.sh发布目录说明见 distribution/README.md。⚙️ JVM 调优与高可用架构配置生产级 JVM 参数已内置可覆盖script/start-odc.sh中默认启用了经过调优的参数可直接按需覆盖参数默认值说明ODC_JVM_HEAP_OPTIONSMaxRAMPercentage45%堆内存占物理内存 45%K8S 环境自动提到 60%ODC_JVM_GC_OPTIONSG1GC GC 日志GC 日志自动轮转单文件 50MODC_JVM_OOM_OPTIONSExitOnOutOfMemoryErrorOOM 立即退出交给守护进程重启例如给 16G 内存的机器配置 8G 堆ODC_JVM_HEAP_OPTIONS-Xms8g -Xmx8g。推荐的高可用拓扑┌──────────────┐ 用户请求 ───▶ │ 负载均衡 │ └──────┬───────┘ ┌─────────┼─────────┐ ┌─────▼────┐ ┌──▼──────┐ │ │ odc-server│ │odc-server│ │ ← Web 层无状态可横向扩容 │ supervisor │ └─────┬────┘ └──────────┘ │ │ 共享 │ ┌─────▼───────────────────▼─┐ │ MetaDB 集群 │ ← 建议 3 节点 OceanBase └─────┬───────────────────┬──┘ ┌─────▼────┐ ┌────▼─────┐ │ odc-job │ │ odc-job │ ← 任务执行层独立部署 └──────────┘ └──────────┘最佳实践清单✅ Web 层部署2 个及以上odc-server 实例通过 Nginx/K8S Service 负载均衡实例间无状态随意增删✅ 大任务批量数据变更、导出多的场景将 odc-job 部署到独立机器避免任务占满 server 内存✅ 使用script/nohup-start-odc.sh或 systemd/Docker 守护保证进程异常退出后自动恢复✅ 关注log/odc.log与log/gc.log日志目录可用ODC_LOG_DIR自定义✅ 端口默认 8989如需修改设置ODC_SERVER_PORT 延伸阅读开发者指南docs/zh-CN/DEVELOPER_GUIDE.md版本发布说明docs/zh-CN/RELEASE_GUIDE.md核心服务模块server/odc-service/连接、流程、任务等 40 子模块Web 启动入口OdcServer.java掌握 MetaDB 配置、Docker 部署与角色分离这三个要点你的 ODC 就能稳稳跑在生产环境。【免费下载链接】odcOceanBase Developer Center(ODC), An open-source, enterprise-grade database tool for collaborative development项目地址: https://gitcode.com/gh_mirrors/od/odc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考