Mendiagnosis masalah

Halaman ini mengandung daftar masalah paling sering ditemukan saat menggunakan instance Cloud SQL dan langkah-langkah yang dapat dilakukan untuk mengatasi masalah tersebut. Lihat juga Masalah umum, Pemecahan masalah, dan Halaman pendukung.

Melihat log

Untuk informasi lebih lanjut terkait operasi terbaru, Anda dapat melihat Log operasi instance Cloud SQL atau Log error MySQL.

Instance tidak responsif

Jika instance berhenti merespons koneksi atau performanya menurun, pastikan instance tersebut sesuai dengan Panduan Operasional. Jika tidak sesuai dengan panduan ini, maka instance tersebut tidak termasuk dalam SLA Cloud SQL.

Masalah koneksi

Lihat halamanMen-debug masalah koneksi atau bagian Konektivitas di halaman pemecahan masalah untuk menemukan bantuan terkait masalah koneksi.

Masalah instance

Cadangan

Untuk performa terbaik bagi pencadangan, pertahankan jumlah tabel yang wajar.

Untuk masalah pencadangan lainnya, lihat bagian Cadangan pada halaman pemecahan masalah.

Mengimpor dan mengekspor

Impor dan ekspor pada Cloud SQL sama seperti penggunaan utilitas mysqldump, namun berbeda dengan fitur impor/ekspor Cloud SQL, Anda mentransfer data menggunakan bucket Cloud Storage.

Proses impor ke Cloud SQL dan ekspor dan Cloud SQL dapat memakan waktu lama hingga selesai, tergantung pada ukuran data yang diproses. Hal ini dapat menimbulkan dampak berikut:

  • Operasi instance Cloud SQL yang sudah berjalan lama tidak dapat dihentikan.
  • Satu operasi impor atau ekspor hanya dapat dijalankan dalam satu waktu untuk setiap instance, dan impor atau ekspor yang berjalan lama akan memblokir operasi lain seperti pencadangan otomatis harian. Ekspor serverless memungkinkan untuk menjalankan operasi lain, termasuk mengedit instance, mengimpor, failover, dan berhenti memblokir cadangan otomatis harian.

Durasi waktu yang diperlukan untuk menyelesaikan setiap operasi dapat dikurangi menggunakan fungsi impor atau ekspor Cloud SQL dengan batch data lebih kecil.

Ekspor dapat dilakukan dari replika baca atau menggunakan ekspor serverless untuk meminimalisir dampak terhadap performa database dan memungkinkan operasi lain berjalan pada instance saat ekspor berlangsung.

Hal lain yang perlu diingat saat mengimpor:

  • Jika impor bermasalah, mungkin saja karena terjadi error kehabisan memori (OOM). Jika benar, cobalah menggunakan perintah MySQL secara langsung untuk menambah parameter --extended-insert=FALSE --complete-insert. Parameter tersebut mengurangi kecepatan impor dan jumlah memori yang dibutuhkan.

Untuk masalah impor dan ekspor lainnya, lihat bagian Impor dan ekspor di halaman pemecahan masalah.

Kapasitas disk

Jika instance mencapai jumlah penyimpanan maksimum yang diizinkan, penulisan ke database akan gagal. Jika data dihapus, sebagai contoh, dengan menghapus tabel, ruang yang dibebaskan tidak akan terlihat dalam laporan Penyimpanan Terpakai instance tersebut. Lihat FAQ Bagaimana cara mengklaim kembali ruang dari tabel yang dihapus? untuk penjelasan mengenai perilaku tersebut.

Mencapai batas penyimpanan maksimum juga dapat menyebabkan instance macet saat memulai ulang.

Menghindari kerusakan data

Menghindari kolom yang dihasilkan

Terkait masalah pada MySQL, menggunakan kolom yang dihasilkan dapat menimbulkan kerusakan data. Untuk informasi lebih lanjut, lihat MySQL bug #82736.

Penonaktifan yang rapi

Saat Cloud SQL mematikan instance (contohnya, untuk pemeliharaan), tidak ada koneksi baru dikirim ke instance tersebut dan koneksi yang masih ada pun diakhiri. Durasi waktu saat mysqld harus dimatikan dibatasi menjadi 1 menit. Jika penonaktifan tidak selesai hingga waktu yang ditentukan, proses mysqld akan terpaksa dihentikan. Hal ini dapat membuat penulisan disk dibatalkan di tengah jalan.

Mesin database

InnoDB adalah mesin penyimpanan satu-satunya yang mendukung untuk instance MySQL karena lebih tahan terhadap kerusakan tabel daripada mesin penyimpanan MySQL lainnya seperti MyISAM.

