驱动接入(全部本机真实例验收): - 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 同步
180 lines
6.5 KiB
Markdown
180 lines
6.5 KiB
Markdown
# 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` 发现其它测试库在跑会先停掉。
|