Memecahkan masalah kueri kumpulan operasi baca

Halaman ini menjelaskan teknik untuk menyelidiki dan men-debug kueri yang dikirim AlloyDB untuk PostgreSQL ke instance kumpulan baca:

  • Melihat daftar mendetail node penyusun kumpulan baca, termasuk alamat IP-nya.
  • Menghubungkan langsung ke node, untuk tujuan proses debug.
  • Memeriksa log AlloyDB untuk menentukan node tertentu yang menangani kueri yang dikirim ke kumpulan baca.
  • Membuat kueri log untuk semua aktivitas terbaru dari node kumpulan operasi baca tertentu.
  • Melihat metrik Google Cloud yang terkait dengan node kumpulan operasi baca.

Jika digunakan bersama, teknik ini memberi Anda akses diagnostik dan proses debug ke kumpulan operasi baca. Misalnya, jika salah satu kumpulan operasi baca cluster Anda menggunakan jumlah CPU yang tidak biasa saat memproses kueri yang berjalan lama, teknik ini memungkinkan Anda menentukan node mana yang menangani kueri tersebut, lalu langsung terhubung ke node tersebut untuk memeriksa atau menghentikan kueri lebih lanjut.

Mencantumkan detail node kumpulan operasi baca

Dalam penggunaan AlloyDB normal, Anda tidak perlu mengetahui identitas atau alamat node yang membentuk kumpulan baca. Namun, jika perlu, Anda dapat melihat daftar node instance kumpulan baca. Setiap node yang tercantum menyertakan informasi berikut yang berguna untuk diagnostik dan proses debug berikutnya:

Untuk melihat string ID internal dan alamat IP node kumpulan operasi baca, ikuti petunjuk khusus gcloud di Melihat detail instance, tetapi tambahkan argumen command line --view=FULL tambahan:

gcloud

gcloud alloydb instances describe READ_POOL_ID \
 --region=REGION_ID \
 --cluster=CLUSTER_ID \
 --project=PROJECT_ID \
 --view=FULL

Ganti kode berikut:

  • READ_POOL_ID: ID read pool.
  • REGION_ID: ID region instance.
  • CLUSTER_ID: ID cluster instance.
  • PROJECT_ID: ID project instance.

Output-nya mencakup bagian berlabel nodes, yang terlihat seperti ini:

nodes:
- id: READ_POOL_INSTANCE_ID-edd4f6ed-hcfh
  ip: 10.90.80.57
  state: HEALTHY
  zoneId: us-central1-b
- id: READ_POOL_INSTANCE_ID-edd4f6ed-ldbm
  ip: 10.90.80.56
  state: HEALTHY
  zoneId: us-central1-c

Kolom id dan ip untuk setiap entri sangat relevan dengan teknik lain yang dijelaskan di halaman ini:

  • Kolom ip menampilkan alamat IP node dalam VPC cluster.

  • Kolom id berisi string ID Google Cloud lengkap node. Hanya empat karakter terakhir dari string ini yang muncul dalam entri yang dicatat untuk node.

    Misalnya, untuk menemukan entri log yang melibatkan node pertama dari dua node dalam output contoh sebelumnya, buat kueri log menggunakan string ID hcfh.

Menghubungkan langsung ke node

Setelah mengetahui alamat IP node, Anda dapat terhubung langsung ke server PostgreSQL-nya. Misalnya, untuk menggunakan psql guna terhubung ke VM di VPC cluster, ikuti petunjuk di Menjalankan klien psql. Saat melakukannya, berikan alamat IP node, bukan instance kumpulan bacanya:

psql -h NODE_IP_ADDRESS -U USERNAME

Menemukan aktivitas node dalam log

AlloyDB menyertakan ID node dalam entri log tentang kueri yang ditangani oleh kumpulan baca. Secara umum, Anda dapat menggunakan ID yang ditemukan ini dengan dua cara:

  • Tentukan IP node tersebut agar Anda dapat terhubung ke node tersebut.
  • Lakukan kueri log lebih lanjut untuk mempelajari aktivitas terbaru node lebih lanjut.

Menentukan node yang menangani kueri yang diketahui

Jika Anda mengetahui bahwa kumpulan operasi baca tertentu memproses kueri yang berjalan lama, Log Explorer dapat membantu Anda menentukan ID node tertentu yang menangani kueri tersebut.

