GoArchive

Archive related MySQL data across servers. GoArchive moves a parent row together with every child row that depends on it, in the correct order, and verifies the copy before anything is removed.

View on GitHub β†’
$ goarchive validate -c archiver.yaml
$ goarchive dry-run -c archiver.yaml --job archive_old_orders
orders β†’ order_items β†’ order_payments β†’ shipments
$ goarchive archive -c archiver.yaml --job archive_old_orders
copied Β· verified Β· removed

What GoArchive does

One tool for moving related data out of a production database.

Built for related data

  • Resolves table relationships automatically
  • Writes parents first, removes children first
  • Discovers every row belonging to a parent

Safe by default

  • Verifies every batch before removing anything
  • Checks schema, privileges and triggers before starting
  • Resumes from where it stopped after an interruption

Designed for production

  • Batch processing with configurable pacing
  • Pauses automatically when replica lag rises
  • Pause and resume a running job without stopping it

Plan your archiving strategy with us

We publish GoArchive as open source because we already do this work in customers’ production systems. Deciding which tables to archive, describing the relations correctly, and running the job without disturbing replica lag take experience as much as tooling. That is where our MySQL consulting and support comes in β€” delivered in English as well as Turkish.

Read the documentation

Installation, configuration, and a guide for every workflow.

Get started