Tabel database Cloud SQL dibuat menggunakan mesin penyimpanan InnoDB secara default. Jika sintaksis CREATE TABLE menyertakan opsi ENGINE yang menentukan mesin penyimpanan selain InnoDB, contohnya ENGINE = MyISAM, tabel tersebut tidak akan dibuat dan pesan error akan muncul seperti contoh berikut:

ERROR 3161 (HY000): Storage engine MyISAM is disabled (Table creation is disallowed).

Anda dapat menghindari error ini dengan menghapus opsi ENGINE = MyISAM dari perintah CREATE TABLE. Apabila menggunakan cara tersebut, tabel akan dibuat menggunakan mesin penyimpanan InnoDB.

Perubahan pada tabel sistem

Tabel sistem MySQL menggunakan mesin penyimpanan MyISAM, termasuk semua tabel dalam database mysql, contohnya mysql.user dan mysql.db. Tabel tabel ini rentan terhadap penonaktifan yang berantakan; jalankan perintah FLUSH CHANGES setelah membuat perubahan pada tabel tersebut. Jika terjadi kerusakan MyISAM, CHECK TABLE dan REPAIR TABLE dapat mengembalikan data ke kondisi baik (namun tidak menyimpan data).

ID Transaksi Global (GTID)

Semua instance MySQL sudah otomatis mengaktifkan GTID. Mengaktifkan GTID akan melindungi data dari ancaman kehilangan selama pembuatan replika dan failover, serta membuat replika menjadi lebih kuat. Namun GTID memiliki beberapa batasan yang dikenakan oleh MySQL, seperti didokumentasikan dalam Panduan MySQL. Operasi yang tidak aman secara transaksional berikut tidak dapat digunakan dengan server MySQL yang mendukung GTID:

  • Pernyataan CREATE TABLE ... SELECT;
  • Pernyataan CREATE TEMPORARY TABLE di dalam transaksi;
  • Transaksi atau pernyataan yang memengaruhi kedua tabel transaksional dan non-transaksional.

Jika menggunakan transaksi yang tidak aman secara transaksional, Anda akan menemukan pesan error seperti contoh berikut:

 Exception: SQLSTATE[HY000]: General error: 1786
 CREATE TABLE ... SELECT is forbidden when @@GLOBAL.ENFORCE_GTID_CONSISTENCY = 1.

Menggunakan pemicu dan fungsi yang tersimpan

Jika instance mengaktifkan logging biner dan Anda perlu menggunakan pemicu atau fungsi tersimpan, pastikan instance memiliki flag log_bin_trust_function_creators yang disetel on.

Status ditangguhkan

Terdapat berbagai alasan mengapa Cloud SQL dapat menangguhkan instance, seperti:

  • Masalah penagihan

    Contohnya jika kartu kredit untuk akun penagihan project telah lewat dari masa berlaku, instance dapat ditangguhkan. Anda dapat memeriksa informasi penagihan untuk project dengan membuka halaman penagihan konsol Google Cloud, memilih project dan melihat informasi akun penagihan yang digunakan untuk project tersebut. Setelah Anda menyelesaikan masalah penagihan, instance akan dapat kembali dijalankan dalam waktu beberapa jam.

  • Masalah utama terkait Cloud Key Management Service

    Misalnya, jika versi kunci Cloud KMS yang digunakan untuk mengenkripsi data pengguna di instance Cloud SQL tidak ada, akses ke kunci akan dicabut, atau jika kunci dinonaktifkan atau dihapus. Untuk informasi selengkapnya, lihat Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK).

  • Masalah hukum

    Sebagai contoh, pelanggaran terhadap Kebijakan Penggunaan yang Dapat Diterima Google Cloud dapat mengakibatkan instance ditangguhkan. Untuk informasi lebih lanjut, lihat "Penangguhan dan Penghapusan" pada Persyaratan Layanan Google Cloud.

  • Masalah operasional

    Contohnya apabila instance terjebak dalam loop error (error saat dimulai atau tepat setelah dimulai), Cloud SQL dapat menangguhkan instance tersebut.

Ketika instance ditangguhkan, Anda dapat terus melihat informasi instance tersebut atau menghapusnya jika masalah penagihan memicu penangguhan.

Pengguna Cloud SQL dengan paket dukungan Platinum, Gold, atau Silver dapat menghubungi tim dukungan kami secara langsung mengenai instance yang ditangguhkan. Semua pengguna dapat menggunakan panduan sebelumnya beserta dengan forum google-cloud-sql.

Performa

Ringkasan

Cloud SQL mendukung workload dengan performa intensif hingga 60.000 IOPS dan tanpa memerlukan biaya tambahan untuk I/O. IOPS dan performa throughput bergantung pada ukuran disk, jumlah instance vCPU, dan ukuran blok I/O serta faktor lainnya.

Performa instance juga bergantung pada pilihan jenis penyimpanan dan workload.

Pelajari lebih lanjut:

Mengaktifkan log kueri

Untuk menyesuaikan performa kueri, Anda dapat mengonfigurasi Cloud SQL untuk membuat log kueri yang lambat dengan memasukkan flag database --log_output='FILE' dan --slow_query_log=on ke instance. Tindakan ini membuat output log tersedia menggunakan Logs Viewer pada konsol Google Cloud. Perlu diperhatikan bahwa biaya logging Google Cloud Observability berlaku.

Jangan setel log-output ke TABLE. Tindakan tersebut dapat menyebabkan masalah koneksi seperti yang dijelaskan dalam Tips untuk menggunakan flag.

Anda dapat melihat tutorial ini untuk menemukan petunjuk terkait cara membuat log dan memantau kueri lambat Cloud SQL untuk MySQL menggunakan Cloud Logging dan Monitoring.

Mengaktifkan pemantauan kunci

Monitor InnoDB menyediakan informasi terkait status internal mesin penyimpanan InnoDB yang dapat digunakan dalam penyesuaian performa.

Akses instance menggunakan Klien MySQL dan dapatkan output monitor on-demand:

SHOW ENGINE INNODB STATUS\G

Untuk penjelasan lebih lanjut terkait bagian dalam output monitor, lihat Output Lock Monitor dan Standard Monitor InnoDB.

Anda dapat mengaktifkan pemantauan InnoDB sehingga output tersebut menghasilkan secara berkala ke tabel atau file dengan penurunan performa. Untuk informasi lebih lanjut, lihat Mengaktifkan Pemantauan InnoDB.

Menggunakan skema performa

Skema Performa MySQL adalah fitur yang digunakan untuk memantau eksekusi Server MySQL pada level rendah. Cara paling mudah diakses untuk memakai statistik yang dihasilkan dalam performance_schema adalah melalui fungsi Laporan Performa MySQL Workbench.

Memastikan jumlah nomor tabel database yang wajar

Tabel database menggunakan resource sistem. Jumlah yang besar dapat memengaruhi performa dan ketersediaan instance serta menyebabkan instance tersebut kehilangan cakupan SLA. Pelajari lebih lanjut.

Tips performa umum

. Untuk penyisipan, pembaruan, atau penghapusan database yang lambat, pertimbangkan tindakan berikut:
  • Periksa lokasi penulis dan database; mengirim data jarak jauh membuat latensi.