Perhatikan bahwa teknik ini hanya berfungsi pada instance kumpulan baca yang telah mengaktifkan ekstensi pgAudit.

  1. Buka Logs Explorer:

    Buka Logs Explorer

  2. Di query builder, tambahkan resource.labels.instance_id="READ_POOL_ID" ke kolom editor kueri, dengan mengganti READ_POOL_ID dengan nama instance kumpulan operasi baca Anda.

  3. Tambahkan pernyataan SQL yang Anda selidiki, secara keseluruhan atau sebagian, ke kolom editor kueri. Misalnya: select id from MyTable. Input ini tidak peka huruf besar/kecil.

  4. Klik Run query.

  5. Gunakan kontrol Log Explorer untuk menyesuaikan dan menjalankan ulang kueri sesuai kebutuhan untuk memfilter hasil ke yang paling relevan.

  6. Klik entri log dalam daftar hasil untuk meluaskan tampilannya.

  7. Klik kolom labels di tampilan yang diperluas untuk entri.

  8. Perhatikan nilai NODE_ID di bagian labels.

Hasilnya adalah ID empat karakter dari node yang menangani kueri.

Menghubungkan ke node yang disebutkan dalam entri log

Jika Anda ingin terhubung langsung ke server PostgreSQL node tertentu berdasarkan aktivitas yang dicatat dalam log, ikuti langkah-langkah berikut:

  1. Perhatikan string ID empat karakter node yang dicatat. Anda dapat menemukan ID ini di kolom NODE_ID entri log.

  2. Cantumkan node untuk kumpulan operasi baca.

  3. Dalam daftar tersebut, temukan node dengan string ID yang diakhiri dengan empat karakter yang Anda catat di langkah pertama. Mungkin tidak ada node yang cocok dengan node yang tercantum.

  4. Jika Anda menemukan node yang cocok, gunakan alamat IP yang cocok untuk terhubung ke server PostgreSQL node tersebut.

    Atau, jika tidak ada node kumpulan baca yang tercantum di langkah sebelumnya yang memiliki ID yang cocok dengan node yang dicatat dalam log, kumpulan baca telah menonaktifkan node tersebut dalam waktu yang telah berlalu sejak entri log asli. Ini adalah perilaku normal untuk kumpulan operasi baca AlloyDB, seperti yang dijelaskan dalam Catatan tentang ephemeralitas node. Dalam hal ini, Anda tidak dapat membuat koneksi langsung ke node tersebut.

Setelah terhubung ke server PostgreSQL node, Anda dapat menggunakan teknik pemantauan PostgreSQL standar, seperti pg_stat_activity, untuk menyelidiki lebih lanjut proses node saat ini, dan menyesuaikannya sesuai kebutuhan.

Melihat entri log lainnya tentang node

Untuk melihat aktivitas terbaru yang dicatat ke dalam log tentang node dengan ID tertentu:

  1. Buka Logs Explorer:

    Buka Logs Explorer

  2. Tambahkan labels.NODE_ID=NODE_ID ke Query Builder Logs Explorer, ganti NODE_ID dengan string ID empat karakter node.

  3. Klik Jalankan Kueri untuk melihat semua aktivitas dari node tersebut dalam periode waktu yang dipilih, atau sesuaikan kueri untuk memfilternya lebih lanjut.

  4. Ulangi langkah sebelumnya sesuai kebutuhan untuk mempersempit penelusuran.

Memantau metrik node

Anda dapat melihat metrik yang terkait dengan setiap node dari dasbor Insight sistem AlloyDB. Untuk informasi selengkapnya tentang metrik node yang tersedia, lihat Referensi metrik Analisis sistem.

Untuk mempelajari ID node yang terkait dengan instance read pool tertentu, lihat Mencantumkan detail node read pool.

Untuk dokumentasi referensi lengkap tentang metrik ini dan metrik AlloyDB lainnya, lihat alloydb di "metrikGoogle Cloud ".

Catatan tentang sifat sementara node

Meskipun Anda dapat terhubung dengan aman ke node untuk tujuan penyelidikan sementara atau proses debug, aplikasi yang menggunakan kumpulan baca harus selalu terhubung ke kumpulan tersebut di tingkat instance, menggunakan alamat IP yang ditampilkan cluster dalam daftar instance-nya.

AlloyDB memperlakukan node kumpulan bacanya sebagai resource sementara yang dapat dipertukarkan. Layanan ini mengubah daftar node kumpulan baca sesering yang diperlukan agar instance kumpulan baca tersebut tetap memiliki beban yang seimbang dan responsif. Aplikasi yang terhubung langsung ke node kumpulan baca, bukan ke instance kumpulan baca, berisiko terputus secara tiba-tiba dari database Anda setiap kali AlloyDB memperbarui daftar node instance.

Selalu izinkan aplikasi Anda terhubung ke kumpulan baca di tingkat instance, dan izinkan AlloyDB melakukan tugas merutekan kueri Anda ke node yang tepat secara efisien.

Langkah selanjutnya