Membuat replika baca

Halaman ini menjelaskan cara membuat replika baca untuk instance Cloud SQL.

Untuk menyiapkan instance Cloud SQL agar bertindak sebagai penayang bagi pelanggan eksternal, baca Mengonfigurasi replika eksternal.

Replika baca adalah salinan instance utama yang mencerminkan perubahan pada instance utama secara hampir real time, dalam keadaan normal. Anda dapat menggunakan replika baca untuk memindahkan permintaan baca atau traffic analisis dari instance utama.

Selain itu, untuk pemulihan dari bencana, Anda dapat melakukan migrasi regional. Jika replika adalah replika lintas-region,Anda dapat menjalankan failover ke region lain; khususnya, Anda dapat mempromosikan replika ke instance mandiri (dalam hal ini, replika yang ada tidak akan menganggap instance tersebut sebagai utama).

Untuk mengetahui informasi selengkapnya tentang cara kerja replikasi, baca Replikasi di Cloud SQL.

Sebelum memulai

Jika Anda membuat replika pertama untuk instance ini, pastikan instance tersebut memenuhi persyaratan untuk instance utama. Pelajari lebih lanjut.

Membuat replika baca

Anda dapat membuat maksimal 8 replika baca per instance utama.

Langkah-langkah untuk membuat replika baca ada di bawah ini.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Temukan instance tempat Anda ingin membuat replika, lalu buka menu more actions di samping listingan.
  3. Pilih Buat replika baca.

    Jika Anda tidak melihat pilihan tersebut, berarti instance adalah replika; Anda tidak dapat membuat replika dari sebuah replika.

  4. Di bagian Sesuaikan instance Anda, update setelan untuk replika Anda. Mulailah dengan mengklik Tampilkan opsi konfigurasi untuk menampilkan grup setelan. Kemudian, luaskan grup yang diinginkan untuk meninjau dan menyesuaikan setelannya. Ringkasan semua opsi yang Anda pilih akan muncul di sebelah kanan. Anda dapat menyesuaikan setelan ini. Default ditetapkan setiap kasus ketika tidak ada penyesuaian yang dilakukan.

    Untuk mengetahui detail selengkapnya tentang setiap setelan, lihat halaman Tentang setelan instance.

  5. Klik Buat replika.

    Cloud SQL membuat cadangan, jika diperlukan, dan membuat replika. Anda akan dikembalikan ke halaman instance untuk instance utama.

gcloud

Buat replika:

gcloud sql instances create REPLICA_NAME \
--master-instance-name=PRIMARY_INSTANCE_NAME
  

Anda dapat menentukan ukuran tingkat yang berbeda menggunakan parameter --tier, jika diperlukan.

Anda dapat menentukan region yang berbeda menggunakan parameter --region.

Jika instance utama hanya memiliki alamat IP internal, tambahkan parameter --no-assign-ip ke perintah tersebut.

Anda dapat menambahkan parameter untuk setelan instance lainnya. Untuk mempelajari lebih lanjut, baca artikel membuat gcloud sql instances.

Anda harus membuat replika dalam jaringan VPC yang sama dengan instance utama. Anda juga dapat menentukan allocated-ip-range-name di jaringan VPC tersebut. Jika tidak ada rentang yang ditentukan, replika akan dibuat dalam rentang acak.

Terraform

Untuk membuat replika baca, gunakan resource Terraform.

