Tentang replikasi di Cloud SQL

Replikasi adalah kemampuan untuk membuat salinan instance Cloud SQL atau database lokal, dan melimpahkan tugas ke salinan.

Pengantar

Alasan utama menggunakan replikasi adalah untuk menskalakan penggunaan data dalam database tanpa menurunkan performa.

Alasan lainnya meliputi:

  • Memigrasikan data antar region
  • Memigrasikan data antar platform
  • Memigrasikan data dari database lokal ke Cloud SQL

Selain itu, replika dapat dipromosikan jika instance yang asli rusak.

Saat merujuk ke instance Cloud SQL, instance yang direplikasi disebut instance utama dan salinannya disebut replika baca. Instance utama dan replika baca berada di Cloud SQL.

Saat merujuk ke database lokal, skenario replikasi disebut mereplikasi dari server eksternal. Dalam skenario ini, database yang direplikasi adalah server database sumber. Salinan yang berada di Cloud SQL disebut replika Cloud SQL. Ada juga instance yang mewakili server database sumber di Cloud SQL yang disebut instance representasi sumber.

Dalam skenario pemulihan dari bencana (disaster recovery), Anda dapat mempromosikan replika untuk mengonversinya menjadi instance utama. Dengan demikian, Anda dapat menggunakannya sebagai pengganti instance yang berada di region yang mengalami pemadaman. Anda juga dapat mempromosikan replika untuk mengganti instance yang rusak.

Cloud SQL mendukung jenis replika berikut:

Anda juga dapat menggunakan Database Migration Service untuk replikasi berkelanjutan dari server database sumber ke Cloud SQL. Catatan: Cloud SQL memungkinkan pengguna mengelola replikasi mereka sendiri menggunakan fitur replikasi logis PostgreSQL.

Cloud SQL tidak mendukung replikasi antara dua server eksternal.

Replika baca

Anda dapat menggunakan replika baca untuk mengalihkan tugas dari instance Cloud SQL. Replika baca adalah salinan tepat dari instance utama. Data dan perubahan lain pada instance utama diperbarui hampir secara real time pada replika baca.

Replika baca bersifat hanya-baca, Anda tidak dapat menulis apapun di dalamnya. Replika baca memproses kueri, permintaan baca, dan traffic analisis, sehingga mengurangi beban pada instance utama.

Anda menghubungkan ke replika secara langsung menggunakan nama koneksi dan alamat IP tersebut. Jika Anda terhubung ke replika menggunakan alamat IP pribadi, Anda tidak perlu membuat koneksi pribadi VPC tambahan untuk replika tersebut karena koneksi tersebut sudah diberikan oleh instance utama.

Untuk informasi lebih lanjut tentang cara membuat replika baca, lihat Membuat replika baca. Untuk informasi lebih lanjut tentang cara mengelola replika baca, lihat Mengelola replika baca.

Sebagai praktik terbaik, letakkan replika baca di zona yang berbeda dengan instance utama saat Anda menggunakan HA pada instance utama. Praktik ini memastikan bahwa replika baca terus beroperasi saat zona yang berisi instance utama mengalami pemadaman. Lihat Ringkasan ketersediaan tinggi untuk informasi lebih lanjut.

Memilih jenis mesin yang sesuai

Replika baca dapat memiliki jenis mesin yang berbeda dari yang utama. Anda harus memantau metrik pada instance seperti penggunaan memori dan CPU untuk memastikan bahwa instance replika berukuran tepat sesuai beban kerjanya, terutama apabila ukurannya lebih kecil daripada instance utama. Instance replika yang berukuran kecil lebih rentan terhadap performa buruk, seperti peristiwa kehabisan memori (OOM) yang sering terjadi.

Dampak pada flag max_connections saat replika baca memiliki jenis mesin dengan memori lebih sedikit daripada memori utama

