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
- Kavramlar — bir batch içinde neler olur
- Yapılandırma — tüm ayarlar
- Rehberler — copy-only ve purge iş akışları
