VPS verilerini rsync ile güvenle taşıyın
Sıradan dosya sistemi verisini SSH üzerinden rsync ile kaynak VPS’den hedefe önceden aktarın; sonra yazmaları kısa süre durdurup son eşitlemeyi yapın, uygulamayı doğrulayın ve geri dönüş yoluyla trafiği değiştirin. Rsync evrensel canlı geçiş aracı değildir: veritabanları, konteynerler, önyükleme dosyaları, aygıtlar, sırlar ve aktif kuyruklar uygulamaya özel işlem ister.
Temel bilgiler
- Aktarım
- Kimliği doğrulanmış SSH üzerinden Rsync
- İlk eylem
- Veriyi envanterleyip deneme çalıştırması yapmak
- Tutarlılık
- Son geçişte yazıcıları durdurmak veya sessize almak
- Güvenli varsayılan
- İlk geçişte `--delete` kullanmamak
Kopyalamadan envanter çıkarın
Uygulama dosyalarını, sahipliği, ACL’leri, genişletilmiş öznitelikleri, veritabanlarını, sırları, zamanlanmış işleri, hizmetleri, güvenlik duvarı kurallarını, DNS’yi, sertifikaları ve dış depolamayı listeleyin. Hedef kapasitesini ve kullanıcı, dosya sistemi, işletim sistemi paketi ile uygulama sürümü uyumluluğunu doğrulayın. Geçiş öncesi DNS TTL’yi yalnızca DNS planınıza uygunsa azaltın; önbellek kayıtları beklenenden uzun yaşayabilir.
Kaynağın bağımsız yedeğini oluşturup doğrulayın. İlk aktarım boyunca kaynağı değiştirmeden açık tutun. Bakım penceresini duyurmadan başarı kontrolleriyle geri dönüş kararını tanımlayın.
/proc,/sys,/devveya/rungibi sanal dosya sistemlerini sıradan veri olarak kopyalamayın.- Uygun olduğunda yerel veritabanı yedeği, çoğaltması veya döküm aracını kullanın.
- Özel anahtarları komut geçmişine ya da ortak notlara koymayın.
Uygulama verisini deneme çalışmasıyla hazırlayın
/srv/app/ gibi dizinde kaynaktan şu işlemi deneyin: sudo rsync -aHAX --numeric-ids --info=progress2 --dry-run -e "ssh -i /root/.ssh/migration_key" /srv/app/ admin@DESTINATION:/srv/app/. Kullanıcıyı, anahtar yolunu, hedefi ve veri yollarını değiştirin. Sondaki eğik çizgi fazladan dizin düzeyi oluşturmak yerine kaynak dizinin içeriğini kopyalar.
Her yolu ve hatayı inceleyin. Uzak hesabın hedefe güvenle yazabildiğini doğrulayın; root girişi gereksizdir ve çoğunlukla kapalıdır. Deneme çıktısı doğruysa --dry-run olmadan tekrarlayın. Yalnızca dizinleri aynı yapmak için --delete eklemeyin: hatalı kaynak veya hedef değerli veriyi silebilir.
- Büyük aktarımlarda komutu kalıcı terminal oturumunda çalıştırın.
- Kopya üretim trafiğini etkileyebilecekse bant genişliğini sınırlayın.
- Komut seçeneklerini ve araç sürümlerini geçiş kaydına alın.
Yazmaları durdurup son geçişi yapın
Uygulamayı belgeli bakım veya salt okunur duruma alın. Tam yazıcı hizmetleri desteklenen süreçle durdurup son veritabanı yedeğini alın veya çoğaltmayı tamamlayın. Yalnızca değişen dosyaları aktarmak için aynı rsync komutunu yeniden çalıştırın. Doğrulama bitene kadar bakım durumunu koruyun.
Hedefte hizmetleri amaçlanan yapılandırmayla başlatın, mümkünse herkese açık erişimi önce kısıtlayın ve sağlık, giriş, yazma, kuyruk, sertifika, günlük ve bağımlılık testlerini çalıştırın. DNS veya yönlendirmeyi yalnızca testler geçince güncelleyin. Birleşik risk açıkça kabul edilmedikçe aynı pencerede hem uygulama sürümünü hem barındırma konumunu değiştirmeyin.
- Son yazma durdurma zamanını ve eşitleme sonucunu kaydedin.
- Dosya sahipliği ve zorunlu erişim denetimlerini doğrulayın.
- DNS geçişinde eski ve yeni uçları izleyin.
Doğrulayın, gözlemleyin ve geri dönüşü koruyun
Daha derin dosya karşılaştırması için uygun pencerede ilk rsync komutunu --checksum --dry-run ile çalıştırın; sağlama toplamı iki veri kümesini okur ve pahalı olabilir. Veritabanı ve nesne depolarında uygulama düzeyi bütünlük kontrolünü tercih edin. Geçiş sonrası hataları, gecikmeyi, kaynak kullanımını, arka plan işlerini ve dış geri çağrıları izleyin.
Geri dönüş penceresi bitene kadar kaynağı sağlam tutun, fakat bölünmüş yazmaları önleyin. Ardından saklama ve güvenli silme planını uygulayın. Geçiş ancak yedekler, izleme, belgeler ve kurtarma işlemleri hedefi gösterdiğinde tamamdır.
Kaynaklar
Sık sorulan sorular
rsync çalışan veritabanını güvenle kopyalayabilir mi?
Canlı veritabanının dosya kopyası tutarsız olabilir. Veritabanının desteklenen döküm, yedek, anlık görüntü koordinasyonu veya çoğaltma sürecini kullanın.
`--delete` kullanmalı mıyım?
İlk geçişte hayır. Sonradan gerekirse önce --delete --dry-run ile çalıştırın, iki yolu doğrulayın ve kurtarılabilir yedek tutun.
İzinler neden değişti?
Hedef kullanıcının yetkisi olmayabilir, sayısal kimlikler değişebilir veya hedef dosya sistemi aynı ACL ya da öznitelikleri desteklemeyebilir. Geçişten önce uyumluluğu inceleyin.