Halaman ini menjelaskan cara mengelola replika baca. Operasi ini termasuk menonaktifkan dan mengaktifkan replikasi, mempromosikan replika, mengonfigurasi replika paralel, dan memeriksa status replikasi.
Untuk mengetahui informasi selengkapnya tentang cara kerja replikasi, baca Replikasi di Cloud SQL.
Nonaktifkan replikasi
Secara default, replika dimulai dengan mengaktifkan replikasi. Namun, Anda dapat menonaktifkan replikasi, misalnya, untuk men-debug atau menganalisis status sebuah instance. Jika sudah siap, Anda dapat mengaktifkan kembali replikasi secara eksplisit. Menonaktifkan atau mengaktifkan kembali replikasi tidak akan memulai ulang instance replika.
Menonaktifkan replikasi tidak menghentikan instance replika; instance menjadi hanya-baca yang tidak lagi direplikasi dari instance utamanya. Anda akan tetap ditagih untuk instance tersebut. Pada replika yang dinonaktifkan, Anda dapat mengaktifkan kembali replikasi, menghapus replika, atau mempromosikan replika ke instance mandiri.
Untuk menonaktifkan replikasi:
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Pilih instance replika dengan mengklik namanya.
- Klik Nonaktifkan replikasi di panel tombol.
- Klik OK.
gcloud
gcloud sql instances patch REPLICA_NAME \ --no-enable-database-replication
REST v1
Untuk menjalankan perintah cURL ini pada command line prompt, Anda perlu memperoleh token akses menggunakan perintah gcloud auth print-access-token. Anda juga dapat menggunakan APIs Explorer pada halaman Instance:patch untuk mengirim permintaan REST API.
Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:
- project-id: ID Project
- replica-name: Nama instance replika
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Meminta isi JSON:
{ "settings": { "databaseReplicationEnabled": "False" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
REST v1beta4
Untuk menjalankan perintah cURL ini pada command line prompt, Anda perlu memperoleh token akses menggunakan perintah gcloud auth print-access-token. Anda juga dapat menggunakan APIs Explorer pada halaman Instance:patch untuk mengirim permintaan REST API.
Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:
- project-id: ID Project
- replica-name: Nama instance replika
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Meminta isi JSON:
{ "settings": { "databaseReplicationEnabled": "False" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
Aktifkan replikasi
Jika replika tidak melakukan replikasi untuk waktu yang lama, akan membutuhkan waktu lebih lama untuk mengejar ketertinggalan dari instance utama. Dalam hal ini, hapus replika dan buat yang baru.
Untuk mengaktifkan replikasi:
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Pilih instance replika dengan mengklik namanya.
- Klik Aktifkan Replikasi.
- Klik Oke.
gcloud
gcloud sql instances patch REPLICA_NAME \ --enable-database-replication
REST v1
Untuk menjalankan perintah cURL ini pada command line prompt, Anda perlu memperoleh token akses menggunakan perintah gcloud auth print-access-token. Anda juga dapat menggunakan APIs Explorer pada halaman Instance:patch untuk mengirim permintaan REST API.
Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:
- project-id: ID Project
- replica-name: Nama instance replika
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name
Meminta isi JSON:
{ "settings": { "databaseReplicationEnabled": "True" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
REST v1beta4
Untuk menjalankan perintah cURL ini pada command line prompt, Anda perlu memperoleh token akses menggunakan perintah gcloud auth print-access-token. Anda juga dapat menggunakan APIs Explorer pada halaman Instance:patch untuk mengirim permintaan REST API.
Sebelum menggunakan salah satu data permintaan, buat pengganti berikut:
- project-id: ID Project
- replica-name: Nama instance replika
Metode HTTP dan URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name
Meminta isi JSON:
{ "settings": { "databaseReplicationEnabled": "True" } }
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
Mempromosikan replika
Mempromosikan replika baca akan menghentikan replikasi dan mengonversi instance menjadi instance utama Cloud SQL mandiri dengan kemampuan baca dan tulis.
Saat dipromosikan, replika baca otomatis dikonfigurasi dengan cadangan, tetapi tidak dikonfigurasi secara otomatis sebagai instance ketersediaan tinggi (HA). Anda dapat mengaktifkan ketersediaan tinggi setelah mempromosikan replika seperti yang Anda lakukan untuk instance non-replika apa pun. Mengonfigurasi replika baca untuk ketersediaan tinggi dilakukan dengan cara yang sama seperti untuk instance utama. Pelajari lebih lanjut cara mengonfigurasi instance untuk ketersediaan tinggi.
Sebelum mempromosikan replika baca, jika replika baca masih tersedia dan menayangkan klien, Anda harus melakukan hal berikut:
- Menghentikan semua penulisan ke instance utama.
- Periksa status replikasi replika (ikuti petunjuk di tab psql Client).
- Pastikan bahwa replika sedang mereplikasi, lalu tunggu
hingga jeda replikasi yang dilaporkan oleh
metrik
replay_lag
adalah 0.
Jika tidak, instance yang baru dipromosikan mungkin tidak memiliki beberapa transaksi yang di-commit ke instance utama.
Guna mempromosikan replika ke instance mandiri:
Konsol
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Pilih instance replika dengan mengklik namanya.
- Klik Promosikan replika.
- Klik Oke.
gcloud
gcloud sql instances promote-replica REPLICA_NAME
REST v1
Untuk menjalankan perintah cURL ini pada command line prompt, Anda perlu memperoleh token akses menggunakan perintah gcloud auth print-access-token. Anda juga dapat menggunakan APIs Explorer di halaman Instances:promoteReplica untuk mengirim permintaan REST API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: ID Project
- replica-name: Nama instance replika
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/replica-name/promoteReplica
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
REST v1beta4
Untuk menjalankan perintah cURL ini pada command line prompt, Anda perlu memperoleh token akses menggunakan perintah gcloud auth print-access-token. Anda juga dapat menggunakan APIs Explorer di halaman Instances:promoteReplica untuk mengirim permintaan REST API.
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
- project-id: ID Project
- replica-name: Nama instance replika
Metode HTTP dan URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/replica-name/promoteReplica
Untuk mengirim permintaan, perluas salah satu opsi berikut:
Anda akan menerima respons JSON yang mirip dengan yang berikut ini:
Pastikan instance yang dipromosikan sudah dikonfigurasi dengan benar. Secara khusus, pertimbangkan untuk mengonfigurasi instance untuk ketersediaan tinggi jika diperlukan.
Memeriksa status replikasi
Saat melihat instance replika menggunakan Google Cloud Console atau login ke instance menggunakan klien administrasi, Anda akan mendapatkan detail tentang replikasi, termasuk status dan metrik. Saat menggunakan gcloud CLI, Anda akan mendapatkan ringkasan singkat tentang konfigurasi replikasi.
Sebelum memeriksa status replikasi untuk instance replika Cloud SQL,
gunakan perintah gcloud sql instances describe
untuk menampilkan
status instance. Akibatnya, Anda dapat melihat apakah replikasi diaktifkan
untuk instance replika atau tidak.
Metrik berikut tersedia untuk instance replika. (Pelajari lebih lanjut metrik tambahan yang tersedia untuk semua instance, termasuk instance non-replika.)
Metrik | Deskripsi |
---|---|
Status Replikasi ( cloudsql.googleapis.com ) |
Menunjukkan apakah replikasi secara aktif melakukan streaming log dari log utama ke replika. Nilainya dapat berupa:
Metrik ini melaporkan
Untuk mengetahui informasi selengkapnya, lihat The Kolektor Statistik dan Fungsi Sistem Administrasidi Panduan Referensi PostgreSQL. |
Jeda Replikasi ( cloudsql.googleapis.com ) |
Durasi saat status replika mengalami keterlambatan dibandingkan status instance utama. Ini adalah perbedaan antara (1) waktu saat ini dan (2) stempel waktu asli saat transaksi utama di-commit yang sedang diterapkan pada replika. Secara khusus, penulisan mungkin dianggap sebagai keterlambatan meskipun telah diterima oleh replika, jika replika belum menerapkan penulisan ke database. Untuk replika beruntun, setiap pasangan replika utama dipantau secara terpisah dan tidak ada metrik tunggal yang menghasilkan keterlambatan (utama ke replika) secara menyeluruh. Untuk informasi selengkapnya, lihat Jeda replikasi. |
Byte Jeda ( cloudsql.googleapis.com ) |
Melaporkan jumlah byte yang digunakan oleh replika baca yang tertinggal dari yang utama. Empat deret waktu dihasilkan untuk setiap replika, yang menunjukkan jumlah byte dalam log write-ahead utama yang belum…
Metrik ini memiliki tujuan yang berbeda; misalnya,
Metrik ini dihitung dengan membandingkan
|
Byte Jeda Maksimal ( cloudsql.googleapis.com ) |
Untuk replika primer eksternal, laporkan jeda replikasi maksimum (dalam byte) pada semua database yang direplikasi ke instance ini. Untuk setiap database, hal ini didefinisikan sebagai jumlah byte dalam write-ahead log utama yang belum dikonfirmasi untuk diterima oleh replika. Metrik ini dihitung dengan mengirimkan kueri ke instance utama untuk membandingkan
|
Untuk memeriksa status replikasi:
Konsol
Cloud SQL melaporkan
Replication State
metrik di
dasbor
pemantauan Cloud SQL default.
Untuk melihat metrik lain untuk replika dalam region dan lintas region, serta replika server eksternal, buat dasbor kustom dan tambahkan metrik yang ingin Anda pantau ke dasbor tersebut:
-
Di konsol Google Cloud, buka halaman Monitoring.
- Pilih tab Dasbor.
- Klik Buat Dasbor.
- Beri nama dasbor lalu klik OK.
- Klik Tambahkan Diagram.
- Untuk Resource Type, pilih Cloud SQL Database.
- Lakukan salah satu tindakan berikut:
- Guna memantau kondisi replikasi metrik: di kolom Pilih
metrik, ketik
Replication state
. Lalu, tambahkan filter untukstate = "Running"
. Diagram menunjukkan 1 jika replikasi berjalan dan 0 jika tidak. - Untuk memantau jeda replikasi, dalam byte, untuk replika baca: di
kolom Pilih metrik, ketik
Lag Bytes
. Lalu tambahkan filter direplica_lag_type = "replay_location"
. Diagram ini menunjukkan jumlah byte yang terkait dengan transaksi yang telah di-commit di jaringan utama, tetapi belum di-replay di replika. - Guna memantau jeda replikasi, dalam byte, untuk replika
primer eksternal: di kolom Pilih metrik ketik
Max Lag Bytes
. Diagram ini menunjukkan jumlah byte yang terkait dengan transaksi yang telah di-commit di jaringan utama, tetapi belum dikonfirmasi diterima oleh replika.
gcloud
Untuk instance replika, periksa status replikasi dengan:
gcloud sql instances describe REPLICA_NAME
Pada output, cari properti databaseReplicationEnabled
dan masterInstanceName
.
Untuk instance utama, periksa apakah ada replika dengan:
gcloud sql instances describe PRIMARY_INSTANCE_NAME
Di output, cari properti replicaNames
.
Klien psql
Beberapa metrik status replikasi dihasilkan oleh elemen utama dan beberapa lainnya dihasilkan oleh replika. Untuk langkah-langkah berikut, hubungkan ke replika atau instance utama (seperti yang diarahkan di bawah) dengan klien PostgreSQL.
Untuk mengetahui informasinya, lihat Opsi koneksi untuk aplikasi eksternal.
- Untuk memeriksa status replika dari instance utama:
Cari metrik berikut dalam output perintah:select * from pg_stat_replication;
client_addr
: Alamat IP instance replika.state
: Menunjukkan apakah thread SQL untuk mengeksekusi peristiwa di log relay sedang berjalan atau tidak. Nilainya adalahstreaming
saat replikasi dimulai.replay_lag
: Jumlah byte yang digunakan oleh thread SQL replika di belakang instance utama. Nilainya adalahO
atau sejumlah kecil byte.
- Untuk memeriksa status replika dari instance replika:
select * from pg_stat_wal_receiver;
Cari metrik berikut dalam output perintah:
sender_host
: Alamat IP instance utama.status
: Menunjukkan apakah thread SQL untuk mengeksekusi peristiwa di log relay sedang berjalan atau tidak. Nilainya adalahstreaming
saat replikasi dimulai.last_msg_send_time
danlast_msg_receipt_time
: Perbedaan antara kedua stempel waktu ini adalah waktu keterlambatan.
Untuk memeriksa apakah replikasi telah dijeda:
select pg_is_wal_replay_paused();
Nilainya adalah
t
jika replikasi dijeda danf
jika tidak.Untuk memeriksa apakah ada transaksi yang telah diterima dari transaksi utama tetapi belum diterapkan:
# for PostgreSQL 9.6 select pg_catalog.pg_last_xlog_receive_location(), pg_catalog.pg_last_xlog_replay_location(); # for PostgreSQL 10 and above select pg_catalog.pg_last_wal_receive_lsn(), pg_catalog.pg_last_wal_replay_lsn();
Jika kedua nilai tersebut sama, berarti replika telah memproses semua transaksi yang diterima dari transaksi utama.
Memecahkan masalah
Masalah | Pemecahan masalah |
---|---|
Replika baca tidak mulai direplikasi pada saat pembuatan. | Mungkin ada error yang lebih spesifik di file log. Periksa log di Cloud Logging untuk menemukan error yang sebenarnya. |
Tidak dapat membuat replika baca - error invalidFlagValue. | Salah satu tanda dalam permintaan tidak valid. Ini bisa berupa tanda yang Anda
berikan secara eksplisit atau tanda yang ditetapkan ke nilai default.
Pertama, pastikan nilai tanda Jika flag |
Tidak dapat membuat replika baca - error tidak diketahui. | Mungkin ada error yang lebih spesifik di file log.
Periksa log di
Cloud Logging untuk menemukan error yang sebenarnya.
Jika error-nya adalah: |
Disk penuh. | Ukuran disk instance utama dapat penuh selama pembuatan replika. Edit instance utama untuk mengupgrade ke ukuran disk yang lebih besar. |
Kapasitas disk meningkat secara signifikan. | Slot yang tidak digunakan secara aktif untuk melacak data menyebabkan PostgreSQL
menahan segmen WAL tanpa batas waktu sehingga kapasitas disk bertambah tanpa batas. Jika Anda menggunakan
fitur replika dan decoding logis di Cloud SQL, slot replika akan
dibuat dan dihapus secara otomatis. Slot replika yang tidak digunakan dapat dideteksi dengan membuat kueri
pg_replication_slots
tampilan sistem dan pemfilteran di kolom active . Slot
yang tidak digunakan dapat dihapus untuk menghapus segmen WAL menggunakan perintah
pg_drop_replication_slot .
|
Instance replika menggunakan terlalu banyak memori. | Replika menggunakan memori sementara untuk meng-cache operasi baca yang
sering diminta, yang dapat menyebabkannya menggunakan lebih banyak memori daripada instance utama.
Mulai ulang instance replika untuk mengklaim kembali ruang memori sementara. |
Replikasi dihentikan. | Batas penyimpanan maksimum tercapai dan peningkatan penyimpanan otomatis
tidak diaktifkan.
Edit instance untuk mengaktifkan |
Jeda replikasi selalu tinggi. | Beban tulis terlalu tinggi untuk ditangani replika. Kelambatan replikasi
terjadi saat thread SQL pada replika tidak dapat mengikuti
thread IO. Beberapa jenis kueri atau beban kerja dapat menyebabkan kelambatan replikasi tinggi yang bersifat sementara atau
permanen untuk skema tertentu. Beberapa penyebab
umum kelambatan replikasi adalah:
Beberapa kemungkinan solusinya mencakup:
|
Terjadi error saat membangun ulang indeks di PostgreSQL 9.6. | Anda mendapatkan pemberitahuan terjadinya error dari PostgreSQL yang menginformasikan bahwa Anda perlu membangun ulang
indeks tertentu. Tindakan ini hanya dapat dilakukan pada instance utama. Jika Anda
membuat instance replika baru, maka error yang sama akan segera terjadi lagi.
Indeks hash
tidak diterapkan ke replika pada versi PostgreSQL di bawah 10.
Jika Anda harus menggunakan indeks hash, upgrade ke PostgreSQL 10+. Atau, jika Anda juga ingin menggunakan replika, jangan gunakan indeks hash di PostgreSQL 9.6. |
Kueri pada instance utama selalu berjalan. | Setelah membuat replika, kueri SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' diharapkan dapat berjalan secara terus-menerus pada instance utama Anda
|
Pembuatan replika gagal karena waktu tunggu habis. | Transaksi tanpa komitmen yang berjalan lama pada instance utama dapat menyebabkan
pembuatan replika baca gagal.
Buat ulang replika setelah menghentikan semua kueri yang berjalan. |
Langkah selanjutnya
- Pelajari cara membuat replika baca.
- Pelajari persyaratan dan praktik terbaik untuk replikasi lebih lanjut.