Setelah membaca Menggunakan Replikasi untuk Scale-Out , bagaimana saya bisa merutekan berbagai kueri ke server yang berbeda, misalnya, SELECT
saya ingin merutekan ke slave dan NON-SELECT
menguasai. Saya menganggap sebagai loadbalancer saya bisa menggunakan haproxy , tapi saya tidak menemukan kemungkinan untuk membedakan antara pertanyaan pada tingkat haproxy ? Selain itu, katakanlah seseorang telah mencapai master secara langsung, bagaimana master dapat mengidentifikasi bahwa ini adalah SELECT
permintaan dan acara dikirim ke budak, atau ke loadbalancer.
8
web client
Adalah tugas Anda untuk menentukan apakah suatu transaksi yang akan dikirim ke database adalahread-only
atauread-write
dan memilih yang ditunjukslave
ataumaster
sesuai.sumber
Saya tidak mengetahui adanya perangkat lunak proxy untuk melakukan ini untuk Anda. haproxy adalah proxy level HTTP, ini tidak akan berdampak pada database Anda. Anda perlu menerapkan ini sebagai bagian dari logika bisnis aplikasi web Anda.
Di jantung lapisan bertahan Anda, Anda harus dapat mencegat panggilan ini dan "merutekan" mereka ke database yang sesuai berdasarkan jenis transaksi yang dieksekusi. Misalnya,
SELECT
kueri dapat dikirim ke server baca-saja Anda, tetapiUPDATE/INSRET/DELETE
kueri akan dikirim ke server master.sumber