Pada instance PostgreSQL, jika Anda tidak menetapkan flag max_connections ke nilai pilihan Anda, Cloud SQL akan secara otomatis menetapkannya berdasarkan jumlah memori pada instance. Untuk mengetahui informasi selengkapnya, lihat tanda yang didukung. PostgreSQL mengharuskan nilai max_connections setidaknya selalu sebesar pada replika baca seperti pada nilai utamanya. Oleh karena itu, jika replika baca memiliki lebih sedikit memori daripada memori utamanya, dan Anda belum menetapkan tanda, max_connections replika tersebut mungkin mewarisi nilai max_connections yang lebih besar berdasarkan ukurannya dari instance utama. Dalam situasi ini, jika Anda mengandalkan setelan max_connections untuk membatasi jumlah koneksi ke instance replika, instance tersebut dapat kelebihan beban karena nilainya terlalu tinggi dibandingkan dengan jenis mesin instance. Untuk menghindari hal ini, Anda dapat melakukan salah satu tindakan berikut:

  1. Ubah ukuran instance replika ke jenis mesin yang lebih besar.
  2. Konfigurasikan aplikasi klien Anda untuk membatasinya ke beberapa jumlah koneksi yang kurang dari nilai max_connections.
  3. Tetapkan flag max_connections pada properti utama dan replika ke nilai yang sesuai.

Operasi indeks hash menggunakan replika baca

Operasi indeks hash tidak menggunakan write-ahead-logging untuk PostgreSQL 9.6. Cloud SQL hanya memiliki satu versi yang tersedia di bagian PostgreSQL 10. Hal ini didokumentasikan dalam kotak peringatan berwarna kuning di halaman rilis PostgreSQL. Hal ini juga berlaku untuk replika baca Cloud SQL.

Karena update indeks hash tidak diterapkan ke replika baca di PostgreSQL 9.6, update tersebut tidak dapat digunakan oleh replika. Sebagai solusinya, Anda dapat tidak menggunakan replika baca atau mengupgrade ke versi PostgreSQL utama (10 atau lebih tinggi).

Replika baca lintas region

Replikasi lintas region memungkinkan Anda membuat replika baca di region yang berbeda dari instance utama. Anda membuat replika baca lintas region dengan cara yang sama seperti saat Anda membuat replika dalam region.

Replika lintas region:

  • Tingkatkan performa baca dengan membuat replika tersedia lebih dekat dengan region aplikasi Anda.
  • Menyediakan kemampuan pemulihan dari bencana tambahan untuk mencegah kegagalan regional.
  • Memungkinkan Anda memigrasikan data dari satu region ke region lainnya.

Lihat Mempromosikan replika untuk migrasi regional atau pemulihan dari bencana untuk informasi lebih lanjut tentang replika lintas region.

Replika baca bertingkat

Replikasi bertingkat memungkinkan Anda membuat replika baca di bawah replika baca lain di region yang sama atau berbeda. Berikut adalah beberapa kasus penggunaan replika bertingkat:

  • Pemulihan dari bencana (disaster recovery): Anda dapat menggunakan hierarki bertingkat replika baca untuk menyimulasikan topologi instance utama Anda dan replika bacanya. Selama pemadaman, replika baca yang Anda pilih akan dipromosikan menjadi replika baca utama dan replika baca di bawah replika baca utama yang baru akan terus mereplikasikan dan siap digunakan.
  • Peningkatan performa: Mengurangi beban pada instance utama dengan mengurangi beban tugas replikasi ke beberapa replika baca.
  • Pembacaan Skala: Anda dapat memiliki lebih banyak replika untuk membagikan beban baca.
  • Pengurangan biaya: Menggunakan satu replika bertingkat dengan replikasi lintas region di region lain dapat mengurangi biaya jaringan Anda.

Terminologi

  • Replika bertingkat: Replika baca yang memiliki replikanya sendiri.
  • Level: Anda dapat membuat level replika dalam hierarki replika bertingkat. Misalnya, jika Anda menambahkan empat replika ke suatu instance, keempat replika tersebut berada di level yang sama.
  • Instance yang seinduk: Beberapa replika yang mereplikasi dari instance utama yang sama. Instance yang seinduk berada di level yang sama dalam hierarki replika. Sebuah replika secara resmi dapat memiliki hingga sembilan instance yang sama.
  • Replika daun: Replika baca yang tidak memiliki replikanya sendiri. Dalam hierarki replikasi multilevel, replika daun berada di level terakhir.
  • Promosi: Tindakan yang mengonversi replika, di level apa pun dalam hierarki, menjadi instance utama. Saat dipromosikan, hierarki replika bertingkat akan dipertahankan.

Mengonfigurasi replika bertingkat

