Membuat replika baca

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

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

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. Jika instance mengaktifkan pencadangan dan logging biner, lanjutkan ke langkah berikutnya. Jika tidak, pilih Otomatiskan pencadangan dan pada Aktifkan logging biner, klik Lanjutkan, lalu klik Simpan dan mulai ulang untuk memulai ulang instance.

    Mengaktifkan logging biner akan menyebabkan instance dimulai ulang.

  5. Di bagian Customize your instance pada halaman, perbarui setelan untuk replika Anda. Mulailah dengan mengklik Show configuration options 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.

    Misalnya, untuk mengizinkan layanan Google Cloud lainnya, seperti BigQuery, untuk mengakses data di Cloud SQL dan membuat kueri terhadap data ini melalui koneksi internal, perluas grup Koneksi, lalu hapus centang pada kotak Public IP.

  6. Klik Buat replika.

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

gcloud

  1. Periksa status instance utama:
    gcloud sql instances describe PRIMARY_INSTANCE_NAME
          

    Jika properti databaseReplicationEnabled adalah true, instance tersebut adalah replika; Anda tidak dapat membuat sebuah replika dari sebuah replika.

  2. Jika properti enabled di bagian backupConfiguration adalah false, aktifkan pencadangan untuk instance utama sekarang:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --backup-start-time=>HH:MM
          
    Parameter backup-start-time ditetapkan dalam waktu 24 jam, dalam zona waktu UTC±00, dan menentukan waktu mulai periode pencadangan 4 jam. Pencadangan dapat dimulai kapan saja selama periode pencadangan.
  3. Jika properti binaryLogEnabled adalah false, aktifkan log biner pada instance utama:
    gcloud sql instances patch PRIMARY_INSTANCE_NAME \
    --enable-bin-log
    Mengaktifkan log biner akan menyebabkan instance dimulai ulang.
  4. 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. Jika Anda membuat replika dari instance utama untuk MySQL 8.4 dan yang lebih baru, dan edisi Cloud SQL untuk instance tersebut adalah Enterprise atau Enterprise Plus, Anda tidak perlu menentukan nilai untuk parameter ini. Replika mewarisi jenis mesin dari instance utama.

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

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

    Jika instance utama hanya memiliki alamat IP internal, dan Anda ingin mengizinkan layanan Google Cloud lainnya, seperti BigQuery, untuk mengakses data di Cloud SQL dan membuat kueri terhadap data ini melalui koneksi internal, lalu tambahkan parameter --enable-google-private-path ke perintah tersebut.

    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.

  • Logging biner didukung pada instance replika baca (khusus MySQL 5.7 dan yang lebih baru. Tidak didukung pada replika failover HA sebelumnya). Aktifkan logging biner pada replika dengan perintah gcloud CLI yang sama, menggunakan nama instance replika, bukan nama instance utama.
    gcloud sql instances patch REPLICA_INSTANCE_NAME \
    --enable-bin-log
        

    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.

    Pencadangan tidak dapat diaktifkan pada instance replika, tetapi logging biner dapat diaktifkan pada replika meskipun pencadangan dinonaktifkan, tidak seperti pencadangan yang utama.

    Periode retensi binlog pada instance replika secara otomatis ditetapkan ke satu hari, tidak seperti tujuh hari pada instance utama.

Terraform

Untuk membuat replika baca, gunakan resource Terraform.

