PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Membuat Cold Standby untuk PostgreSQL Menggunakan Amazon AWS

Kebutuhan untuk mencapai database High Availability adalah tugas yang cukup umum, dan seringkali merupakan keharusan. Jika perusahaan Anda memiliki anggaran terbatas, maka memelihara budak replikasi (atau lebih dari satu) yang berjalan di penyedia cloud yang sama (hanya menunggu jika diperlukan suatu hari nanti) bisa mahal. Bergantung pada jenis aplikasi, ada beberapa kasus di mana slave replikasi diperlukan untuk meningkatkan RTO (Tujuan Waktu Pemulihan).

Namun, ada opsi lain, jika perusahaan Anda dapat menerima penundaan singkat agar sistem Anda kembali online.

Cold Standby, adalah metode redundansi di mana Anda memiliki node siaga (sebagai cadangan) untuk node utama. Node ini hanya digunakan selama kegagalan master. Sisa waktu node siaga dingin dimatikan dan hanya digunakan untuk memuat cadangan saat diperlukan.

Untuk menggunakan metode ini,  Anda harus memiliki kebijakan pencadangan yang telah ditentukan sebelumnya (dengan redundansi) sesuai dengan RPO (Tujuan Titik Pemulihan) yang dapat diterima untuk perusahaan. Mungkin kehilangan 12 jam data dapat diterima untuk bisnis atau kehilangan hanya satu jam bisa menjadi masalah besar. Setiap perusahaan dan aplikasi harus menentukan standar mereka sendiri.

Di blog ini, Anda akan mempelajari cara membuat kebijakan pencadangan dan cara memulihkannya ke Cold Standby Server menggunakan ClusterControl dan integrasinya dengan Amazon AWS.

Untuk blog ini, kami akan berasumsi bahwa Anda sudah memiliki akun AWS dan ClusterControl terpasang. Meskipun kami akan menggunakan AWS sebagai penyedia cloud dalam contoh ini, Anda dapat menggunakan yang berbeda. Kami akan menggunakan topologi PostgreSQL berikut yang digunakan menggunakan ClusterControl:

  • 1 Node Utama PostgreSQL
  • 2 PostgreSQL Hot-Standby Node
  • 2 Load Balancer (HAProxy + Keepalive)

Membuat Kebijakan Cadangan yang Dapat Diterima

Praktik terbaik untuk membuat jenis kebijakan ini adalah menyimpan file cadangan di tiga tempat berbeda, satu disimpan secara lokal di server database (untuk pemulihan lebih cepat), satu lagi di server cadangan terpusat, dan yang terakhir di awan.

Anda dapat meningkatkannya dengan juga menggunakan cadangan lengkap, inkremental, dan diferensial. Dengan ClusterControl Anda dapat melakukan semua praktik terbaik di atas, semuanya dari sistem yang sama, dengan UI yang ramah dan mudah digunakan. Mari kita mulai dengan membuat integrasi AWS di ClusterControl.

Mengonfigurasi Integrasi AWS ClusterControl

Buka ClusterControl -> Integrasi -> Penyedia Cloud -> Tambahkan Kredensial Cloud.

Pilih penyedia awan. Kami mendukung AWS, Google Cloud, atau Azure. Dalam hal ini, pilih AWS dan lanjutkan.

Di sini Anda perlu menambahkan Nama, wilayah Default, dan AWS ID kunci dan kunci rahasia. Untuk mendapatkan atau membuat yang terakhir ini, Anda harus membuka bagian IAM (Identity and Access Management) di konsol manajemen AWS. Untuk informasi selengkapnya, Anda dapat merujuk ke dokumentasi kami atau dokumentasi AWS.

Sekarang Anda telah membuat integrasi, mari kita jadwalkan pencadangan pertama menggunakan Kontrol Cluster.

Menjadwalkan Pencadangan dengan ClusterControl

Buka ClusterControl -> Pilih Cluster PostgreSQL -> Backup -> Buat Backup.

Anda dapat memilih apakah Anda ingin membuat satu cadangan secara instan atau menjadwalkan cadangan baru. Jadi, mari kita pilih opsi kedua dan lanjutkan.

Saat Anda menjadwalkan pencadangan, pertama-tama Anda perlu menentukan jadwal /frekuensi. Kemudian, Anda harus memilih metode pencadangan (pg_dumpall, pg_basebackup, pgBackRest), server dari mana cadangan akan diambil, dan di mana Anda ingin menyimpan cadangan. Anda juga dapat mengunggah cadangan kami ke cloud (AWS, Google, atau Azure) dengan mengaktifkan tombol yang sesuai.

Kemudian tentukan penggunaan kompresi, tingkat kompresi, enkripsi dan periode retensi untuk cadangan Anda. Ada fitur lain yang disebut “Verifikasi Cadangan” yang akan segera Anda lihat lebih detail di entri blog ini.

Jika opsi “Unggah Cadangan ke awan” diaktifkan, Anda akan melihat langkah ini di mana Anda harus memilih kredensial cloud, dan membuat atau memilih ember S3 tempat menyimpan cadangan. Anda juga harus menentukan periode retensi.

