← Back to blog
Xinchuang 4 min read 炬鲸团队

Migrating from x86 ELK to a Sovereign Observability Platform: A Checklist and Domestic Database Adaptation

Sovereignty migration is more than swapping hardware. A practical checklist for moving from x86 ELK to a domestic ARM observability platform, covering data migration, database adaptation and dual-run cutover.

The three real pain points of a sovereignty migration

Many teams assume a domestic-computing migration means installing software on domestic servers. In practice three things actually hold people up: how to move historical data, whether the new domestic database is compatible, and how to avoid losing data while the old and new systems run in parallel. This article breaks the work down by those three.

Part one: migrating historical data

Log and trace data is large, so a full bulk copy is unrealistic. Handle it in layers:

  1. Hot data (last 30 days): replay it day by day through a migration tool into the new platform, so recent troubleshooting capability never lapses.
  2. Warm data (last year): aggregate and archive it, keeping only key indexes, and re-import on demand.
  3. Cold data (over a year old): leave it read-only on the old cluster and let it retire naturally with the legacy system.

Before migrating, take inventory: daily log volume, peak QPS and which fields must be kept. These numbers determine the migration window and resource budget. During replay, import in chronological order to avoid out-of-order writes that break query indexes; split large files and replay them concurrently, while watching write pressure on the target database so you do not crush it.

Part two: adapting the domestic database

Observe speaks the MySQL protocol and can connect to:

  • OceanBase (MySQL mode): just swap the connection string — zero application changes.
  • openGauss / DM: connect through the MySQL compatibility layer, with one round of SQL-dialect compatibility testing.

Adaptation checklist:

| Check | Notes |
| --- | --- |
| Connection protocol | Confirm MySQL protocol or a compatibility layer |
| Indexes and partitioning | Partition time-series data by day and verify partition pruning works |
| Transaction isolation | Isolation level and locking under high-concurrency writes |
| Backup and recovery | Run the physical backup/restore scripts of the domestic database once |

SQL dialect testing need not be elaborate: take the few dozen queries the platform runs most — log search, aggregation, pagination, time-range filters — and run each against the domestic database. Pay special attention to function differences (date and string functions) and whether LIMIT pagination behaves the same.

Part three: dual-run and cutover

Do not cut over all at once. Instead:

  1. Dual write: send logs to both the old ELK and the new platform for 2-4 weeks, comparing query results and alert consistency.
  2. Gradual cutover: shift query traffic to the new platform service by service or tenant by tenant.
  3. Rollback plan: keep the old cluster for at least a quarter, and retire it only after the new platform has proven stable.

The biggest risk in dual-run is the two systems disagreeing. Pick a few fixed troubleshooting scenarios — search by trace id, search by keyword, aggregate over a time range — and run the same queries on both sides every day. Compare result counts and key fields; if they diverge, isolate whether it is ingestion, parsing or indexing before cutting more traffic over.

Sizing and capacity planning

Re-verify capacity on the ARM platform with real load, not on paper. Domestic ARM servers differ from x86 in per-core throughput and memory bandwidth, so the same workload may need more nodes. Replay a slice of genuine production traffic rather than a synthetic benchmark, and measure ingestion throughput, query latency and disk I/O against your x86 baseline. If a single ARM node falls short, scale out before migration instead of discovering the gap during peak hours. Run the comparison at peak and off-peak; many teams find the ARM cluster needs one extra node at peak and none off-peak, and autoscaling the ingestion tier closes that gap without overprovisioning.

Acceptance after migration

  • Log search, tracing and alert rules all pass self-checks
  • All data stays on the internal network with no outbound connections
  • Permissions, audit and multi-tenant isolation meet compliance requirements
  • No write backlog or query timeouts at peak

The finish line of a sovereignty migration is not that it runs — it is that it runs as well as before, or better.