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:

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.

Cloud SQL tidak mendukung replikasi antara dua server eksternal. Namun, Cloud SQL mendukung replikasi berbasis ID transaksi global (GTID). GTID secara unik mengidentifikasi setiap transaksi di server dan dalam penyiapan replikasi. Karena setiap transaksi memiliki ID yang unik, server MySQL dapat melacak transaksi yang telah dijalankannya. GTID menggunakan koordinat absolut sehingga replika instance Cloud SQL dapat mengarah ke instance utamanya, dan Anda tidak perlu menentukan nama file untuk log biner atau posisi dalam pernyataan CHANGE MASTER. Error dengan replika dan dengan pemulihan point-in-time akan lebih sedikit. Karena manfaat ini, Anda tidak dapat menonaktifkan replikasi berbasis GTID di Cloud SQL.

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.

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 utama dan replika baca di bawah replika 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

Menggambarkan konfigurasi replika bertingkat dengan replika
             bertingkat di region yang terpisah

Penonaktifan, layanan nonaktif

Menampilkan promosi atau replika selama pemadaman

Promosi

Menggambarkan 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 replika bertingkat di region yang sama dengan instance utama, replika bertingkat juga harus berada di region yang sama.

Replika baca eksternal

Replika baca eksternal adalah instance MySQL eksternal yang mereplikasi dari instance utama Cloud SQL. Misalnya, instance MySQL yang berjalan di Compute Engine dianggap sebagai instance eksternal.

Replika baca eksternal memiliki batasan-batasan berikut:

  • Mereplikasi ke instance MySQL yang dihosting oleh platform cloud lain bisa jadi tidak memungkinkan; periksa dokumentasi dari penyedia lain. Misalnya, menyiapkan kolom konfigurasi replicate-ignore-db diperlukan, dan penyedia cloud yang tidak mengizinkan hal ini tidak didukung. Lihat Mengonfigurasi replika eksternal untuk kolom konfigurasi lain yang diperlukan.
  • Jika replikasi terganggu selama beberapa jam, misalnya oleh pemadaman jaringan atau server, replika akan berada di belakang replika utama. Replika akan mengejar setelah terhubung kembali ke replika utama dan mulai mereplikasi lagi. Namun, jika replikasi terganggu lebih lama dari log replikasi Cloud SQL yang dipertahankan (tujuh cadangan), Anda harus menghapus replika dan membuat replika baru.
  • Data yang mengalir dari replika utama ke replika eksternal akan dikenai biaya sebagai transfer data keluar. Lihat halaman harga guna mengetahui harga transfer data untuk jenis instance Cloud SQL Anda.
  • Jika Anda membuat replika baca eksternal untuk instance, dan menerapkan penggunaan hanya Proxy Auth Cloud SQL atau Cloud SQL Language Connectors untuk terhubung ke instance yang memiliki akses layanan pribadi yang dikonfigurasi untuknya, Anda harus menambahkan rentang subnet replika ke jaringan yang diotorisasi instance utama. Anda harus mengonfigurasi semua rentang sebagai jaringan yang diizinkan untuk instance Cloud SQL.

    gcloud

    Untuk menetapkan otorisasi IP bagi instance guna mengizinkan traffic dari rentang alamat IP replika baca eksternal, gunakan perintah gcloud sql instances patch:

    gcloud sql instances patch \
    --authorized-networks=IP_ADDRESS_RANGE_1/24,IP_ADDRESS_RANGE_2/24

    Ganti IP_ADDRESS_RANGE_1 dan IP_ADDRESS_RANGE_2 dengan rentang alamat IP replika baca eksternal Anda.

    REST

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance
    • INSTANCE_NAME: nama instance Cloud SQL Anda
    • IP_ADDRESS_RANGE_1: rentang alamat IP pertama replika baca eksternal Anda
    • IP_ADDRESS_RANGE_2: rentang alamat IP kedua replika baca eksternal Anda

    Metode HTTP dan URL:

    PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

    Meminta isi JSON:

    {
      "kind": "sql#instance",
      "name": INSTANCE_NAME,
      "project": PROJECT_ID,
      "settings": {
        "ipConfiguration": {
          "authorizedNetworks": [{"kind": "sql#aclEntry", "value": "IP_ADDRESS_RANGE_1/24"}, {"kind": "sql#aclEntry", "value": "IP_ADDRESS_RANGE_2/24"}]},
      "kind": "sql#settings"
      }
    }

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "kind": "sql#operation",
      "targetLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "status": "PENDING",
      "user": "user@example.com",
      "insertTime": "2020-01-16T02:32:12.281Z",
      "operationType": "UPDATE",
      "name": "OPERATION_ID",
      "targetId": "INSTANCE_NAME",
      "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
      "targetProject": "PROJECT_ID"
    }
    

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
Replika baca eksternal Instance Cloud SQL Instance MySQL eksternal ke Cloud SQL
  • Mengurangi latensi untuk koneksi eksternal
  • Target Analytics
  • Jalur migrasi ke platform lain
