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:
- Persistent disk dan performa.
- Performa dan metrik throttling.
- Mengoptimalkan performa disk.
- Faktor lain yang memengaruhi performa.
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 diingat 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.
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
. ApabilaEXPLAIN
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.
|
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.
|
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.
|
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.
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: Di project Google Cloud yang menghosting kunci, pastikan peran |
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 |