resource "google_sql_database_instance" "read_replica" {
  name                 = "sqlserver-replica-instance-name"
  master_instance_name = google_sql_database_instance.primary.name
  region               = "europe-west4"
  database_version     = "SQLSERVER_2019_ENTERPRISE"
  root_password        = "INSERT-PASSWORD-HERE"
  replica_configuration {
    failover_target = false
  }

  settings {
    tier              = "db-custom-2-7680"
    availability_type = "ZONAL"
    disk_size         = "100"
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

REST v1beta4

Gunakan metode insert dari resource instance untuk membuat replika baca. Properti region dan versi database harus sama dengan master.

Sebelum menggunakan salah satu data permintaan, buat penggantian berikut:

  • project-id: Project ID
  • database-version: String versi enum (misalnya, SQLSERVER_2017_ENTERPRISE)
  • primary-instance-name: Nama instance utama
  • primary-instance-region: Region instance utama
  • replica-region: Region instance replika
  • replica-name: Nama instance replika
  • machine-type: String enum jenis mesin. Misalnya: "db-custom-1-3840"

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances

Meminta isi JSON:

{
  "masterInstanceName": "primary-instance-name",
  "project": "project-id",
  "databaseVersion": "database-version",
  "name": "replica-name",
  "region": "replica-region",
  "settings":
  {
    "tier": "machine-type",
    "settingsVersion": 0,
    
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan menerima respons JSON yang mirip dengan yang berikut ini:

Membuat replika baca instance dengan Private Service Connect yang diaktifkan

Untuk membuat replika baca instance dengan Private Service Connect yang diaktifkan, gunakan gcloud CLI atau API. Anda dapat membuat replika ini di region yang sama atau di region yang berbeda dari instance utama (replika baca lintas region).

Replika baca tidak dapat mereplikasi dari instance dengan jenis konektivitas yang berbeda. Misalnya, instance dengan Private Service Connect yang diaktifkan hanya dapat mereplikasi dari instance Private Service Connect lainnya. Kebijakan ini juga tidak dapat mereplikasi dari instance yang mendukung koneksi IP eksternal atau dari instance yang dikonfigurasi dengan akses layanan pribadi.

gcloud

Untuk membuat replika baca instance, gunakan perintah gcloud sql instances create:

gcloud sql instances create REPLICA_INSTANCE_NAME \
--master-instance-name=PRIMARY_INSTANCE_NAME \
--project=PROJECT_ID \
--region=REGION_NAME \
--enable-private-service-connect \
--allowed-psc-projects=ALLOWED_PROJECTS \
--availability-type=AVAILABILITY_TYPE \
--no-assign-ip

Lakukan penggantian berikut:

  • REPLICA_INSTANCE_NAME: nama instance replika.
  • PRIMARY_INSTANCE_NAME: nama instance utama.
  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance.
  • REGION_NAME: nama region untuk instance replika.
  • ALLOWED_PROJECTS: daftar project ID atau nomor yang diizinkan, dipisahkan koma. Jika project tidak ada dalam daftar ini, Anda tidak dapat menggunakannya untuk membuat instance dan mengaktifkan Private Service Connect untuk project tersebut.

    Cloud SQL tidak menyalin project yang diizinkan untuk instance utama ke replika. Untuk setiap replika, Anda harus membuat endpoint Private Service Connect. Jika Anda menggunakan Proxy Auth Cloud SQL atau Cloud SQL Language Connectors, buat zona DNS dan data DNS untuk replika.

  • AVAILABILITY_TYPE: mengaktifkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
    • REGIONAL: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance akan difailover ke zona lain dalam region yang Anda pilih.
    • ZONAL: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.

    Untuk informasi selengkapnya tentang cara menetapkan dan menghapus ketersediaan tinggi untuk instance, lihat Mengonfigurasi instance yang ada untuk ketersediaan tinggi dan Menonaktifkan ketersediaan tinggi untuk instance.

REST v1

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PRIMARY_INSTANCE_NAME: nama instance utama.
  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance.
  • REPLICA_INSTANCE_NAME: nama instance replika.
  • REGION_NAME: nama region untuk instance replika.
  • MACHINE_TYPE: jenis mesin untuk instance.
  • AVAILABILITY_TYPE: mengaktifkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
    • REGIONAL: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance akan difailover ke zona lain dalam region yang Anda pilih.
    • ZONAL: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.

    Untuk informasi selengkapnya tentang cara menetapkan dan menghapus ketersediaan tinggi untuk instance, lihat Mengonfigurasi instance yang ada untuk ketersediaan tinggi dan Menonaktifkan ketersediaan tinggi untuk instance.

  • ALLOWED_PROJECTS: daftar project ID atau nomor yang diizinkan, dipisahkan koma. Jika project tidak ada dalam daftar ini, Anda tidak dapat menggunakannya untuk membuat instance dan mengaktifkan Private Service Connect untuk project tersebut.

    Cloud SQL tidak menyalin project yang diizinkan untuk instance utama ke replika. Untuk setiap replika, Anda harus membuat endpoint Private Service Connect. Jika menggunakan proxy Cloud SQL Auth atau Cloud SQL Language Connectors, Anda harus membuat zona DNS dan data DNS untuk replika.

Metode HTTP dan URL:

POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances

Meminta isi JSON:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

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/REPLICA_INSTANCE_NAME",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2020-01-16T02:32:12.281Z",
  "operationType": "CREATE_REPLICA",
  "name": "OPERATION_ID",
  "targetId": "REPLICA_INSTANCE_NAME",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/operations/OPERATION_ID",
  "targetProject": "PROJECT_ID"
}

REST v1beta4

Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

  • PRIMARY_INSTANCE_NAME: nama instance utama.
  • PROJECT_ID: ID atau nomor project project Google Cloud yang berisi instance.
  • REPLICA_INSTANCE_NAME: nama instance replika.
  • REGION_NAME: nama region untuk instance replika.
  • MACHINE_TYPE: jenis mesin untuk instance.
  • AVAILABILITY_TYPE: mengaktifkan ketersediaan tinggi untuk instance. Untuk parameter ini, tentukan salah satu nilai berikut:
    • REGIONAL: mengaktifkan ketersediaan tinggi dan direkomendasikan untuk instance produksi. Instance akan difailover ke zona lain dalam region yang Anda pilih.
    • ZONAL: tidak menyediakan kemampuan failover. Ini adalah nilai defaultnya.

    Untuk informasi selengkapnya tentang cara menetapkan dan menghapus ketersediaan tinggi untuk instance, lihat Mengonfigurasi instance yang ada untuk ketersediaan tinggi dan Menonaktifkan ketersediaan tinggi untuk instance.

  • ALLOWED_PROJECTS: daftar project ID atau nomor yang diizinkan, dipisahkan koma. Jika project tidak ada dalam daftar ini, Anda tidak dapat menggunakannya untuk membuat instance dan mengaktifkan Private Service Connect untuk project tersebut.

    Cloud SQL tidak menyalin project yang diizinkan untuk instance utama ke replika. Untuk setiap replika, Anda harus membuat endpoint Private Service Connect. Jika menggunakan proxy Cloud SQL Auth atau Cloud SQL Language Connectors, Anda harus membuat zona DNS dan data DNS untuk replika.

Metode HTTP dan URL:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances

Meminta isi JSON:

{
  "masterInstanceName": "PRIMARY_INSTANCE_NAME",
  "project": "PROJECT_ID",
  "databaseVersion": "SQLSERVER_2019_STANDARD",
  "name": "REPLICA_INSTANCE_NAME",
  "region": "REGION_NAME",
  "kind": "sql#instance",
  "settings":
  {
    "tier": "MACHINE_TYPE",
    "availabilityType": "AVAILABILITY_TYPE",
    "settingsVersion": 0,
    "ipConfiguration": {
      "ipv4Enabled": false,
      "pscConfig": {
        "allowedConsumerProjects": [ALLOWED_PROJECTS],  
        "pscEnabled": true
      }
    },
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "ASYNCHRONOUS",
    "tier": "MACHINE_TYPE"
  }
}

Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

Anda akan melihat respons JSON seperti berikut:

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

Membuat replika beruntun

Bagian ini menjelaskan cara membuat dan mengelola replika beruntun.

Untuk mengetahui informasi tentang cara kerja replika beruntun, lihat Replika beruntun.

Sebelum memulai

Instance utama harus memiliki replika yang dapat disusun bertingkat. Bagian berikut memberikan langkah-langkah untuk membuat replika yang dapat disusun secara beruntun.

Langkah-langkah untuk membuat replika yang dapat disusun secara beruntun

Saat membuat replika yang dapat disusun bertingkat, Anda harus membuat replika di region yang berbeda dengan instance utama. Anda mengonfigurasi replika yang dapat disusun bertingkat dengan menetapkan flag cascadable-replica.

gcloud

Buat replika baru dengan menentukan instance utama menggunakan flag --master-instance-name dan menggunakan flag --cascadable-replica:

gcloud sql instances create REPLICA_NAME \
   --master-instance-name=PRIMARY_INSTANCE_NAME \
   --cascadable-replica \
   --region=REGION

Ganti kode berikut:

  • REPLICA_NAME: ID unik untuk replika yang Anda buat.
  • PRIMARY_INSTANCE_NAME: nama instance utama.
  • REGION: region tempat Anda ingin membuat replika baru. Region ini harus berbeda dengan region instance utama.

Anda harus membuat replika dalam jaringan VPC yang sama dengan instance utama. Anda juga dapat menentukan nama rentang IP yang dialokasikan di jaringan VPC tersebut. Jika tidak ada rentang yang ditentukan, replika akan dibuat dalam rentang acak.

Anda dapat menambahkan parameter untuk setelan instance lainnya. Misalnya,

  • Anda dapat menentukan ukuran tingkat mesin yang berbeda menggunakan parameter --tier.
  • Jika instance utama hanya memiliki alamat IP pribadi, tambahkan parameter --no-assign-ip ke perintah tersebut.

Untuk informasi selengkapnya tentang cara menambahkan parameter untuk setelan instance, lihat membuat instance gcloud sql.

Setelah replika yang dapat disusun bertingkat dibuat, Anda dapat membuat replika bertingkat.

curl

  1. Untuk membuat replika yang dapat disusun secara bertingkat di bawah instance utama, edit contoh kode JSON berikut, dan simpan ke file bernama request.json.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • PROJECT_ID: project ID.
    • DATABASE_VERSION: string enum versi database. Misalnya, SQLSERVER_2017_ENTERPRISE.
    • PRIMARY_INSTANCE_NAME: nama instance utama.
    • PRIMARY_INSTANCE_REGION: region instance utama.
    • REPLICA_REGION: region instance replika.
    • REPLICA_NAME: nama instance replika.
    • MACHINE_TYPE: string enum jenis mesin. Contoh, db-custom-2-3840.
    {
      "masterInstanceName": "PRIMARY_INSTANCE_NAME",
      "project": "PROJECT_ID",
      "databaseVersion": "DATABASE_VERSION"
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
          "settingsVersion": 0,
        }
        "replicaConfiguration":
        {
         "cascadableReplica": true
        }
    }
  2. Di bagian replicaConfiguration, pastikan kolom cascadadableReplica disetel ke true.
  3. Jalankan perintah berikut:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

Setelah replika yang dapat disusun bertingkat dibuat, Anda dapat membuat replika bertingkat.

Langkah-langkah untuk membuat replika beruntun

Saat membuat replika bertingkat, Anda harus membuat replika di region yang sama dengan replika yang dapat dibuat bertingkat. Anda mengonfigurasi replika bertingkat dengan memberikan nama replika yang dapat disusun bertingkat dalam parameter –master-instance-name.

Konsol

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Klik tab Replicas untuk replika yang akan bertindak sebagai induk untuk replika yang ingin Anda buat.
  3. Klik Buat replika.
  4. Di halaman Buat replikasi baca, perbarui ID instance, dan opsi konfigurasi lainnya, termasuk nama, region, dan zona.
  5. Klik Buat.

    Cloud SQL akan membuat replika. Anda akan dikembalikan ke halaman instance untuk replika induk.

  6. Ikuti langkah 4-6 untuk setiap replika bertingkat baru yang ingin Anda buat.

gcloud

  1. Buat replika baru dengan menentukan instance replika yang dapat disusun bertingkat di flag --master-instance-name:
  2. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=CASCADABLE_REPLICA_NAME \
    Ganti kode berikut:
    • REPLICA_NAME: ID unik untuk replika yang Anda buat
    • CASCADABLE_REPLICA_NAME: nama replika yang dapat disusun secara bertingkat
  3. Setelah membuat replika bertingkat, Anda dapat melihat bahwa perubahan yang dibuat pada instance utama direplikasi melalui semua replika dalam rantai replika bertingkat.

curl

  1. Untuk membuat replika bertingkat di bawah replika yang dapat disusun bertingkat, edit contoh kode JSON berikut, dan simpan ke file bernama request.json:
    {
      "masterInstanceName": "CASCADABLE_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  2. Jalankan perintah berikut:
    curl -X POST
    -H "Authorization: Bearer "$(gcloud auth print-access-token)
    -H "Content-Type: application/json; charset=utf-8"
    -d @request.json
    "https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances"

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 max_connections lebih besar dari atau sama dengan nilai pada tanda utama.

Jika flag max_connections sudah ditetapkan dengan tepat, periksa log di Cloud Logging untuk menemukan error yang sebenarnya.

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: set Service Networking service account as servicenetworking.serviceAgent role on consumer project, makan nonaktifkan dan aktifkan kembali Service Networking API. Tindakan ini akan membuat akun layanan yang diperlukan untuk melanjutkan prosesnya.

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 automatic storage increase.

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:
  • Kueri lambat pada replika. Temukan dan perbaiki.
  • Kueri seperti DELETE ... WHERE field < 50000000 menyebabkan keterlambatan replikasi dengan replikasi berbasis baris karena sejumlah besar update tertumpuk di replika.

Beberapa kemungkinan solusinya mencakup:

  • Edit instance untuk meningkatkan ukuran replika.
  • Kurangi beban pada database.
  • Kirim traffic baca ke replika baca.
  • Indeks tabel.
  • Iidentifikasi dan perbaiki kueri penulisan yang lambat.
  • Buat ulang replika.
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