Replika bertingkat memungkinkan Anda menambahkan replika baca ke replika yang ada. Anda dapat menambahkan hingga empat level replika, termasuk instance utama. Saat Anda mempromosikan replika di bagian atas hierarki replika bertingkat, replika tersebut menjadi instance utama dan replika bertingkatnya terus mereplikasi.

Untuk merencanakan konfigurasi, Anda perlu memiliki sasaran terkait apa yang akan dilakukan oleh replika baca. Dua bagian berikutnya akan menjelaskan konfigurasi untuk pemulihan dari bencana (disaster recovery) dan replika multi-region.

Pemulihan dari bencana

Untuk memahami cara replika bertingkat membantu Anda pulih dengan cepat selama pemadaman, pertimbangkan skenario replikasi berikut:

Konfigurasi

Diagram konfigurasi replika bertingkat dengan replika
             bertingkat di region yang terpisah

Penonaktifan, layanan nonaktif

Diagram promosi selama pemadaman

Promotion

Diagram instance baru dengan replika

Jika Anda ingin menggunakan instance di Region B dalam konfigurasi pemulihan dari bencana (disaster recovery) dan memiliki:

  • Replika di region yang sama dilampirkan ke instance utama (Replika A)
  • Replika di region lain (Replika Bertingkat) yang dilampirkan ke instance utama.

Anda dapat membuat replika baca di bawah replika bertingkat di Region B.

Pada tab Pemadaman, jika terjadi pemadaman di Region A, replika bertingkat akan dipromosikan menjadi instance utama. Replika bertingkat sudah memiliki replika baca di bawahnya, mengurangi batas waktu pemulihan (RTO).

Pada tab Promosi, Anda melihat bahwa saat replika bertingkat dipromosikan, replikanya juga dipromosikan dan terus mereplikasi di bawahnya.

Replikasi multi-region

Kasus penggunaan lain untuk replika bertingkat adalah mendistribusikan kapasitas baca ke region kedua dengan cara yang hemat biaya. Replika bertingkat C dan D dapat dibuat replikasi dari Replika B. Klien dapat mendistribusikan kueri baca di seluruh replika B, C, dan D untuk mengurangi beban pada setiap replika. Biaya traffic jaringan lintas region hanya dikeluarkan satu kali, dari instance utama ke Replika B. Replikasi dari B ke C dan D menggunakan transfer jaringan dalam region yang gratis.

Anda dapat membuat hierarki hingga empat instance menggunakan replika bertingkat untuk replikasi multi-region:

Utama A → Replika B → Replika C dan Replika D

Pembatasan

  • Anda tidak dapat menghapus replika yang memiliki replika di bawahnya. Untuk menghapus replika, Anda harus memulai dengan replika daun dan melanjutkan ke atas melalui hierarki.
  • Dependensi region melingkar tidak didukung. Untuk memiliki replika dari replika bertingkat di region yang sama dengan instance utama, replika bertingkat juga harus berada di region yang sama.

Replikasi logis

Cloud SQL memungkinkan Anda mengonfigurasi solusi replikasi sendiri menggunakan fitur replikasi logis PostgreSQL's. Replikasi logis adalah solusi fleksibel yang memungkinkan:

  • Replikasi standar dari instance utama ke replika
  • Replikasi selektif hanya dari tabel atau baris tertentu
  • Replikasi di seluruh versi utama PostgreSQL
  • Replikasi ke database non-PostgreSQL
  • Mengubah alur kerja pengambilan data (CDC) tempat semua perubahan database di-streaming ke konsumen

Untuk mengetahui informasi lebih lanjut, baca bagian Menyiapkan replikasi logis. Halaman tersebut menyertakan informasi tentang.

  • Replikasi logis native
  • Ekstensi pglogical

Kasus penggunaan replikasi

Kasus penggunaan berikut berlaku untuk setiap jenis replikasi.

Nama Kasus penggunaan Replika Manfaat dan kasus penggunaan Informasi selengkapnya
Replika baca Instance Cloud SQL Instance Cloud SQL
  • Kapasitas baca tambahan
  • Target analisis
Replika baca lintas region Instance Cloud SQL Instance Cloud SQL
  • Kapasitas baca tambahan
  • Target analisis
  • Kemampuan pemulihan dari bencana tambahan
  • Meningkatkan performa baca
  • Memigrasikan data antara region
