2 poin oleh GN⁺ 2024-01-19 | 1 komentar | Bagikan ke WhatsApp

Cara memigrasikan database PostgreSQL

  • GOV.UK Notify saat ini sedang memindahkan seluruh infrastrukturnya ke akun AWS miliknya sendiri karena PaaS yang digunakan saat ini akan dihentikan.
  • Artikel ini menjelaskan bagaimana mereka memigrasikan database PostgreSQL dengan downtime seminimal mungkin.

Migrasi database

  • Mereka menggunakan database AWS RDS PostgreSQL yang disediakan oleh PaaS, dan perlu memindahkannya ke database baru di akun AWS mereka sendiri.
  • Tantangan utamanya adalah menyiapkan database PostgreSQL baru dan membuat semua aplikasi berkomunikasi dengan database baru tersebut.

Informasi tambahan tentang database sumber

  • Database sumber berukuran sekitar 400GB, memiliki 130 juta baris, 85 tabel, 185 indeks, dan 120 foreign key.
  • Pada hari kerja, terdapat sekitar 1.000 insert atau update per detik, dan GOV.UK Notify mengirim jutaan notifikasi penting dan sensitif terhadap waktu setiap hari.

AWS Database Migration Service

  • Mereka menggunakan AWS Database Migration Service (DMS) untuk mentransfer data dari database sumber ke database target.
  • DMS menyalin semua data hingga titik waktu tertentu melalui tugas 'full load', dan dalam mode replikasi memastikan semua transaksi baru pada database sumber tercermin di database target.

Proses migrasi database

Menyiapkan instance DMS

  • Mereka membuat instance DMS di akun AWS sumber dan memberikan kredensial PostgreSQL yang dapat mengakses database sumber maupun target.

Menyiapkan database target

  • Mereka membuat instance RDS target di akun AWS mereka sendiri dan meng-upgrade versi PostgreSQL ke 15.
  • Mereka menggunakan pg_dump untuk mengekspor skema database sumber, lalu menerapkan deklarasi tabel ke database target.

Full load

  • Setelah membuat tabel di database target, mereka memulai tugas full load DMS dan menyelesaikannya dalam sekitar 6 jam.
  • Setelah tugas full load selesai, mereka menambahkan indeks dan constraint key.

Replikasi

  • Setelah tugas full load selesai, mereka memulai tugas replikasi berkelanjutan DMS (change data capture) untuk menyinkronkan database sumber dan target.

Persiapan migrasi trafik

  • Mereka merencanakan proses agar aplikasi berhenti berkomunikasi dengan database sumber dan mulai berkomunikasi dengan database target.

Menghentikan trafik ke database sumber

  • Mereka menggunakan skrip untuk menghentikan semua trafik ke database sumber.

Verifikasi replikasi

  • Mereka memeriksa apakah database target sudah sepenuhnya tersinkronisasi.

Peralihan trafik yang mulus

  • Mereka menyediakan lokasi, nama pengguna, dan kata sandi yang diperlukan aplikasi untuk terhubung ke database melalui environment variable, lalu mengganti database dengan cepat melalui perubahan DNS.

Apa yang terjadi pada hari migrasi

  • Mereka berhasil menjalankan skrip migrasi sehingga aplikasi berhenti berkomunikasi dengan database sumber dan mulai berkomunikasi dengan database target yang baru.
  • Selama migrasi terjadi downtime singkat sekitar 11 detik.

Pelajaran yang didapat

  • Mereka memilih menggunakan DMS karena didukung dengan baik di GOV.UK PaaS, dan mereka juga bisa mendapatkan dukungan dari AWS.
  • Jika di masa depan melakukan migrasi database antar-PostgreSQL lagi, mereka akan meluangkan lebih banyak waktu untuk mencoba alat lain seperti pglogical.

Langkah berikutnya dalam migrasi GOV.UK Notify ke AWS

  • Setelah migrasi database selesai, mereka berencana memindahkan aplikasi ke AWS Elastic Container Service (ECS).

