Topik ini menjelaskan cara menggunakan petunjuk untuk titik akhir kluster yang modenya baca/tulis diatur ke Read/Write (Automatic Read/Write Splitting).
Batasan
Petunjuk hanya dapat digunakan setelah mengatur mode baca/tulis ke Read/Write (Automatic Read/Write Splitting) pada sebuah titik akhir kluster. Petunjuk tidak didukung untuk titik akhir kluster atau titik akhir utama dengan mode Read-only. Untuk informasi lebih lanjut tentang mode baca/tulis titik akhir kluster, lihat bagian "Mode baca/tulis untuk titik akhir kluster" dalam topik Titik Akhir.
Catatan Penggunaan
Petunjuk memiliki prioritas routing tertinggi dan tidak dibatasi oleh tingkat konsistensi atau pemisahan transaksi. Sebelum menggunakan petunjuk, lakukan evaluasi terlebih dahulu.
Penggunaan
Tambahkan petunjuk
/*FORCE_MASTER*/atau/*FORCE_SLAVE*/sebelum pernyataan SQL untuk secara paksa menentukan arah routing pernyataan tersebut.Sebagai contoh, asumsikan bahwa pernyataan
SELECT * FROM testdirutekan ke node hanya-baca. Jika pernyataan tersebut diubah menjadi/*FORCE_MASTER*/ SELECT * FROM test, pernyataan tersebut akan dirutekan ke node utama. Petunjuk/*FORCE_MASTER*/hanya berlaku pada titik akhir dengan mode Baca/Tulis (Pembagian Baca/Tulis Otomatis). Jika petunjuk/*FORCE_MASTER*/ditambahkan pada titik akhir dengan mode Hanya-Baca, pernyataan tersebut tidak akan dirutekan ke node utama.
Tambahkan petunjuk
/*force_node='<Node ID>'*/sebelum pernyataan SQL untuk secara paksa menentukan node eksekusi pernyataan tersebut.Sebagai contoh,
/*force_node='pi-bpxxxxxxxx'*/ SHOW PROCESSLISTmenentukan bahwa pernyataanSHOW PROCESSLISTdieksekusi pada node bernamapi-bpxxxxxxxx. Jika node tersebut tidak tersedia, pesan kesalahanforce hint server node is not found, please check.akan dikembalikan.Tambahkan petunjuk
/*force_proxy_internal*/set force_node = '<Node ID>'sebelum pernyataan SQL untuk secara paksa menentukan node eksekusi semua pernyataan SQL.Sebagai contoh, jika Anda mengeksekusi pernyataan
/*force_proxy_internal*/set force_node = 'pi-bpxxxxxxxx', semua pernyataan SQL berikutnya akan dirutekan ke node bernamapi-bpxxxxxxxx. Jika node tersebut gagal, pesan kesalahanset force node 'rr-bpxxxxx' is not found, please check.akan dikembalikan.Tambahkan petunjuk /*force_all*/ sebelum pernyataan SQL untuk secara paksa menyiarkan pernyataan tersebut ke semua node. Hasil yang dikembalikan bergantung pada skenario kueri.
CatatanPolarProxy harus versi 2.8.36 atau lebih baru. Untuk informasi tentang cara melihat dan memperbarui versi PolarProxy, lihat Manajemen Versi Revisi.
Jika pernyataan digunakan untuk menanyakan tabel sistem tertentu, seperti information_schema.processlist, information_schema.innodb_trx, performance_schema.threads, performance_schema.metadata_locks, dan sys.schema_table_lock_waits, hasil gabungan dari semua node akan dikembalikan.
Sebagai contoh, jika Anda mengeksekusi pernyataan /*force_all*/SELECT * FROM information_schema.processlist, PolarProxy menyiarkan pernyataan tersebut ke semua node dan mengembalikan hasil gabungan dari semua node. Jika Anda mengeksekusi pernyataan SELECT * FROM information_schema.processlist tanpa menambahkan petunjuk /*force_all*/, pernyataan tersebut akan dirutekan ke node acak.
Jika pernyataan digunakan untuk menanyakan database dan tabel lain atau digunakan dalam skenario lain, hanya hasil dari database utama yang akan dikembalikan.
Jika Anda mengaktifkan distribusi permintaan otomatis di antara node penyimpanan baris dan kolom, tambahkan petunjuk
/*FORCE_IMCI_NODES*/untuk secara paksa merutekan permintaan ke node penyimpanan kolom. Untuk informasi lebih lanjut, lihat Distribusi Permintaan Otomatis di Antara Node Penyimpanan Baris dan Kolom.CatatanPetunjuk tidak peka huruf besar/kecil dan harus ditempatkan sebelum pernyataan SQL.
Jika Anda ingin mengeksekusi pernyataan SQL sebelumnya yang berisi petunjuk pada baris perintah resmi MySQL, tambahkan parameter -c ke pernyataan SQL. Jika tidak, petunjuk menjadi tidak valid karena baris perintah resmi MySQL menyaring petunjuk tersebut. Untuk informasi lebih lanjut, lihat Opsi Klien mysql.
Kami menyarankan agar Anda tidak menggunakan
/*force_proxy_internal*/dalam pernyataan SQL. Jika tidak, semua pernyataan SQL berikutnya akan dirutekan ke node yang ditentukan dan fitur pembagian baca/tulis menjadi tidak valid.Petunjuk tidak dapat digabungkan dengan pernyataan SQL yang mengubah variabel lingkungan. Sebagai contoh, jika Anda mengeksekusi pernyataan
/*FORCE_SLAVE*/ SET NAMES utf8;, kesalahan mungkin terjadi.