resource "google_sql_database_instance" "read_replica" {
  name                 = "mysql-replica-instance-name"
  master_instance_name = google_sql_database_instance.primary.name
  region               = "europe-west4"
  database_version     = "MYSQL_8_0"

  replica_configuration {
    failover_target = false
  }

  settings {
    tier              = "db-n1-standard-2"
    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
}

Menerapkan perubahan

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Menghapus perubahan

Untuk menghapus perubahan Anda, lakukan langkah-langkah berikut:

  1. Untuk menonaktifkan perlindungan penghapusan, di file konfigurasi Terraform Anda, tetapkan argumen deletion_protection ke false.
    deletion_protection =  "false"
  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply
  1. Hapus resource yang sebelumnya diterapkan dengan konfigurasi Terraform Anda dengan menjalankan perintah berikut dan memasukkan yes pada prompt:

    terraform destroy

REST v1

  1. Mendapatkan konfigurasi cadangan saat ini

    Gunakan metode get dari resource instance untuk menampilkan versi database dan konfigurasi cadangan saat ini untuk resource utama.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • project-id: ID project
    • primary-instance-name: Nama instance utama

    Metode HTTP dan URL:

    GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/primary-instance-name

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

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

  2. Memverifikasi bahwa kolom replikasi telah ditetapkan

    Jika enabled ataupointInTimeEnabled adalah false, gunakan metode patch resource instance untuk mengaktifkan keduanya. Dalam permintaan tersebut, tentukan properti konfigurasi cadangan yang ingin diubah.

    Untuk mengaktifkan pencadangan, tetapkan enabled ke true dan startTime ke waktu dalam format HH:MM. Parameter startTime ditetapkan dalam waktu 24 jam, dalam zona waktu UTC±00, dan tetapkan waktu mulai periode pencadangan 4 jam. Pencadangan dapat dimulai kapan saja selama periode pencadangan.

    Untuk mengaktifkan pemulihan point-in-time, tetapkan pointInTimeEnabled ke true.

    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 replika utama atau baca yang Anda konfigurasikan untuk ketersediaan tinggi
    • START_TIME: waktu (dalam jam dan menit)

    Metode HTTP dan URL:

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

    Meminta isi JSON:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

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

  3. Membuat replika baca

    Gunakan metode insert dari resource instance untuk membuat replika baca. Properti databaseVersion harus sama dengan properti utama. Jika instance utama menggunakan alamat IP internal, Anda dapat menentukan allocatedIpRange dengan cara yang sama seperti saat membuat instance utama. Jika tidak ada rentang yang ditentukan, replika akan dibuat dalam rentang acak. Untuk replika baca lintas region, tentukan region selain region instance utama.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • project-id: ID project
    • database-version: String versi Enum (misalnya, MYSQL_8_0)
    • 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"
    • private-network: Jaringan yang diizinkan yang Anda tambahkan atau pilih untuk membuat koneksi pribadi.

    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": "database-version",
      "name": "replica-name",
      "region": "replica-region",
      "settings":
      {
        "tier": "machine-type",
        "settingsVersion": 0,
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

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

REST v1beta4

  1. Mendapatkan konfigurasi cadangan saat ini

    Gunakan metode get dari resource instance untuk menampilkan versi database dan konfigurasi cadangan saat ini untuk master.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • project-id: ID project
    • primary-instance-name: Nama instance utama

    Metode HTTP dan URL:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/primary-instance-name

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

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

  2. Memverifikasi bahwa kolom replikasi telah ditetapkan

    Jika enabled atau binaryLogEnabled adalah false pada instance utama, gunakan metode patch resource instance untuk mengaktifkan keduanya. Dalam permintaan tersebut, tentukan properti konfigurasi cadangan yang ingin diubah.

    Untuk mengaktifkan pencadangan, tetapkan enabled ke true dan startTime ke waktu dalam format HH:MM. Parameter startTime ditetapkan dalam waktu 24 jam, dalam zona waktu UTC±00, dan tetapkan waktu mulai periode pencadangan 4 jam. Pencadangan dapat dimulai kapan saja selama periode pencadangan.

    Untuk mengaktifkan pemulihan point-in-time, tetapkan binaryLogEnabled ke true pada instance utama.

    Logging biner didukung pada instance replika baca (khusus MySQL 5.7 dan yang lebih baru). Aktifkan logging biner pada replika dengan API yang sama, menggunakan ID instance replika, bukan ID instance utama.

    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.

    Pencadangan tidak dapat diaktifkan pada instance replika, tetapi logging biner dapat diaktifkan pada replika meskipun pencadangan dinonaktifkan, tidak seperti pencadangan yang utama.

    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 replika utama atau baca yang Anda konfigurasikan untuk ketersediaan tinggi
    • START_TIME: waktu (dalam jam dan menit)

    Metode HTTP dan URL:

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

    Meminta isi JSON:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "START_TIME",
          "enabled": true,
          "binaryLogEnabled": true
        }
      }
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

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

  3. Membuat replika baca

    Gunakan metode insert dari resource instance untuk membuat replika baca. Properti databaseVersion harus sama dengan properti utama. Jika instance utama menggunakan alamat IP internal, Anda dapat menentukan allocatedIpRange dengan cara yang sama seperti saat membuat instance utama. Untuk replika baca lintas region, tentukan region selain region instance utama.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • project-id: ID project
    • database-version: String versi Enum (misalnya, MYSQL_8_0)
    • 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"
    • private-network: Jaringan yang diizinkan yang Anda tambahkan atau pilih untuk membuat koneksi pribadi.

    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,
        
        "ipConfiguration": {
        object (IpConfiguration)
      },
      {
      "ipv4Enabled": false,
      "privateNetwork": private-network,
      "requireSsl": boolean,
      "authorizedNetworks": [
        {
          object (AclEntry)
        }
      ],
      "allocatedIpRange": string
        }
        
      }
    }
    

    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 dialihkan 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 dialihkan 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": "MYSQL_8_0",
  "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 dialihkan 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": "MYSQL_8_0",
  "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"
}

Mengonfigurasi replika baca untuk autentikasi database IAM

Replika baca tidak memiliki flag cloudsql_iam_authentication yang diaktifkan secara otomatis saat diaktifkan di instance utama.

