Rumah > Soal Jawab > teks badan
Kami menggunakan Kluster MySQL dengan proxySQL dan mempunyai persediaan berikut:
Soalannya begini: Pengguna pada pelayan 2 mencetus KEMASKINI SQL, KEMASKINI nama SET klien= 'Nama Baharu' WHERE id = 123. (Kemas kini ini dihantar ke pelayan 1, kemudian kemas kini pelayan 2)
Dalam blok kod yang sama, jika kami memilih rekod (PILIH nama DARI pelanggan WHERE id =123), pertanyaan akan dihantar ke pelayan tempatan dan hasilnya akan menjadi "nama lama" melainkan kami menjeda kod selama 1 saat ( untuk ujian).
Satu penyelesaian yang kami fikirkan ialah menukar sambungan (PHP) dan pergi terus ke pelayan 1 untuk mendapatkan selebihnya blok kod, tetapi jenis itu mengalahkan tujuan dan jauh daripada ideal (pangkalan kod yang agak besar memerlukan pengemaskinian).
Adakah terdapat penyelesaian yang melibatkan proxySQL?
P粉1229324662024-03-22 16:33:06
Untuk mengelakkan pertanyaan daripada dihalakan ke pelayan hamba dengan kependaman replikasi yang tinggi, anda boleh menetapkan kependaman replikasi maksimum ambang dalam lajur mysql_server jadual Kelewatan replikasi maksimum. Rujukan: max_replication_lag
max_replication_lag – Jika lebih daripada 0, ProxySQL akan Pantau kependaman replikasi secara kerap dan sama ada ia melebihi had yang dikonfigurasikan ambang, ia akan mengelakkan hos buat sementara waktu sehingga replikasi mengejar.
Anda juga boleh membuat peraturan pertanyaan untuk memisahkan bacaan dan penulisan pertanyaan. ref: ProxySQL belah baca/tulis
Penting: proxysql-gtid-causal-reads Jika anda menggunakan Mysql versi 5.7.5 atau lebih tinggi, ini mungkin menyelesaikan masalah anda.