Pendapat GN⁺:

  • Hal terpenting dalam artikel ini adalah tim GOV.UK Notify berhasil memigrasikan database PostgreSQL menggunakan AWS Database Migration Service (DMS).
  • Artikel ini memberikan panduan yang berguna melalui contoh nyata bagi para profesional teknis yang merencanakan migrasi database.
  • Artikel ini memberikan wawasan tentang cara meminimalkan downtime yang dapat terjadi selama proses migrasi dan strategi untuk menjaga konsistensi data, sehingga dapat membantu organisasi atau individu lain yang menghadapi situasi serupa.

1 komentar

 
GN⁺ 2024-01-19
Komentar Hacker News
  • Mempertanyakan alasan pemerintah menggunakan AWS, dan berpendapat bahwa membangun cloud sektor publik atau mengadopsi pendekatan on-premises dapat mengurangi pemborosan pajak dalam jangka panjang.

    "Saya mempertanyakan mengapa pemerintah menggunakan AWS. Membangun cloud sektor publik atau pendekatan on-premises kemungkinan bisa menghemat pajak dalam jangka panjang."

  • Membagikan pengalaman berhasil melakukan migrasi database menggunakan AWS RDS Blue/Green Deployment dengan downtime sekitar 20 detik.

    "Membagikan pengalaman berhasil melakukan migrasi database melalui AWS RDS Blue/Green Deployment dengan downtime sekitar 20 detik."

  • Menyebutkan berbagai cara untuk menjeda kueri PostgreSQL, dan menjelaskan bahwa downtime bisa dikurangi dengan menunda kueri sampai replikasi berhasil menyusul.

    "Downtime dapat dikurangi dengan menjeda kueri PostgreSQL dan menundanya sampai replikasi berhasil menyusul."

  • Menjelaskan proses migrasi database PostgreSQL yang di-host sendiri dari versi 12 ke 16, dan membagikan bahwa terjadi downtime sekitar 30 menit akibat masalah tak terduga.

    "Saat memigrasikan database PostgreSQL dari versi 12 ke 16, terjadi downtime sekitar 30 menit karena masalah tak terduga."

  • Menyebutkan bahwa menggunakan AWS Database Migration Service dan mengganti entri DNS sambil menerima downtime 11 detik adalah cara untuk menghindari kompleksitas.

    "Menggunakan AWS Database Migration Service dan mengganti entri DNS sambil menerima downtime 11 detik adalah cara untuk menghindari kompleksitas."

  • Menunjukkan bahwa kueri dengan waktu eksekusi panjang adalah musuh migrasi berdowntime rendah, dan menjelaskan kesulitan dalam menanganinya.

    "Kueri dengan waktu eksekusi panjang menyebabkan kesulitan dalam migrasi berdowntime rendah."

  • Membagikan proses migrasi dari PostgreSQL 14 ke 16, dan menyebutkan bahwa lain kali berencana menggunakan AWS Blue/Green Deployment untuk menghindari downtime.

    "Membagikan proses migrasi dari PostgreSQL 14 ke 16 dan berencana menggunakan AWS Blue/Green Deployment lain kali."

  • Menjelaskan bagaimana skrip migrasi database menggunakan DNS record AWS Route53 untuk memperbarui bobot DNS dan menunggu TTL 1 detik kedaluwarsa.

    "Menjelaskan cara skrip migrasi database memanfaatkan DNS record AWS Route53 untuk memperbarui bobot DNS dan menunggu TTL kedaluwarsa."

  • Melontarkan lelucon tentang berharap Amazon meluncurkan produk 'government-as-a-service'.

    "Lelucon yang berharap Amazon akan meluncurkan produk 'government-as-a-service'."

  • Membagikan pengalaman memigrasikan dataset dari AWS RDS MySQL ke RDS PostgreSQL menggunakan AWS DMS, dan tidak merekomendasikan penggunaan alat konversi skema.

    "Membagikan pengalaman migrasi dataset dari AWS RDS MySQL ke RDS PostgreSQL menggunakan AWS DMS, serta tidak merekomendasikan alat konversi skema."