Guna mengonfigurasi replika baca untuk autentikasi database IAM:

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

    Buka Instance Cloud SQL

  2. Untuk membuka halaman Overview instance, klik nama instance.
  3. Di kartu Konfigurasi, cari flag cloudsql_iam_authentication. Jika flag tidak ada dalam daftar, Anda tidak perlu mengaktifkan flag tersebut dalam replika baca. Jika flag tersebut ada dalam daftar, Anda harus mengaktifkan flag tersebut pada replika baca. Jika Anda perlu mengaktifkan flag pada replika baca, lanjutkan ke langkah berikutnya.
  4. Pilih Replicas dari menu navigasi SQL.
  5. Klik nama replika yang ingin Anda edit.
  6. Klik Edit.
  7. Di bagian Configuration options, luaskan Flags.
  8. Pilih + Tambahkan item.
  9. Masukkan cloudsql_iam_authentication untuk nama flag. Pastikan bahwa On dipilih untuk flag ini.
  10. Klik Simpan.

Membuat replika beruntun

Bagian ini menjelaskan cara membuat dan mengelola replika beruntun.

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

Langkah-langkah untuk membuat replika beruntun

Konsol

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

    Buka Instance Cloud SQL

  2. Untuk MySQL 5.7 atau yang lebih baru, aktifkan replikasi.
  3. Klik tab Replika untuk replika yang akan bertindak sebagai induk untuk replika yang ingin Anda buat.
  4. Klik Buat replika.
  5. Di halaman Buat replikasi baca, perbarui ID instance, dan opsi konfigurasi lainnya, termasuk nama, region, dan zona.
  6. Klik Buat.

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

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

gcloud

  1. Jika Anda menggunakan MySQL versi 5.7 atau yang lebih baru, aktifkan binlog untuk versi utama replika baru:
    gcloud sql instances patch --enable-bin-log PARENT_REPLICA_NAME
    Ganti PARENT_REPLICA_NAME dengan nama replika induk.
  2. Buat replika baru dengan menentukan replika utama Anda sebagai instance utama menggunakan tanda --master-instance-name:
  3. gcloud sql instances create REPLICA_NAME \
          --master-instance-name=PARENT_REPLICA_NAME \
    Ganti kode berikut:
    • REPLICA_NAME: ID unik untuk replika yang Anda buat
    • PARENT_REPLICA_NAME: nama replika induk
  4. Setelah membuat replika bertingkat, Anda dapat melihat bahwa perubahan yang dibuat pada instance utama direplikasi melalui semua replika dalam rantai replika bertingkat.

curl

  1. Jika Anda menggunakan MySQL versi 5.7 atau yang lebih baru, aktifkan logging biner:

    Untuk mengaktifkan logging biner, simpan JSON berikut dalam file dengan nama request.JSON, lalu panggil perintah curl untuk mengaktifkan logging biner.
    {
      "settings":
      {
        "backupConfiguration":
        {
          "enabled": false,
          "binaryLogEnabled": true
        }
      }
    }
  2. Untuk membuat replika di bawah replika induk, edit contoh kode JSON berikut, dan simpan ke file dengan nama request.json:
    {
      "masterInstanceName": "PARENT_REPLICA_NAME",
      "project": "PROJECT_ID",
      "name": "REPLICA_NAME",
      "region": "REPLICA_REGION",
      "settings":
        {
          "tier": "MACHINE_TYPE",
        }
    }
  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"

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.
  • Semua tabel harus memiliki kunci utama/unik. Setiap update pada tabel tersebut tanpa kunci utama/unik akan menyebabkan pemindaian tabel penuh pada replika tersebut.
  • Kueri seperti DELETE ... WHERE field < 50000000 menyebabkan kelambatan replikasi dengan replikasi berbasis baris karena sejumlah besar update tertumpuk di replika.

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, waktu mulai transaksi dicatat dalam log biner. Saat replika 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:

  • Memecah transaksi menjadi beberapa transaksi kecil
  • Memotong satu kueri tulis besar menjadi beberapa batch yang lebih kecil
  • Cobalah untuk memisahkan kueri SELECT yang panjang dari transaksi yang dicampur dengan DML
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:

  1. Ubah tanda binlog_transaction_dependency_tracking dan transaction_write_set_extraction:
    • binlog_transaction_dependency_tracking=COMMIT_ORDER
    • transaction_write_set_extraction=OFF
  2. Tambahkan tanda slave_pending_jobs_size_max:

    slave_pending_jobs_size_max=33554432

  3. Ubah tanda transaction_write_set_extraction:

    transaction_write_set_extraction=XXHASH64

  4. Ubah tanda binlog_transaction_dependency_tracking:

    binlog_transaction_dependency_tracking=WRITESET

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