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 mysql Client).
- Pastikan bahwa replika sedang mereplikasi, lalu tunggu
hingga jeda replikasi yang dilaporkan oleh
metrik
Seconds_Behind_Master
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.
Mengonfigurasi replikasi paralel
Mengurangi kelambatan replikasi penting untuk mengelola kinerja replikasi. Keterlambatan replikasi terjadi ketika pembaruan pada replika baca tertinggal dari pembaruan pada instance utama. Bagian ini menjelaskan cara pengguna mengaktifkan replikasi paralel, yang dapat mengurangi kelambatan replikasi.
Dalam replikasi MySQL, thread SQL replikasi digunakan untuk menyetujui transaksi yang dikumpulkan dalam log relai pada replika baca. Replikasi paralel mengurangi kelambatan replikasi dengan meningkatkan jumlah thread SQL yang bekerja untuk menyetujui transaksi ini. Replika baca dengan replikasi paralel yang diaktifkan terkadang disebut replika multi-thread.
Replikasi paralel tersedia dalam tiga skenario berikut di Cloud SQL untuk MySQL:
Untuk mempermudah, halaman ini menggunakan istilah "instance utama" dan "replika baca".
Langkah-langkah dasar untuk mengubah flag replikasi paralel
Langkah-langkah untuk mengaktifkan replikasi paralel adalah sebagai berikut:
- Pada replika baca, nonaktifkan replikasi.
- Pada replika baca,
tetapkan flag untuk
replikasi paralel. Gunakan perintah
gcloud
untuk menetapkan flag. Opsi Google Cloud Console dinonaktifkan saat replikasi dinonaktifkan. - Pada replika baca, aktifkan replikasi.
- Secara opsional, pada contoh utama, tetapkan tanda untuk mengoptimalkan performa untuk replikasi paralel.
Replika baca: Tanda untuk replikasi paralel
Cloud SQL untuk MySQL mendukung beberapa flag untuk replikasi paralel pada replika baca. Untuk mengetahui informasi tentang flag, klik link berikut ke dokumentasi MySQL 8.0:
Mengubah flag ini tidak akan memulai ulang replika baca.
Tabel berikut berisi rentang yang diizinkan dan nilai default untuk tanda ini:
Tanda replika baca | Nilai yang diizinkan | Nilai default MySQL 5.7 | Nilai default MySQL 8.0 |
---|---|---|---|
slave_parallel_workers |
0-1024 | 0 | 0 (MySQL 8.0.26 dan yang lebih lama) 4 (MySQL 8.0.27 dan yang lebih baru) |
slave_parallel_type |
DATABASE, LOGICAL_CLOCK |
DATABASE |
DATABASE (MySQL 8.0.26 dan yang lebih lama)LOGICAL_CLOCK (MySQL 8.0.27 dan yang lebih baru) |
slave_preserve_commit_order |
ON, OFF |
OFF |
OFF (MySQL 8.0.26 dan yang lebih lama)ON (MySQL 8.0.27 dan yang lebih baru) |
slave_pending_jobs_size_max |
1024-1GB | 16MB | 128 MB |
Flag slave_preserve_commit_order
mencegah kesenjangan dalam urutan
transaksi yang dijalankan dari log relai replika.
Setelan
slave_preserve_commit_order=1
memerlukan hal berikut:
- Mengaktifkan log biner pada replika (hanya untuk MySQL 5.7, MySQL 8.0.18, dan versi yang lebih lama)
- Menetapkan
slave_parallel_type
keLOGICAL_CLOCK
Flag slave_pending_jobs_size_max
menetapkan memori maksimum, dalam byte, yang tersedia untuk antrean applier yang menyimpan peristiwa yang belum diterapkan.
Instance utama: Tanda untuk replikasi paralel
Cloud SQL untuk MySQL mendukung beberapa flag untuk digunakan pada instance utama. Anda dapat menggunakan flag ini untuk menyesuaikan performa replikasi untuk replika baca terkait dengan replikasi paralel yang diaktifkan. Untuk mengetahui informasi tentang flag, klik link berikut ke dokumentasi MySQL 8.0:
- binlog_transaction_dependency_history_size
- binlog_transaction_dependency_tracking
- transaction_write_set_extraction
Mengubah flag ini tidak akan memulai ulang instance utama.
Tabel berikut berisi rentang yang diizinkan dan nilai default untuk flag ini:
Tanda instance utama | Nilai yang diizinkan | Nilai default MySQL 5.7 | Nilai default MySQL 8.0 |
---|---|---|---|
binlog_transaction_dependency_history_size |
1-1000000 | 25000 | 25000 |
binlog_transaction_dependency_tracking |
COMMIT_ORDER, WRITESET, WRITESET_SESSION |
COMMIT_ORDER |
WRITESET |
transaction_write_set_extraction |
OFF, MURMUR32, XXHASH64 |
OFF |
XXHASH64 |
Di MySQL 5.7, jika binlog_transaction_dependency_tracking
ditetapkan ke WRITESET
atau WRITESET_SESSION
, transaction_write_set_extraction
harus ditetapkan ke nilai non-OFF
(XXHASH64
atau MURMUR32
).
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 menunjukkan |
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. Metrik ini melaporkan nilai |
Kelambatan Jaringan ( cloudsql.googleapis.com ) |
Jumlah waktu, dalam detik yang diperlukan dari penulisan binlog di database utama untuk mencapai thread IO di replika. Jika network_lag bernilai nol, atau dapat diabaikan, tetapi `replica_lag` tinggi, ini menunjukkan bahwa thread SQL tidak dapat menerapkan perubahan replikasi dengan cukup cepat. |
Status thread I/O slave berjalan ( cloudsql.googleapis.com ) |
Menunjukkan apakah thread I/O untuk membaca log biner instance utama sedang berjalan pada replika atau tidak. Nilainya dapat berupa:
Metrik ini melaporkan nilai |
Status eksekusi thread SQL slave ( cloudsql.googleapis.com ) |
Menunjukkan apakah thread SQL untuk menjalankan peristiwa di log relai sedang berjalan pada replika atau tidak. Nilainya dapat berupa:
Metrik ini melaporkan nilai |
Untuk memeriksa status replikasi:
Konsol
Cloud SQL melaporkan metrik Replication State
dan Replication Lag
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. - Guna memantau kondisi replikasi metrik: di kolom Pilih
metrik, ketik
replica_lag
. Diagram menunjukkan durasi waktu ketika status replika tertinggal dari status utama. - Untuk memantau status thread I/O replika: di kolom Select a metric, ketik
Slave I/O thread running state
. Lalu tambahkan filter distate = "Yes"
. Diagram menunjukkan 1 jika thread berjalan dan 0 jika tidak. - Untuk memantau status thread SQL replika: di kolom Select a metric, ketik
Slave SQL thread running state
. Lalu tambahkan filter distate = "Yes"
. Diagram menunjukkan 1 jika thread berjalan dan 0 jika tidak.
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 mysql
- Menghubungkan ke replika dengan klien MySQL.
Untuk mengetahui informasinya, lihat Opsi koneksi untuk aplikasi eksternal.
- Periksa status replika:
SHOW SLAVE STATUS \G
Cari metrik berikut dalam output perintah:
Master_Host
: Nama instance utamaSlave_IO_Running
,Slave_SQL_Running
: Apakah thread I/O dan SQL berjalan. Thread ini bertanggung jawab mentransfer peristiwa dari log utama ke log relai replika dan menjalankan peristiwa tersebut dari log relai. Nilai metrik adalahYes
jika thread berjalan. Kedua thread harus berjalan agar replikasi aktif.Seconds_Behind_Master
: Jumlah waktu, dalam hitungan detik, ketika replika mengalami keterlambatan dalam memproses transaksi utama, yaitu perbedaan antara (1) waktu saat ini dan (2) stempel waktu aslinya di tempat utama melakukan transaksi yang saat ini sedang diterapkan pada replika. Nilainya adalahNULL
jika replikasi rusak.-
Master_Log_file
danRead_Master_Log_Pos
.Relay_Master_Log_File
danExec_Master_Log_Pos
: Metrik ini menunjukkan koordinat (nama file dan offset) di mana thread I/O telah membaca peristiwa hingga (Master_Log_file
danRead_Master_Log_Pos
) dan thread SQL telah mengeksekusi peristiwa hingga (Relay_Master_Log_File
danExec_Master_Log_Pos
). Jika sama (misalnyaMaster_Log_file
sama denganRelay_Master_Log_File
danRead_Master_Log_Pos
sama denganExec_Master_Log_Pos
) berarti replika telah memproses semua peristiwa yang diterima dari peristiwa utama.
Untuk detail selengkapnya tentang output dari perintah ini, lihat dokumentasi MySQL tentang Memeriksa Status Replikasi.
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 mengupgradenya ke ukuran disk yang lebih besar. |
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:
|
Kelambatan replikasi tiba-tiba melonjak. | Hal ini disebabkan oleh transaksi yang berjalan lama. Saat sebuah transaksi
(satu pernyataan atau beberapa pernyataan) di-commit pada instance sumber,on
waktu mulai transaksi dicatat dalam log biner. Saat
menerima peristiwa binlog ini, replika akan membandingkan stempel waktu tersebut dengan stempel waktu
saat ini untuk menghitung kelambatan replikasi. Oleh karena itu, transaksi yang berjalan lama
pada sumber akan langsung mengakibatkan kelambatan replikasi yang besar pada
replika. Jika jumlah perubahan baris dalam transaksi besar,
replika juga akan menghabiskan waktu lama untuk menjalankannya. Selama waktu tersebut,
kelambatan replikasi meningkat. Setelah replika menyelesaikan transaksi
ini, periode untuk mengejar ketertinggalan akan bergantung pada beban kerja tulis pada
sumber dan kecepatan pemrosesan replika.
Untuk menghindari transaksi yang panjang, beberapa solusi yang memungkinkan mencakup:
|
Mengubah tanda replikasi paralel akan menghasilkan error. | Nilai yang salah ditetapkan untuk salah satu atau beberapa tanda ini.
Pada instance utama yang menampilkan pesan error, tetapkan tanda replikasi paralel:
|
Pembuatan replika gagal dengan waktu tunggu. | 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 prosedur tersimpan Cloud SQL untuk indeks replika baca.
- Pelajari cara mengonfigurasi konfigurasi replika eksternal.
- Pelajari cara mengonfigurasi konfigurasi utama eksternal.
- Pelajari persyaratan dan praktik terbaik untuk replikasi lebih lanjut.