Replikasi dari server eksternal Instance MySQL eksternal ke Cloud SQL Instance Cloud SQL untuk MySQL
  • Jalur migrasi ke Cloud SQL
  • Replikasi data ke Google Cloud
  • Target analisis

Prasyarat untuk membuat replika baca

Sebelum Anda dapat membuat replika baca dari instance Cloud SQL utama, instance tersebut harus memenuhi persyaratan berikut:

  • Pencadangan otomatis harus diaktifkan.
  • Logging biner harus diaktifkan yang mengharuskan pemulihan point-in-time untuk diaktifkan. Pelajari lebih lanjut dampak log ini.
  • Setidaknya satu cadangan harus dibuat setelah logging biner diaktifkan.

Persyaratan tambahan untuk replika eksternal:

  • Versi MySQL dari replika harus sama atau lebih tinggi dari versi replika dari instance utama. Pelajari lebih lanjut.
  • Untuk keamanan, Anda harus mengonfigurasi SSL/TLS pada instance utama. Pelajari lebih lanjut.

Dampak mengaktifkan logging biner

Anda harus mengaktifkan pemulihan point-in-time untuk mengaktifkan logging biner pada instance utama untuk mendukung replika baca. Hal ini berdampak sebagai berikut:

  • Overhead performa

    Cloud SQL menggunakan replikasi berbasis baris dengan flag MySQL sync_binlog=1 dan innodb_support_xa=true. Oleh karena itu, diperlukan fsync disk tambahan untuk setiap operasi tulis, yang dapat mengurangi performa.

  • Penyimpanan overhead

    Penyimpanan log biner dikenai biaya dengan tarif yang sama seperti data reguler. Log biner secara otomatis dipotong ke usia pencadangan otomatis terlama. Cloud SQL menyimpan tujuh cadangan otomatis terbaru, dan semua cadangan on-demand. Ukuran log biner, dan oleh karena itu jumlah yang dikenai biaya, bergantung pada workload. Misalnya, workload tulis yang berat menggunakan ruang log biner lebih banyak daripada workload baca yang berat.

    Anda dapat melihat ukuran log biner menggunakan perintah MySQL SHOW BINARY LOGS.

    Saat cadangan diambil, log disimpan dalam cadangan bersama dengan datanya.

Logging biner pada replika baca

  • Logging biner didukung pada instance replika baca (khusus MySQL 5.7 dan 8.0. Anda mengaktifkan logging biner pada replika dengan perintah API yang sama seperti pada yang utama, dengan menggunakan nama instance replika, bukan nama instance utama. Perlu diingat bahwa istilah enable binary logging dan enable point-in-time recovery dapat dipertukarkan.

    Ketahanan logging biner pada instance replika (tetapi tidak pada instance utama) dapat disetel dengan flag sync_binlog, yang mengontrol seberapa sering server MySQL menyinkronkan log biner ke disk.

    Logging biner dapat diaktifkan pada replika meskipun pencadangan dinonaktifkan di replika utama.

    Jika replika yang memiliki nilai yang ditetapkan ini dipromosikan ke server mandiri, setelan akan direset ke nilai aman 1 di server mandiri.

Penagihan

  • Replika baca dikenakan biaya yang sama seperti instance Cloud SQL standar. Replikasi data tidak dikenai biaya.
  • Untuk replika eksternal, data yang mengalir dari replika utama ke replika eksternal dikenai biaya sebagai transfer data. Lihat halaman harga guna mengetahui harga transfer data untuk jenis instance Cloud SQL Anda.
  • 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 terpengaruh.
Menonaktifkan logging biner 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.
Replikasi paralel Untuk mengetahui informasi tentang cara menggunakan replikasi paralel untuk peningkatan performa, lihat Mengonfigurasi replikasi paralel.
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 MySQL instance utama diterapkan ke replika termasuk root password dan perubahan pada tabel pengguna. Perubahan CPU dan memori tidak diterapkan ke replika.
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