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:
Dengan menggunakan pemaksaan konektor, Anda dapat mewajibkan penggunaan hanya Proxy Auth Cloud SQL atau Cloud SQL Language Connectors untuk terhubung ke instance Cloud SQL. Dengan penerapan konektor, Cloud SQL akan menolak koneksi langsung ke database. Anda tidak dapat membuat replika baca untuk instance yang mengaktifkan penerapan konektor. Demikian pula, jika instance memiliki replika baca, Anda tidak dapat mengaktifkan penerapan konektor untuk instance tersebut.
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:
- Ubah ukuran instance replika ke jenis mesin yang lebih besar.
- Konfigurasikan aplikasi klien Anda untuk membatasinya ke beberapa jumlah koneksi
yang kurang dari nilai
max_connections
. - 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. Skenario berikut adalah kasus penggunaan untuk menggunakan 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 dapat 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 delapan 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 replika 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
Penonaktifan, layanan nonaktif
Promosi
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 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. 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 bawaan
- 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 |
|
|
Replika baca lintas region | Instance Cloud SQL | Instance Cloud SQL |
|
|
Replikasi logis | Semua instance PostgreSQL | Semua instance PostgreSQL, atau konsumen eksternal |
|
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 dikenakan biaya transfer data lintas region untuk log replikasi yang dikirim dari instance utama ke instance replika, seperti yang sudah dijelaskan di Harga Traffic Keluar Jaringan.
Referensi singkat 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 mempromosikan semua replika bacanya 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 hanya dapat melakukan failover ke replika jika replika tersebut adalah replika DR. 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 | Replika baca berbagi masa pemeliharaan dengan instance utama. Replika mengikuti setelan pemeliharaan untuk instance utama, termasuk masa pemeliharaan, penjadwalan ulang, dan periode penolakan pemeliharaan. Selama pemeliharaan, Cloud SQL akan mengupdate semua replika baca terlebih dahulu sebelum mengupdate instance utama. |
Beberapa replika baca | Cloud SQL mendukung replika bertingkat. Dengan demikian, Anda dapat membuat hingga 10 replika untuk satu instance utama dan membuat replika dari replika tersebut, hingga empat level termasuk instance 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 berikutnya
- Pelajari cara membuat replika baca.
- Pelajari cara mengonfigurasi instance untuk ketersediaan tinggi.