Doküman menüsü

Sürüm 1.8.0-community

Veri Arşivleme

İlişkili veriyi arşiv sunucusuna taşıyın ve kopya doğrulandıktan sonra kaynaktan silin.

Arşivleme iş akışı veriyi hedefe kopyalar, ulaştığını teyit eder ve ardından kaynaktan siler. Eksiksiz döngü budur.

Çalıştırma

goarchive archive -c archiver.yaml --job archive_old_orders

Neler olur

GoArchive önce ortamı denetler: tabloların her iki tarafta bulunduğunu, yapılarının uyumlu olduğunu, hesabınızın gereken yetkilere sahip olduğunu ve tanımlanan ilişkilerin veritabanıyla örtüştüğünü. Ancak bundan sonra başlar.

Sonra her batch için:

  1. İşin filtresine uyan kök satırları seçer.
  2. Onlara ait tüm satırları keşfeder.
  3. Üst kayıtlardan başlayarak hedefe kopyalar.
  4. Kopyayı doğrular.
  5. Alt kayıtlardan başlayarak kaynaktan siler.
  6. İlerlemeyi kaydeder.

Batch’ler arasında sleep_seconds kadar bekler, bir replica tanımlıysa gecikmesini denetler ve duraklatma isteği olup olmadığına bakar.

İlk çalıştırmadan önce

Üç inceleme komutunu sırayla kullanın:

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

validate ortamı teyit eder. dry-run filtreyi ve her tablonun kaç satır katacağını gösterir. İkisi de hiçbir şeyi değiştirmez.

Önerilen ayarlar

verification:
  method: sha256

processing:
  batch_size: 1000
  batch_delete_size: 500
  sleep_seconds: 1

sha256 doğrulaması daha güçlü bir güvence verir ve yarıda kalan bir işi sürdürmeyi kolaylaştırır.

Çalışma yarıda kalırsa

Aynı komutu yeniden çalıştırın. GoArchive kendi ilerleme kayıtlarını okur ve durduğu yerden devam eder; yalnızca tamamlanmamış işi tekrarlar. Bkz. Checkpoint ve Devam Etme .

Trigger’ı olan tablolar

Bir kaynak tabloda silme sırasında çalışan bir trigger varsa GoArchive bunu bildirir ve onayınızı bekler; çünkü trigger silme işleminin parçası olarak çalışır ve etkileri işin tarif ettiğinin dışındadır.

goarchive archive -c archiver.yaml --job archive_old_orders --force-triggers

Bayrağı vermeden önce trigger’ların ne yaptığını gözden geçirin.

Sonucu doğrulamak

-- arşivde bulunan satırlar
SELECT COUNT(*) FROM archive.orders;

-- kaynakta filtreye uyan, kalan satırlar
SELECT COUNT(*) FROM production.orders
 WHERE created_at < DATE_SUB(NOW(), INTERVAL 2 YEAR);