2 puan yazan GN⁺ 2024-01-19 | 1 yorum | WhatsApp'ta paylaş

PostgreSQL veritabanı nasıl taşındı

  • GOV.UK Notify, şu anda kullandığı PaaS kullanım dışı bırakıldığı için tüm altyapısını kendi AWS hesabına taşıyor.
  • Bu yazı, PostgreSQL veritabanını minimum kesintiyle nasıl taşıdıklarını anlatıyor.

Veritabanı geçişi

  • PaaS tarafından sağlanan bir AWS RDS PostgreSQL veritabanı kullanılıyor ve bunun kendi AWS hesaplarındaki yeni bir veritabanına taşınması gerekiyor.
  • Temel zorluk, yeni PostgreSQL veritabanını kurmak ve tüm uygulamaların yeni veritabanıyla iletişim kurmasını sağlamak.

Kaynak veritabanı hakkında ek bilgiler

  • Kaynak veritabanı yaklaşık 400 GB boyutunda; 130 milyon satır, 85 tablo, 185 indeks ve 120 yabancı anahtar içeriyor.
  • Hafta içi saniyede yaklaşık 1.000 ekleme veya güncelleme yapılıyor ve GOV.UK Notify her gün milyonlarca kritik ve zamanında bildirim gönderiyor.

AWS Database Migration Service

  • Veriler, kaynak veritabanından hedef veritabanına aktarılmak için AWS Database Migration Service (DMS) kullanılarak taşındı.
  • DMS, "full load" göreviyle belirli bir ana kadarki tüm verileri kopyalıyor; replikasyon modunda ise kaynak veritabanındaki tüm yeni işlemlerin hedef veritabanına yansıtılmasını sağlıyor.

Veritabanı geçiş süreci

DMS instance kurulumu

  • Kaynak AWS hesabında bir DMS instance'ı oluşturuldu ve hem kaynak hem de hedef veritabanına erişebilen PostgreSQL kimlik bilgileri verildi.

Hedef veritabanı kurulumu

  • Kendi AWS hesaplarında hedef RDS instance'ı oluşturuldu ve PostgreSQL sürümü 15'e yükseltildi.
  • pg_dump kullanılarak kaynak veritabanı şeması dışa aktarıldı ve hedef veritabanına tablo tanımları uygulandı.

Full load

  • Hedef veritabanında tablolar oluşturulduktan sonra DMS full load görevi başlatıldı ve yaklaşık 6 saatte tamamlandı.
  • Full load görevi tamamlandıktan sonra indeksler ve anahtar kısıtları eklendi.

Replikasyon

  • Full load görevi tamamlandıktan sonra, kaynak veritabanı ile hedef veritabanını senkronize tutmak için DMS sürekli replikasyon (change data capture) görevi başlatıldı.

Trafik geçişine hazırlık

  • Uygulamaların kaynak veritabanıyla iletişimi durdurup hedef veritabanıyla iletişim kurmasını sağlayacak süreç planlandı.

Kaynak veritabanına giden trafiğin durdurulması

  • Bir betik kullanılarak kaynak veritabanına giden tüm trafik durduruldu.

Replikasyonun doğrulanması

  • Hedef veritabanının tamamen senkronize olup olmadığı kontrol edildi.

Trafiğin sorunsuz şekilde aktarılması

  • Uygulamaların veritabanına bağlanmak için ihtiyaç duyduğu konum, kullanıcı adı ve parola ortam değişkenleriyle sağlandı; DNS değişikliğiyle veritabanı hızlıca değiştirildi.

Geçiş gününde yaşananlar

  • Geçiş betiği başarıyla çalıştırıldı; uygulamalar kaynak veritabanıyla iletişimi bırakarak yeni hedef veritabanıyla iletişim kurmaya başladı.
  • Geçiş sırasında yaklaşık 11 saniyelik kısa bir kesinti yaşandı.

Öğrenilenler

  • DMS'nin seçilme nedeni, GOV.UK PaaS üzerinde iyi desteklenmesi ve AWS'den de destek alınabilmesiydi.
  • Gelecekte PostgreSQL'den PostgreSQL'e veritabanı geçişi yapılırsa, pglogical gibi başka araçları denemeye daha fazla zaman ayrılacak.

GOV.UK Notify'nin AWS'ye geçişinde sonraki adım

  • Veritabanı geçişi tamamlandıktan sonra uygulamalar AWS Elastic Container Service (ECS) üzerine taşınacak.

