Dokumen ini menjelaskan cara meningkatkan performa workload MySQL Anda di Google Kubernetes Engine (GKE) dengan membuat konfigurasi tingkat aplikasi dan tingkat node yang dioptimalkan. Untuk mengetahui detail selengkapnya, lihat Mengoptimalkan workload di GKE.
Pengoptimalan untuk MySQL ditentukan untuk instance MySQL 8 yang digunakan sebagai database pemrosesan transaksi online satu node ("Read/Write OLTP") dengan SSL, dengan performa yang diukur menggunakan Sysbench 1.1.0. Pertimbangkan cara beban kerja MySQL digunakan di cluster Anda dibandingkan dengan kasus penggunaan ini. Jika kasus penggunaan Anda berbeda, pengoptimalan yang direkomendasikan mungkin perlu disesuaikan dengan konteks Anda.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan tugas berikut:
- Aktifkan GKE Recommender API dan Google Kubernetes Engine API. Aktifkan API
- Untuk menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan perintah
gcloud components update. Versi gcloud CLI yang lebih lama mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
Persyaratan
Gunakan GKE versi 1.31.1-gke.12000 atau yang lebih baru.
Mengoptimalkan untuk workload MySQL
Sebaiknya gunakan node pool khusus untuk workload MySQL Anda. Secara default, node pool baru dibuat saat Anda menyelesaikan langkah-langkah berikut.
Untuk mengoptimalkan performa beban kerja MySQL, lakukan hal berikut:
Buat manifes dengan pengoptimalan untuk workload MySQL:
Buat manifes dengan pengoptimalan yang direkomendasikan dengan menjalankan perintah berikut:
gcloud container workload profiles manifests create \ --workload=mysql-8-oltp --cluster-version=CLUSTER_VERSION --options=machineType=MACHINE_TYPE \ --output-path=/tmp/manifests.yamlGanti kode berikut:
CLUSTER_VERSION: versi GKE. Rekomendasinya adalah GKE versi 1.31.1-gke.12000 atau yang lebih baru.MACHINE_TYPE: jenis mesin yang diinginkan.
Flag
--output-path=/tmp/manifests.yamlbersifat opsional. Jika tidak ditentukan, manifes akan dicetak ke terminal, tetapi tidak disimpan ke file.Perintah ini menghasilkan satu file YAML yang berisi dua resource Kubernetes:
- ConfigMap yang menentukan konfigurasi MySQL bernama
default-auth.cnf. - Objek ComputeClass. Opsi ini menentukan mesin tempat MySQL akan berjalan, yang bersifat opsional. Untuk mengetahui detail tentang cara menentukan jenis mesin, lihat Tentang ComputeClass kustom
Tinjau rekomendasi dan ubah manifes sehingga menyertakan pengoptimalan pilihan Anda. Untuk menilai rekomendasi, Anda dapat melakukan hal berikut:
- Tinjau dokumentasi MySQL untuk menilai konfigurasi yang direkomendasikan untuk konteks Anda.
- Pertimbangkan cara beban kerja MySQL digunakan di cluster Anda dibandingkan dengan kasus penggunaan berikut. Jika kasus penggunaan Anda berbeda, maka pengoptimalan yang direkomendasikan mungkin perlu disesuaikan dengan konteks Anda.
Pengoptimalan untuk MySQL ditentukan untuk instance MySQL 8 yang digunakan sebagai database pemrosesan transaksi online satu node ("Read/Write OLTP") dengan SSL, dengan performa yang diukur menggunakan Sysbench 1.1.0.
Edit file manifes jika Anda ingin mengubah konfigurasi atau menambahkan ke konfigurasi.
Terapkan manifes ke cluster menggunakan perintah berikut:
kubectl create -f /tmp/manifests.yaml
Deploy Pod yang mereferensikan pengoptimalan. Contoh:
apiVersion: v1 kind: Pod metadata: name: mysql spec: containers: - name: mysql image: mysql:8 volumeMounts: - name: gke-optimized-workload-config subPath: default-auth.cnf mountPath: /etc/mysql/conf.d/gke-optimized.cnf readOnly: true volumes: - name: gke-optimized-workload-config configMap: name: mysql-config nodeSelector: cloud.google.com/compute-class: optimized-gke-mysql-8-oltp-abc123Ubah nama ComputeClass agar cocok dengan nama yang dihasilkan. Kemudian, terapkan manifes Pod Anda ke cluster:
kubectl apply -f pod.yamlPastikan MySQL menggunakan konfigurasi yang dioptimalkan. Untuk melakukannya, Anda dapat menjalankan perintah berikut untuk memastikan MySQL menggunakan konfigurasi yang dioptimalkan:
kubectl exec mysql -- mysql -e "SELECT DISTINCT VARIABLE_PATH FROM performance_schema.variables_info WHERE VARIABLE_PATH != '';"Anda akan melihat output yang mirip dengan berikut ini:
VARIABLE_PATH /etc/mysql/conf.d/gke-optimized.cnf /etc/my.cnfAnda juga dapat menggunakan perintah
mysqluntuk membuat kueri setiap direktif yang ditetapkan dalam konfigurasi yang dioptimalkan, sepertimax_connections.
Saat Anda men-deploy workload, cluster akan membuat node pool baru yang sesuai dengan konfigurasi yang dioptimalkan, dan menetapkan Pod Anda ke node pool tersebut.
Pod yang sudah ada tidak akan diubah. Hanya Pod yang mereferensikan konfigurasi yang dioptimalkan yang dioptimalkan. Jika sebelumnya Anda telah men-deploy workload MySQL di cluster, Anda harus men-deploy ulang workload ini untuk menjalankannya dengan konfigurasi yang dioptimalkan.
Langkah berikutnya
- Pelajari lebih lanjut pengoptimalan workload di GKE.
- Pelajari lebih lanjut cara Men-deploy cluster MySQL stateful di GKE.
- Pelajari lebih lanjut ComputeClass GKE.
- Untuk mengoptimalkan workload Redis, lihat Mengoptimalkan performa workload Redis di GKE.