Doküman menüsü

Sürüm 1.8.0-community

Hızlı Başlangıç

Bir yapılandırma dosyası yazın, işi önizleyin ve ilk arşivlemenizi çalıştırın.

Bu sayfa yaygın bir örneği — iki yıldan eski siparişleri ve onlara bağlı satırları — baştan sona arşivler.

1. İşi tanımlayın

archiver.yaml dosyasını oluşturun:

source:
  host: source-db.internal
  port: 3306
  user: archiver
  password: change_me
  database: production

destination:
  host: archive-db.internal
  port: 3306
  user: archiver
  password: change_me
  database: archive

jobs:
  archive_old_orders:
    root_table: orders
    primary_key: id
    where: "created_at < DATE_SUB(NOW(), INTERVAL 2 YEAR)"
    relations:
      - table: order_items
        primary_key: id
        foreign_key: order_id
        dependency_type: "1-N"
      - table: order_payments
        primary_key: id
        foreign_key: order_id
        dependency_type: "1-N"

processing:
  batch_size: 1000
  batch_delete_size: 500
  sleep_seconds: 1

verification:
  method: sha256

Bu tanım şunu söyler: orders tablosundan başla, where koşuluna uyan satırları seç, order_items ve order_payments satırlarını da onlara ait kabul et.

2. İşin şeklini görün

goarchive plan -c archiver.yaml --job archive_old_orders

plan ilişki ağacını, tabloların hangi sırayla yazılacağını ve hangi sırayla silineceğini çizer. Yapılandırma ve tablo yapısı dışında hiçbir şey okumaz.

3. Ortamı denetleyin

goarchive validate -c archiver.yaml

validate, tabloların her iki sunucuda var olduğunu, yapılarının uyumlu olduğunu, hesabın çalışma için gereken yetkilere sahip olduğunu ve belirttiğiniz ilişkilerin veritabanıyla örtüştüğünü denetler. Bulduğu her şeyi raporlar; böylece veri taşınmadan önce sorunları giderebilirsiniz.

4. İşi önizleyin

goarchive dry-run -c archiver.yaml --job archive_old_orders

dry-run, uygulanacak filtreyi ve her tablonun kaç satır katacağını gösterir. Bunu yaparken tablo bütününü saymak yerine gerçek ilişki zincirini izler. Hiçbir şeyi değiştirmez.

5. Çalıştırın

goarchive archive -c archiver.yaml --job archive_old_orders

GoArchive işi batch’ler hâlinde yürütür. Her batch için birbirine ait satırları keşfeder, üst kayıtlardan başlayarak hedefe yazar, sonucu doğrular ve alt kayıtlardan başlayarak kaynaktan siler. İlerleme yol boyunca kaydedilir.

6. Sonucu doğrulayın

SELECT COUNT(*) FROM archive.orders;
SELECT COUNT(*) FROM production.orders
 WHERE created_at < DATE_SUB(NOW(), INTERVAL 2 YEAR);

İlk sayı arşivlenen kayıtları verir. İkincisi sıfır olmalıdır.

Sırada ne var