Aiven Migration CLI Tools
Shell scripts for migrating services to and from Aiven. No install step, no runtime deps — curl a script, run it, done. Like duckdb, but for your data pipelines.
Install any tool
Export topics and consumer group offsets from any Kafka cluster and replay into Aiven for Apache Kafka.
$ curl -fsSL tools/kafka-migrate.sh | sh
Dump a PostgreSQL database and restore into Aiven for PostgreSQL. Handles extensions and roles automatically.
$ curl -fsSL tools/pg-migrate.sh | sh
Snapshot indices from a self-managed OpenSearch or Elasticsearch cluster and restore into Aiven for OpenSearch.
$ curl -fsSL tools/opensearch-migrate.sh | sh
Stream Redis keyspace to RDB format and import into Aiven for Valkey or Caching. Preserves TTLs.
$ curl -fsSL tools/redis-export.sh | sh
Migrate MySQL databases to Aiven for MySQL. Handles schema, data, and stored procedures with minimal downtime.
$ curl -fsSL tools/mysql-migrate.sh | sh
Drop a .sh in tools/ and open a PR.
Each tool is a self-contained shell script. Fork the repo, drop your script in tools/, and open a PR — that's it.
Step 01
Fork the repo and add a .sh file to tools/. The filename becomes the install URL.
$ git clone https://github.com/your-handle/migration-hub $ cd migration-hub/tools $ touch your-new-tool.sh $ chmod +x your-new-tool.sh
Step 02
Five comment lines at the top tell the site what to display — name, description, status, author, and service.
#!/usr/bin/env sh # name: your-new-tool # description: One line. What migrates where? # status: beta # stable | beta | new # author: your-github-handle # service: kafka # kafka | pg | opensearch… set -e # your migration logic here
Step 03
Push your branch and open a PR against main. CI validates the header and the site updates automatically on merge.
$ git add tools/your-new-tool.sh $ git commit -m "feat: add your-new-tool" $ git push origin your-branch # open a PR on GitHub # deploys automatically on merge to main