Replikasi logis Semua instance PostgreSQL Semua instance PostgreSQL, atau konsumen eksternal
  • Replikasi dari luar Cloud SQL
  • Replikasi di seluruh versi PostgreSQL
  • Mereplikasi subset data saja dalam beberapa tabel, menggunakan pemfilteran baris dan kolom. Lihat juga pglogical 2.1 dan Replikasi Logis di PostgreSQL 10.
  • Replikasi ke tujuan non-PostgreSQL (mengubah pengambilan data)

Penagihan

  • Replika baca dikenakan biaya yang sama seperti instance Cloud SQL standar. Replikasi data tidak dikenai biaya.
  • Harga untuk replika baca lintas region sama dengan pembuatan instance Cloud SQL baru di region tersebut. Lihat Harga instance Cloud SQL dan pilih region yang sesuai. Selain biaya reguler yang terkait dengan instance, replika lintas region akan dikenai biaya transfer data lintas region untuk log replikasi yang dikirim dari instance utama ke instance replika, seperti yang dijelaskan dalam Harga Traffic Keluar Jaringan.

Referensi cepat untuk replika baca Cloud SQL

Topik Diskusi
Cadangan Anda tidak dapat mengonfigurasi cadangan pada replika.
Inti dan memori Replika baca dapat menggunakan jumlah inti dan memori yang berbeda dari instance utama.
Menghapus instance utama Sebelum dapat menghapus instance utama, Anda harus mengangkat semua replika baca tersebut ke instance mandiri atau menghapus replika baca.
Menghapus replika Saat Anda menghapus replika, status instance utama tersebut tidak akan berpengaruh.
Menonaktifkan logging write-ahead Sebelum Anda dapat menonaktifkan log biner pada instance utama, Anda harus mempromosikan atau menghapus semua replika bacanya.
Failover Instance utama tidak dapat melakukan failover ke replika baca, dan replika baca tidak dapat melakukan failover dengan cara apa pun selama pemadaman layanan.
Ketersediaan tinggi Replika baca memungkinkan Anda mengaktifkan ketersediaan tinggi pada replika.
Load balancing Cloud SQL tidak menyediakan load balancing di antara replika. Anda dapat memilih untuk mengimplementasikan load balancing untuk instance Cloud SQL Anda. Anda juga dapat menggunakan penggabungan koneksi mendistribusikan kueri di seluruh replika dengan penyiapan load balancing untuk untuk mendapatkan performa yang lebih baik.
Masa pemeliharaan Masa pemeliharaan tidak dapat disetel pada replika baca dan masa pemeliharaan tidak dibagi dengan instance utama. Pemeliharaan dapat terjadi kapan saja pada replika baca. Pemeliharaan terjadi pada replika baca untuk waktu yang berbeda dengan instance utama.
Beberapa replika baca Cloud SQL mendukung replika bertingkat. Dengan demikian, Anda dapat membuat hingga 10 replika untuk satu instance utama, dan replika dapat digabungkan hingga empat level, termasuk yang utama.
IP Pribadi Jika Anda terhubung ke replika menggunakan alamat IP pribadi, Anda tidak perlu membuat koneksi pribadi VPC tambahan untuk replika tersebut karena sudah diberikan oleh instance utama.
Memulihkan instance utama Anda tidak dapat memulihkan instance utama sebuah replika saat replika tersebut masih ada. Sebelum memulihkan instance dari cadangan atau menjalankan pemulihan point-in-time pada instance tersebut, Anda harus mengangkat atau menghapus semua replika tersebut.
Setelan Setelan instance utama diterapkan ke replika, termasuk sandi untuk pengguna postgres dan perubahan pada tabel pengguna.
Menghentikan replika Anda tidak dapat melakukan stop pada replika. Anda dapat restart, delete, atau disable replication pada replika, tetapi Anda tidak dapat menghentikannya seperti yang dapat Anda lakukan pada instance utama.
Meng-upgrade replika Replika baca dapat mengalami upgrade yang mengganggu kapan saja.
Tabel pengguna Anda tidak dapat membuat perubahan pada replika. Semua perubahan pengguna harus dilakukan di instance utama.

Langkah selanjutnya