驱动接入(全部本机真实例验收): - Elasticsearch 原生 SQL API、InfluxDB 原生 HTTP+Flux(官方 JDBC 付费许可,实测弃用) - ZooKeeper/MongoDB JVM agent(连接时自动下载官方驱动 jar,sha256 钉版本到 ~/.opsxdb/drivers/) - 达梦 JDBC agent 桥就绪(待厂商 jar+实例);TiDB 真实例验收 - 协议族代码审查放行 PolarDB/TDSQL/OceanBase/Kingbase/GaussDB/Oracle - 驱动能力模型:按驱动开关对象树分组/右键菜单/行编辑,NoSQL 树拍平(对象直挂库节点) 驱动管理: - 驱动管理弹框(状态/预装/离线包导入/JDK 检测)+ /api/drivers/* 三接口 - opsxdb-driver 驱动商店仓库(清单/fetch.sh/pack.sh 离线包/import.sh) - 连接时懒加载:DMG 零 Java 产物,首连自动下载(实测 ZK 九件套 1.35s),离线包自动回退 UI/交互: - 设置中心(⚙):常规/执行/结果/驱动/快捷键/关于,左导航+右面板(对标 opsxshell) - 实例级展开箭头(行首 SVG chevron,替代字体回退失真的 Unicode 三角) - 树内嵌套渲染修复:对象树挂在激活连接下;工具栏窄窗口不断行(按钮 nowrap+整颗换行) - 侧栏连接行精简(图标+连接名)、SQLite SSH 守卫、Oracle 死参数清理 质量: - Go 协议层/离线回退单测、E2E 门控测试(ES/ZK/Influx/Mongo/TiDB/JDBC 桥) - 驱动注册表单一事实来源 connection-types.json,README/BACKLOG/AGENTS 同步
OpsxDB 测试数据库环境
联调 / 回归用的 Docker 库。不要同时开多个,否则占内存、干扰性能测试。
a–e 对照
| 代号 | 服务 | 宿主机端口 | 账号 | 密码 | 默认库 |
|---|---|---|---|---|---|
| a | MySQL 8 | 3306 |
root / opsx |
Demo@123 |
demo |
| b | MariaDB 11 | 3307 |
root / opsx |
Demo@123 |
demo |
| c | PostgreSQL 16 | 5432 |
opsx |
Demo@123 |
demo |
| d | SQL Server 2022 | 1433 |
sa |
Demo@12345 |
先建 demo |
| e | Oracle XE 21 | 1521 |
opsx(或 system) |
Demo@123 |
Service XEPDB1 |
| f | Redis 7 | 6379 |
— | — | db 0 |
| g | ZooKeeper 3.9 | 2181 |
— | — | 无认证 |
| h | Elasticsearch 8.15 | 9200 |
— | — | 安全已关,本机联调 |
| i | InfluxDB 2.7 | 8086 |
opsx |
Demo@123 |
org opsx / bucket demo / token opsxdb-demo-token |
SQL Server 首次进库:
CREATE DATABASE demo;
常用命令
cd /Users/logan/devops/opsxdb/tests
./dbctl.sh pull # 国内加速拉取 ZK / ES / InfluxDB
./dbctl.sh up a # 或 up mysql —— 只起这一个
./dbctl.sh up g # ZooKeeper :2181
./dbctl.sh up h # Elasticsearch :9200(吃内存)
./dbctl.sh up i # InfluxDB :8086
./dbctl.sh up c # 只开 PostgreSQL(会先停掉其它测试库)
./dbctl.sh status
./dbctl.sh logs mysql
./dbctl.sh down mysql # 停一个(保留数据卷)
./dbctl.sh down # 停全部
./dbctl.sh reset oracle # 删卷重来(镜像大,慎用)
在 OpsxDB 里怎么连
- 仓库根目录
./run.sh web→ http://127.0.0.1:5174 - 新建连接 → 选驱动 → 填上表参数 → 测试连接
- 打开
demo,执行SELECT * FROM users;(MySQL / MariaDB / PG 已有种子表)
注意
- 一次只
up一个;dbctl.sh up发现其它测试库在跑会先停掉。 - Oracle / SQL Server / Elasticsearch 镜像大、启动慢,只在验证对应项时再开。
down不删卷,reset才删。- 镜像默认走 DaoCloud:
DOCKER_MIRROR=docker.m.daocloud.io(失败再试docker.1ms.run)。
ZooKeeper / ES / Influx 在 OpsxDB 里:
| 类型 | 主机 | 端口 | 说明 |
|---|---|---|---|
| ZooKeeper | 127.0.0.1 | 2181 | 用户密码留空 |
| Elasticsearch | 127.0.0.1 | 9200 | 用户密码留空(xpack 已关) |
| InfluxDB | 127.0.0.1 | 8086 | 用户 opsx / 密码 Demo@123,库名填 demo |
demo
## ---------- 先拉镜像 ---------- ##
docker pull mysql:8
docker pull mariadb:11
docker pull postgres:16
# 国内加速拉完打短 tag,不要把 daocloud/mcr 前缀留在本地名里
# mcr.m.daocloud.io/mssql/server:2022-latest → mssql/server:2022-latest
# docker.m.daocloud.io/library/zookeeper:3.9 → zookeeper:3.9
./dbctl.sh pull mssql
./dbctl.sh pull new
docker pull gvenzl/oracle-xe:21-slim
docker pull redis:7-alpine
docker pull ubuntu:24.04
docker pull eclipse-temurin:17-jdk
docker pull eclipse-temurin:17-jre
docker pull golang:1.25-alpine
docker pull nginx:alpine
docker pull maven:3.9-eclipse-temurin-17
## ---------- 后台常驻(数据库 / 缓存) ---------- ##
# MySQL 8
docker run -d --name demo-mysql --restart unless-stopped \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=Demo@123 \
-e MYSQL_DATABASE=demo \
mysql:8
# MariaDB 11(宿主机 3307,避免和 MySQL 抢端口)
docker run -d --name demo-maria --restart unless-stopped \
-p 3307:3306 \
-e MARIADB_ROOT_PASSWORD=Demo@123 \
-e MARIADB_DATABASE=demo \
mariadb:11
# PostgreSQL 16
docker run -d --name demo-pg --restart unless-stopped \
-p 5432:5432 \
-e POSTGRES_PASSWORD=Demo@123 \
-e POSTGRES_DB=demo \
postgres:16
# SQL Server 2022
docker run -d --name demo-mssql --restart unless-stopped \
-p 1433:1433 \
-e ACCEPT_EULA=Y \
-e MSSQL_SA_PASSWORD='Demo@12345' \
mssql/server:2022-latest
# Oracle XE 21(镜像大,第一次慢)
docker run -d --name demo-oracle --restart unless-stopped \
-p 1521:1521 \
-e ORACLE_PASSWORD=Demo@123 \
gvenzl/oracle-xe:21-slim
# Redis 7
docker run -d --name demo-redis --restart unless-stopped \
-p 6379:6379 \
redis:7-alpine
# ZooKeeper / ES / Influx 请用 ./dbctl.sh pull && ./dbctl.sh up g|h|i(国内加速)
## ---------- 测试 ---------- ##
# Ubuntu 24.04 LTS
docker run -it --rm ubuntu:24.04 bash
# JDK 17
docker run -it --rm -v "$PWD":/app -w /app eclipse-temurin:17-jdk java -version
# Maven + JDK 17
docker run -it --rm -v "$PWD":/app -w /app maven:3.9-eclipse-temurin-17 mvn -v
# Go 1.25
docker run --rm golang:1.25-alpine go version
docker run --rm -v "$PWD":/src -w /src golang:1.25-alpine go build -v .
# Nginx 试一下
docker run -d --name demo-nginx -p 8080:80 nginx:alpine
驱动验收(本机)
最近一次顺序验收:2026-09-20(./verify-crud.sh <代号>,同时只开一个容器)。明细:tests/accept-result.txt。
| 驱动 | 连接 | 库表 | CRUD | 备注 |
|---|---|---|---|---|
| MySQL | OK | OK | OK | |
| TiDB | OK | OK | OK | docker run -p 4000:4000 pingcap/tidb:v7.5.0;MySQL 协议族真实例验收(2026-09-21) |
| MariaDB | OK | OK | OK | ./dbctl.sh up b 端口 3307 |
| PostgreSQL | OK | OK | OK | ./dbctl.sh up c 用户 opsx |
| SQL Server | OK | OK | OK | ./dbctl.sh up d sa / Demo@12345 |
| SQLite | OK | OK | OK | database 填文件路径 |
| Redis | OK | OK | OK | ./dbctl.sh up f;PING/SET/GET/DEL + /api/db/redis/keys /key + SCAN MATCH |
| ZooKeeper | OK | OK | OK | ./dbctl.sh up g;JVM agent 验收通过(2026-09-21):浏览/GET/CREATE/SET/DELETE |
| Elasticsearch | OK | OK | OK | ./dbctl.sh up h;原生 SQL API 验收通过(2026-09-21);官方 JDBC 需付费许可 |
| InfluxDB | OK | OK | OK | ./dbctl.sh up i;原生 HTTP 验收通过(2026-09-21):bucket/measurement/Flux |
| MongoDB | OK | OK | OK | 临时 docker run mongo:7 验收通过(2026-09-21):agent + DSL 查改增删 |
| Oracle | 代码就绪 | — | 本机未跑通 | 2026-09-20 再验:容器 unhealthy,日志 ORA-00442;需 x86 或真库 |
本表是
connection-types/connection-types.json中verified字段的依据;验收状态变化时两边同步更新。
冒烟脚本(一次只起一个库):
cd tests
./verify-crud.sh # sqlite → MySQL → MariaDB → PG → Redis → MSSQL → Oracle
./verify-crud.sh a # 只验 MySQL
./verify-crud.sh f # 只验 Redis
结果写入 tests/accept-result.txt。dbctl.sh up 发现其它测试库在跑会先停掉。