Halaman ini menjelaskan cara menyiapkan dan menggunakan impor terkelola untuk data saat mereplikasi dari server eksternal ke Cloud SQL.
Anda harus menyelesaikan semua langkah di halaman ini. Setelah selesai, Anda dapat mengelola dan memantau instance representasi sumber dengan cara yang sama seperti yang Anda lakukan pada instance Cloud SQL lainnya.
Sebelum memulai
Sebelum Anda memulai, selesaikan langkah-langkah berikut:
Verifikasi setelan replikasi Anda
Setelah penyiapan selesai, pastikan replika Cloud SQL dapat direplikasi dari server eksternal.
Setelan sinkronisasi eksternal berikut harus benar.
- Konektivitas antara replika Cloud SQL dan server eksternal
- Hak istimewa pengguna replikasi
- Kompatibilitas versi
- Replika Cloud SQL belum direplikasi
Untuk memverifikasi setelan ini, buka terminal Cloud Shell dan masukkan perintah berikut:
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/verifyExternalSyncSettings
contoh
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
"syncParallelLevel": "optimal"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/myproject/instances/myreplica/verifyExternalSyncSettings
Panggilan ini menampilkan daftar jenis sql#externalSyncSettingErrorList
.
Jika daftar kosong, tidak ada error. Respons tanpa error akan muncul seperti ini:
{ "kind": "sql#externalSyncSettingErrorList" }
Properti | Deskripsi |
---|---|
SYNC_MODE | Memastikan Anda dapat terus menyinkronkan replika Cloud SQL dan server eksternal
setelah replikasi disiapkan. Mode sinkronisasi mencakup EXTERNAL_SYNC_MODE_UNSPECIFIED , ONLINE , dan OFFLINE . |
SYNC_PARALLEL_LEVEL | Verifikasi setelan yang mengontrol kecepatan transfer data dari tabel database. Nilai berikut ini tersedia:
Catatan: Nilai default untuk parameter ini adalah |
PROJECT_ID | ID project Google Cloud Anda. |
REPLICA_INSTANCE_ID | ID replika Cloud SQL Anda. |
Memulai replikasi pada server eksternal
Setelah memverifikasi bahwa Anda dapat mereplikasi dari server eksternal, mulai replikasi. Kecepatan untuk melakukan replikasi untuk proses impor awal adalah hingga 500 GB per jam. Namun, kecepatan ini dapat bervariasi berdasarkan tingkat mesin, ukuran disk data, throughput jaringan, dan sifat database Anda.
curl
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "SYNC_MODE",
"skipVerification": "SKIP_VERIFICATION",
"syncParallelLevel": "SYNC_PARALLEL_LEVEL"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/REPLICA_INSTANCE_ID/startExternalSync
contoh
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{
"syncMode": "online",
"syncParallelLevel": "optimal"
}' \
-X POST \
https://sqladmin.googleapis.com/sql/v1beta4/projects/MyProject/instances/replica-instance/startExternalSync
Properti | Deskripsi |
---|---|
SYNC_MODE | Verifikasi bahwa Anda dapat terus menyinkronkan replika Cloud SQL dan server eksternal setelah replikasi disiapkan. |
SKIP_VERIFICATION | Apakah Anda akan melewati langkah verifikasi bawaan sebelum menyinkronkan data. Parameter ini hanya direkomendasikan jika Anda telah memverifikasi setelan replikasi. |
SYNC_PARALLEL_LEVEL | Berikan setelan yang mengontrol kecepatan transfer data dari tabel database. Nilai berikut ini tersedia:
Catatan: Nilai default untuk parameter ini adalah |
PROJECT_ID | ID project Google Cloud Anda. |
REPLICA_INSTANCE_ID | ID replika Cloud SQL Anda. |
Memantau migrasi
Setelah memulai replikasi dari server eksternal, Anda perlu memantau replikasi. Untuk mempelajari lebih lanjut, lihat Memantau replikasi. Setelah itu, Anda dapat menyelesaikan migrasi.
Memecahkan masalah
Pertimbangkan opsi pemecahan masalah berikut:
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. |
Meninjau log replikasi Anda
Saat Anda memverifikasi setelan replikasi, log akan dihasilkan.
Anda dapat melihat log ini dengan mengikuti langkah-langkah berikut:
Buka Logs Viewer di konsol Google Cloud.
- Pilih replika Cloud SQL dari dropdown Instance.
- Pilih file log
replication-setup.log
.
Jika replika Cloud SQL tidak dapat terhubung ke server eksternal, konfirmasi hal berikut:
- Setiap firewall di server eksternal akan dikonfigurasi untuk mengizinkan koneksi dari alamat IP keluar replika Cloud SQL.
- Konfigurasi SSL/TLS Anda sudah benar.
- Pengguna, host, dan sandi replikasi Anda sudah benar.
Langkah berikutnya
- Pelajari cara mengupdate instance.
- Pelajari cara mengelola replika.
- Pelajari cara memantau instance.
- Pelajari cara mempromosikan replika Cloud SQL.