GN⁺'nin görüşü:

  • Bu yazıdaki en önemli nokta, GOV.UK Notify ekibinin AWS Database Migration Service (DMS) kullanarak PostgreSQL veritabanını başarıyla taşımış olmasıdır.
  • Yazı, veritabanı geçişi planlayan teknik profesyoneller için gerçek bir örnek üzerinden faydalı bir rehber sunuyor.
  • Geçiş sırasında oluşabilecek kesintiyi en aza indirme ve veri tutarlılığını koruma stratejilerine dair içgörüler sunarak benzer durumlarla karşılaşan diğer kurum ve kişilere yardımcı olabilir.

1 yorum

 
GN⁺ 2024-01-19
Hacker News yorumları
  • Hükümetin neden AWS kullandığını sorguluyor ve kamu sektörü bulutu kurmanın ya da on-prem yaklaşımı benimsemenin uzun vadede vergi israfını azaltabileceğini savunuyor.

    "Hükümetin AWS kullanmasını sorguluyorum. Kamu sektörü bulutu kurmak ya da on-prem bir yaklaşım benimsemek uzun vadede vergiden tasarruf sağlayabilir."

  • AWS RDS Blue-Green Deployment kullanarak yaklaşık 20 saniyelik kesintiyle veritabanı migrasyonunu başarıyla gerçekleştirdiğini paylaşıyor.

    "AWS RDS Blue-Green Deployment ile yaklaşık 20 saniyelik kesintiyle veritabanı migrasyonunu başarıyla gerçekleştirdiğime dair deneyim paylaşımı."

  • PostgreSQL sorgularını geçici olarak durdurmanın çeşitli yollarından bahsediyor ve replikasyon yetişene kadar sorguları geciktirmenin kesintiyi azaltabileceğini açıklıyor.

    "PostgreSQL sorgularını, replikasyon yetişene kadar geciktirerek kesintiyi azaltmak mümkün."

  • Kendi barındırdığı PostgreSQL veritabanını sürüm 12'den 16'ya taşıma sürecini anlatıyor ve beklenmedik sorunlar nedeniyle yaklaşık 30 dakikalık kesinti yaşandığını paylaşıyor.

    "PostgreSQL veritabanını sürüm 12'den 16'ya taşıma sürecinde beklenmedik sorunlar nedeniyle yaklaşık 30 dakikalık kesinti yaşandı."

  • AWS Database Migration Service kullanıp DNS kaydını değiştirerek 11 saniyelik kesintiyi göze almanın, karmaşıklıktan kaçınmanın bir yolu olduğunu belirtiyor.

    "AWS Database Migration Service kullanıp DNS kaydını değiştirerek 11 saniyelik kesintiyi göze almak, karmaşıklıktan kaçınmanın bir yolu."

  • Uzun çalışan sorguların düşük kesintili migrasyonun düşmanı olduğuna dikkat çekiyor ve bu sorgularla başa çıkmanın zorluğunu anlatıyor.

    "Uzun çalışan sorgular, düşük kesintili migrasyonlarda zorluk yaratıyor."

  • PostgreSQL 14'ten 16'ya migrasyon sürecini paylaşıyor ve bir sonraki sefer kesintiden kaçınmak için AWS Blue-Green Deployment kullanmayı planladığını söylüyor.

    "PostgreSQL 14'ten 16'ya migrasyon süreci paylaşımı ve bir dahaki sefere AWS Blue-Green Deployment kullanma planı."

  • AWS Route53 DNS kayıtlarını kullanarak veritabanı migrasyon betiğinin DNS ağırlığını güncelleyip 1 saniyelik TTL'nin dolmasını bekleme yöntemini açıklıyor.

    "AWS Route53 DNS kayıtlarıyla veritabanı migrasyon betiğinin DNS ağırlığını güncelleyip TTL'nin dolmasını bekleme yöntemi açıklanıyor."

  • Amazon'ın "government-as-a-service" adlı bir ürün çıkaracağını uman bir şaka yapıyor.

    "Amazon'ın 'government-as-a-service' ürünü çıkarmasını bekleyen bir şaka."

  • AWS DMS kullanarak AWS RDS MySQL'den RDS PostgreSQL'e veri seti taşıma deneyimini paylaşıyor ve şema dönüştürme aracının kullanılmasını önermiyor.

    "AWS DMS ile AWS RDS MySQL'den RDS PostgreSQL'e veri seti taşıma deneyimi paylaşımı ve şema dönüştürme aracının önerilmemesi."