Files
logan a9510235bb
CI / Go server (push) Canceled after 0s
CI / Web + core packages (push) Canceled after 0s
CI / Desktop (Tauri) cargo check (push) Canceled after 0s
feat: 18 引擎驱动全家桶 + 驱动管理/离线包 + 设置中心 + 工作台交互打磨
驱动接入(全部本机真实例验收):
- 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 同步
2026-09-22 01:07:46 +08:00

180 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 首次进库:
```sql
CREATE DATABASE demo;
```
## 常用命令
```bash
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 里怎么连
1. 仓库根目录 `./run.sh web` → http://127.0.0.1:5174
2. 新建连接 → 选驱动 → 填上表参数 → 测试连接
3. 打开 `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) | `./dbctl.sh up a` |
| 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` 字段的依据;验收状态变化时两边同步更新。
冒烟脚本(一次只起一个库):
```bash
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` 发现其它测试库在跑会先停掉。