Untuk pemilihan database yang lambat, pertimbangkan hal berikut:

  • Menyimpan data ke dalam cache penting untuk performa baca. Bandingkan ukuran set data dengan ukuran RAM instance. Seluruh set data semestinya muat dalam 70% dari RAM instance dengan kueri yang tidak dibatasi oleh performa IO. Jika tidak, pertimbangkan untuk meningkatkan ukuran RAM instance.
  • Jika workload terdiri dari kueri intensif CPU (pengurutan, ekspresi reguler, fungsi kompleks lainnya), instance mungkin akan di-throttle untuk meningkatkan vCPU.
  • Periksa lokasi pembaca dan database - latensi memengaruhi performa baca bahkan lebih daripada performa tulis.
  • Selidiki peningkatan performa khusus non-Cloud SQL, seperti menambahkan pengindeksan yang tepat, mengurangi data yang dipindai, dan menghindari round trip tambahan.
  • Jika Anda melihat performa yang buruk dalam menjalankan kueri, gunakan EXPLAIN. EXPLAIN adalah pernyataan yang dapat Anda tambahkan ke pernyataan lain seperti SELECT, dan menunjukkan informasi terkait cara MySQL menjalankan pernyataan. Hal tersebut juga berlaku untuk SELECT, DELETE, INSERT, REPLACE, dan UPDATE. Misalnya, EXPLAIN SELECT * FROM myTable;.

    Gunakan EXPLAIN untuk mengidentifikasi di mana Anda dapat:

    • Menambahkan indeks ke tabel untuk meningkatkan performa kueri. Contohnya, pastikan setiap kolom yang Anda gunakan sebagai kunci JOIN memiliki indeks pada kedua tabel.

    • Meningkatkan operasi ORDER BY. Apabila EXPLAIN menunjukkan "Menggunakan sementara; Menggunakan filesort" pada kolom outputTambahan, maka hasil perantara akan disimpan dalam file yang nantinya diurutkan dan biasanya menghasilkan performa buruk. Dalam kasus ini, ambil salah satu langkah berikut:

      • Jika memungkinkan, lebih baik gunakan indeks daripada pengurutan. Lihat Pengoptimalan ORDER BY untuk informasi lebih lanjut.

      • Meningkatkan ukuran variabel sort_buffer_size untuk sesi kueri.

      • Gunakan lebih sedikit RAM per baris dengan menegaskan kolom hanya sebesar yang dibutuhkan.

    Memecahkan masalah

    Untuk mengetahui lebih lanjut terkait masalah Cloud SQL lainnya, lihat halaman pemecahan masalah.

    Pesan error

    Untuk pesan error API khusus, lihat halaman rujukan Pesan error.

    Memecahkan masalah kunci enkripsi yang dikelola pelanggan (CMEK)

    Operasi administrator Cloud SQL, seperti membuat, mengkloning, atau memperbarui, bisa saja gagal karena error Cloud KMS dan peran atau izin yang hilang. Penyebab kegagalan umum meliputi hilangnya versi kunci Cloud KMS, versi kunci Cloud KMS dinonaktifkan atau dihancurkan, izin IAM tidak memadai untuk mengakses versi kunci Cloud KMS, atau versi kunci Cloud KMS berada dalam region yang berbeda dengan instance Cloud SQL. Gunakan tabel pemecahan masalah berikut untuk mendiagnosis dan menyelesaikan masalah umum.

    Tabel pemecahan masalah kunci enkripsi yang dikelola pelanggan

    Untuk error ini... Masalahnya mungkin adalah... Coba langkah ini...
    Akun layanan per-project, per-produk tidak ditemukan Nama akun layanan tersebut tidak tepat. Pastikan Anda membuat akun layanan untuk project pengguna yang tepat.

    BUKA HALAMAN AKUN LAYANAN.

    Tidak dapat memberikan akses ke akun layanan. Akun pengguna tidak memiliki izin untuk memberikan akses ke akun layanan ini. Tambahkan peran Organization Administrator ke akun pengguna atau layanan Anda.

    BUKA HALAMAN AKUN IAM

    Versi kunci Cloud KMS dihancurkan Versi kunci tersebut sudah dihancurkan. Jika versi kunci tersebut dihancurkan, Anda tidak dapat menggunakannya untuk mengenkripsi atau mendekripsi data.
    Versi kunci Cloud KMS dinonaktifkan Versi kunci tersebut dinonaktifkan. Aktifkan kembali versi kunci Cloud KMS.

    BUKA HALAMAN KUNCI KRIPTO

    Izin tidak memadai untuk menggunakan kunci Cloud KMS Peran cloudkms.cryptoKeyEncrypterDecrypter hilang pada akun pengguna atau layanan yang Anda gunakan untuk menjalankan operasi pada instance Cloud SQL, atau versi kunci Cloud KMS tidak ada. Di project Google Cloud yang menghosting kunci, tambahkan peran cloudkms.cryptoKeyEncrypterDecrypter ke akun pengguna atau layanan Anda.

    BUKA HALAMAN AKUN IAM


    Jika peran tersebut sudah diberikan ke akun Anda, lihat Membuat kunci untuk mempelajari cara membuat versi kunci baru. Lihat catatan.
    Kunci Cloud KMS tidak ditemukan. Versi kunci tersebut tidak ada. Buat versi kunci baru. Lihat Membuat kunci. Lihat catatan.
    Instance Cloud SQL dan versi kunci Cloud KMS berada di region yang berbeda. Instance Cloud SQL dan versi kunci Cloud KMS harus berada dalam region yang sama. Tindakan ini tidak dapat dilakukan jika versi kunci Cloud KMS berada di region global atau multi-region. Buat versi kunci pada region yang sama di mana Anda membuat instance. Lihat Membuat kunci. Lihat catatan.
    Versi kunci Cloud KMS dipulihkan, tetapi instance masih ditangguhkan Versi kunci dinonaktifkan atau tidak memberikan izin yang memadai. Aktifkan kembali versi kunci, dan berikan peran cloudkms.cryptoKeyEncrypterDecrypter kepada pengguna atau akun layanan Anda di project Google Cloud yang menghosting kunci.

    Tabel pemecahan masalah enkripsi ulang

    Untuk error ini... Masalahnya mungkin adalah... Coba langkah ini...
    Enkripsi ulang resource CMEK gagal karena kunci Cloud KMS tidak dapat diakses. Pastikan versi kunci utama diaktifkan dan izin tersebut diberikan dengan tepat. Versi kunci dinonaktifkan atau tidak memberikan izin yang memadai.

    Mengaktifkan kembali versi kunci Cloud KMS:

    BUKA HALAMAN KUNCI KRIPTO

    Di project Google Cloud yang menghosting kunci, pastikan peran cloudkms.cryptoKeyEncrypterDecrypter diberikan ke akun pengguna atau layanan Anda:

    BUKA HALAMAN AKUN IAM

    Enkripsi resource CMEK gagal karena terjadi error pada server internal Silakan coba kembali nanti Terjadi error server internal. Coba enkripsi ulang kembali. Untuk informasi lebih lanjut, lihat Mengenkripsi ulang instance atau replika masih ada dan diaktifkan oleh CMEK