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
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Temukan instance tempat Anda ingin membuat replika, lalu buka menu
more actions
di samping listingan. - Pilih Buat replika baca.
Jika Anda tidak melihat pilihan tersebut, berarti instance adalah replika; Anda tidak dapat membuat replika dari sebuah replika.
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.
- 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=MASTER_INSTANCE_NAME
Anda dapat menentukan ukuran tingkat yang berbeda menggunakan parameter
--tier
, jika diperlukan. Selain itu, jika Anda membuat replika dari instance utama, dan edisi Cloud SQL untuk instance tersebut adalah Enterprise atau Enterprise Plus, versi 16 dan yang lebih baru, Anda tidak perlu menentukan nilai untuk parameter ini. Replika mewarisi jenis mesin dari instance utama.
Anda dapat menentukan region yang berbeda menggunakan parameter --region
.
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
pada
jaringan VPC tersebut. Jika tidak ada rentang yang ditentukan, replika
akan dibuat dalam rentang acak.
Terraform
Untuk membuat replika baca, gunakan resource Terraform.
REST v1
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, POSTGRES_12)
- 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
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, POSTGRES_12)
- 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 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": "POSTGRES_13", "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": "POSTGRES_13", "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
Jika Anda mengaktifkan flagcloudsql.iam_authentication
di instance utama,
Cloud SQL untuk PostgreSQL akan otomatis mengaktifkannya di replika baca. Namun, jika Anda tidak
mengaktifkan tanda ini pada instance utama, Cloud SQL untuk PostgreSQL tidak akan mengaktifkannya pada replika
baca. Anda tidak dapat menggunakan replika untuk autentikasi database IAM.
Guna mengonfigurasi replika baca untuk autentikasi database IAM:
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Untuk membuka halaman Overview instance, klik nama instance.
- 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 tanda pada replika baca, lanjutkan ke langkah berikutnya. - Pilih Replicas dari menu navigasi SQL.
- Klik nama replika yang ingin Anda edit.
- Klik Edit.
- Di bagian Configuration options, luaskan Flags.
- Pilih + Tambahkan item.
- Masukkan
cloudsql.iam_authentication
untuk nama flag. Pastikan bahwa On dipilih untuk flag ini. - 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
-
Di konsol Google Cloud, buka halaman Instance Cloud SQL.
- Klik tab Replicas untuk replika yang akan bertindak sebagai induk untuk replika yang ingin Anda buat.
- Klik Buat replika.
- Di halaman Buat replikasi baca, perbarui ID instance, dan opsi konfigurasi lainnya, termasuk nama, region, dan zona.
- Klik Buat.
Cloud SQL akan membuat replika. Anda akan dikembalikan ke halaman instance untuk replika induk.
- Ikuti langkah 4-6 untuk setiap replika bertingkat baru yang ingin Anda buat.
gcloud
- Buat replika baru dengan menentukan replika utama Anda sebagai instance utama menggunakan tanda
--master-instance-name
: - REPLICA_NAME: ID unik untuk replika yang Anda buat
- PARENT_REPLICA_NAME: nama replika induk
- Setelah membuat replika bertingkat, Anda dapat melihat bahwa perubahan yang dibuat pada instance utama direplikasi melalui semua replika dalam rantai replika bertingkat.
gcloud sql instances create REPLICA_NAME \ --master-instance-name=PARENT_REPLICA_NAME \
curl
- 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", } }
- 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 Jika flag |
Tidak dapat membuat replika baca - error tidak diketahui. | Mungkin ada error yang lebih spesifik di file log.
Periksa log di
Cloud Logging untuk menemukan error yang sebenarnya.
Jika error-nya adalah: |
Disk penuh. | Ukuran disk instance utama dapat penuh selama pembuatan replika. Edit instance utama untuk mengupgrade ke ukuran disk yang lebih besar. |
Kapasitas disk meningkat secara signifikan. | Slot yang tidak digunakan secara aktif untuk melacak data menyebabkan PostgreSQL
menahan segmen WAL tanpa batas waktu sehingga kapasitas disk bertambah tanpa batas. Jika Anda menggunakan
fitur replika dan decoding logis di Cloud SQL, slot replika akan
dibuat dan dihapus secara otomatis. Slot replika yang tidak digunakan dapat dideteksi dengan membuat kueri
pg_replication_slots
tampilan sistem dan pemfilteran di kolom active . Slot
yang tidak digunakan dapat dihapus untuk menghapus segmen WAL menggunakan perintah
pg_drop_replication_slot .
|
Instance replika menggunakan terlalu banyak memori. | Replika menggunakan memori sementara untuk meng-cache operasi baca yang
sering diminta, yang dapat menyebabkannya menggunakan lebih banyak memori daripada instance utama.
Mulai ulang instance replika untuk mengklaim kembali ruang memori sementara. |
Replikasi dihentikan. | Batas penyimpanan maksimum tercapai dan peningkatan penyimpanan otomatis
tidak diaktifkan.
Edit instance untuk mengaktifkan |
Jeda replikasi selalu tinggi. | Beban tulis terlalu tinggi untuk ditangani replika. Kelambatan replikasi
terjadi saat thread SQL pada replika tidak dapat mengikuti
thread IO. Beberapa jenis kueri atau beban kerja dapat menyebabkan kelambatan replikasi tinggi yang bersifat sementara atau
permanen untuk skema tertentu. Beberapa penyebab
umum kelambatan replikasi adalah:
Beberapa kemungkinan solusinya mencakup:
|
Terjadi error saat membangun ulang indeks di PostgreSQL 9.6. | Anda mendapatkan pemberitahuan terjadinya error dari PostgreSQL yang menginformasikan bahwa Anda perlu membangun ulang
indeks tertentu. Tindakan ini hanya dapat dilakukan pada instance utama. Jika Anda
membuat instance replika baru, maka error yang sama akan segera terjadi lagi.
Indeks hash
tidak diterapkan ke replika pada versi PostgreSQL di bawah 10.
Jika Anda harus menggunakan indeks hash, upgrade ke PostgreSQL 10+. Atau, jika Anda juga ingin menggunakan replika, jangan gunakan indeks hash di PostgreSQL 9.6. |
Kueri pada instance utama selalu berjalan. | Setelah membuat replika, kueri SELECT * from pg_stat_activity where state = 'active' and pid = XXXX and username = 'cloudsqlreplica' diharapkan dapat berjalan secara terus-menerus pada instance utama Anda
|
Pembuatan replika gagal karena waktu tunggu habis. | Transaksi tanpa komitmen yang berjalan lama pada instance utama dapat menyebabkan
pembuatan replika baca gagal.
Buat ulang replika setelah menghentikan semua kueri yang berjalan. |
Jika instance utama dan replika memiliki ukuran vCPU yang berbeda, mungkin ada masalah performa kueri karena pengoptimal kueri memperhitungkan ukuran vCPU. |
Untuk mengatasi masalah ini, selesaikan beberapa langkah berikut:
Jika ini adalah kueri tertentu, ubah kueri. Misalnya, Anda dapat mengubah urutan join untuk melihat apakah Anda mendapatkan performa yang lebih baik. |
Langkah selanjutnya
- Pelajari cara mengelola replika.
- Pelajari replika lintas-region.