Sekarang Anda akan memiliki pencadangan terjadwal di bagian Pencadangan Jadwal ClusterControl. Untuk membahas praktik terbaik yang disebutkan sebelumnya, Anda dapat menjadwalkan pencadangan untuk menyimpannya ke server eksternal (server ClusterControl) dan di cloud, lalu menjadwalkan pencadangan lain untuk menyimpannya secara lokal di node database untuk pemulihan yang lebih cepat.

Memulihkan Cadangan di Amazon EC2

Setelah pencadangan selesai, Anda dapat memulihkannya dengan menggunakan ClusterControl di bagian Cadangan.

Membuat Instans Amazon EC2

Pertama-tama, untuk memulihkannya, Anda memerlukan tempat untuk melakukannya, jadi mari buat instans Amazon EC2 dasar. Buka “Luncurkan Instans” di konsol manajemen AWS di bagian EC2, dan konfigurasikan instans Anda.

Saat instance Anda dibuat, Anda harus menyalin SSH publik kunci dari server ClusterControl.

Memulihkan Cadangan Menggunakan ClusterControl

Sekarang Anda memiliki instans EC2 baru, mari kita gunakan untuk memulihkan cadangan di sana. Untuk ini, di ClusterControl Anda, buka bagian cadangan (ClusterControl -> Pilih Cluster -> Cadangan), dan di sana Anda dapat memilih "Pulihkan Cadangan", atau langsung "Pulihkan" pada cadangan yang ingin Anda pulihkan.

Anda memiliki tiga opsi untuk memulihkan cadangan. Anda dapat memulihkan cadangan di node database yang ada, memulihkan dan memverifikasi cadangan pada host mandiri atau membuat cluster baru dari cadangan. Saat Anda ingin membuat node siaga dingin, mari gunakan opsi kedua “Pulihkan dan Verifikasi pada host mandiri”.

Anda memerlukan host (atau VM) khusus yang bukan bagian cluster untuk memulihkan cadangan, jadi mari gunakan instance EC2 yang dibuat untuk tugas ini. ClusterControl akan menginstal perangkat lunak dan akan memulihkan cadangan di host ini.

Jika opsi "Matikan server setelah cadangan dipulihkan" diaktifkan, ClusterControl akan menghentikan node database setelah menyelesaikan pekerjaan pemulihan, dan itulah yang kami butuhkan untuk pembuatan cold standby ini.

Anda dapat memantau kemajuan pencadangan di bagian Aktivitas ClusterControl.

Menggunakan Fitur Cadangan Verifikasi ClusterControl

Cadangan bukanlah cadangan jika tidak dapat dipulihkan. Jadi, Anda harus memastikan bahwa pencadangan berfungsi dan sering memulihkannya di node siaga dingin.

Fitur pencadangan ClusterControl Verifikasi Cadangan ini adalah cara untuk mengotomatiskan pemeliharaan node siaga dingin yang memulihkan cadangan baru-baru ini untuk menjaganya agar tetap mutakhir, menghindari pekerjaan pencadangan pemulihan manual. Mari kita lihat cara kerjanya.

Sebagai tugas "Pulihkan dan Verifikasi pada host mandiri", ini akan memerlukan host khusus (atau VM) yang bukan bagian dari cluster untuk memulihkan cadangan, jadi mari gunakan instance EC2 yang sama di sini.

Fitur verifikasi pencadangan otomatis tersedia untuk pencadangan terjadwal. Jadi, buka ClusterControl -> Pilih PostgreSQL Cluster -> Backup -> Create Backup dan ulangi langkah-langkah yang Anda lihat sebelumnya untuk menjadwalkan pencadangan baru.

Pada langkah kedua, Anda akan memiliki fitur “Verifikasi Cadangan” yang tersedia untuk mengaktifkannya.

Menggunakan opsi di atas, ClusterControl akan menginstal perangkat lunak dan memulihkan cadangan pada sang penyelenggara. Setelah memulihkannya, jika semuanya berjalan dengan baik, Anda akan melihat ikon verifikasi di bagian Cadangan ClusterControl.

Kesimpulan

Jika Anda memiliki anggaran terbatas, tetapi membutuhkan Ketersediaan Tinggi, Anda dapat menggunakan node PostgreSQL siaga dingin yang dapat valid atau tidak tergantung pada RTO dan RPO perusahaan. Di blog ini, kami menunjukkan kepada Anda cara menjadwalkan pencadangan (sesuai dengan kebijakan bisnis Anda) dan cara memulihkannya secara manual. Kami juga menunjukkan cara memulihkan cadangan secara otomatis di Cold Standby Server menggunakan ClusterControl, Amazon S3, dan Amazon EC2.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mendapatkan kueri atribut kolom dari nama tabel menggunakan PostgreSQL?

  2. Bagaimana cara mengaktifkan php untuk bekerja dengan postgresql?

  3. Mengukur Statistik Pos Pemeriksaan PostgreSQL

  4. Transaksi tidak berfungsi untuk DB MySQL saya

  5. Mengubah bidang Enum menggunakan Alembic