Okuma/yazma ayrımı kurulumunda proxy, sorguları birincil ve ikincil örnekler arasında otomatik olarak dağıtır. İpuçları, bu yönlendirmeyi belirli sorgular için geçersiz kılmanıza olanak tanır; tek bir sorguyu güncel sonuçlar almak üzere birincil örneğe yönlendirir, yoğun bir okuma işlemini ikincil örneğe aktarır veya tanılama komutları için adlandırılmış bir örneği hedefler.
Önkoşullar
Başlamadan önce aşağıdaki koşulları karşıladığınızdan emin olun:
RDS örneğiniz için yapılandırılmış bir okuma/yazma ayrımı uç noktası bulunmalıdır. Ayrıntılar için bkz. Read/Write Splitting nedir?
MySQL CLI gereksinimi
MySQL CLI ile bağlantı kurarken, istemcinin yorum tabanlı ipuçlarını kaldırmasını önlemek için -c bayrağını kullanın:
mysql -c -h <endpoint> -u <username> -p
-c bayrağı olmadan MySQL CLI, tüm SQL yorum ipuçlarını proxy'ye ulaşmadan önce kaldırır.
İpucu sözdizimi referansı
Tüm ipuçları standart SQL blok yorum biçimini (/* ... */) kullanır ve hedef ifadenin hemen öncesinde yer almalıdır.
İpuçları tutarlılık ve işlem kısıtlamalarını atlar ve en yüksek yönlendirme önceliğine sahiptir. İpuçlarını kullanmadan önce iş yüklerinizi değerlendirin. İpuçları, ortam değişkenlerini yeniden yapılandıran ifadeleri içeremez; örneğin, /*FORCE_SLAVE*/ SET NAMES utf8; ifadesine izin verilmez ve hatalara neden olabilir.
Birincile yönlendirme: /*FORCE_MASTER*/
Sorguyu birincil RDS örneğine zorlar. İkincil örneklerdeki çoğaltma gecikmesi eski sonuçlar döndürebileceğinden, bir yazma işleminden hemen sonra güncel verilere ihtiyaç duyduğunuzda bunu kullanın.
/*FORCE_MASTER*/ SELECT * FROM orders WHERE order_id = 12345;
İkincile yönlendirme: /*FORCE_SLAVE*/
Sorguyu bir ikincil RDS örneğine zorlar. Yoğun okuma sorgularını birincil örnekten uzaklaştırmak için bunu kullanın.
/*FORCE_SLAVE*/ SELECT COUNT(*) FROM logs WHERE created_at > '2026-01-01';
Belirli bir örneğe yönlendirme: /*force_node='<instance-id>'*/
Tek bir sorguyu, örnek kimliğiyle belirttiğiniz örneğe yönlendirir. Örnek kullanılamıyorsa sorgu şu hatayla başarısız olur:
force hint server node is not found, please check.
Aşağıdaki örnek, SHOW PROCESSLIST komutunu yalnızca rr-bpxxxxx örneğinde çalıştırır:
/*force_node='rr-bpxxxxx'*/ SHOW PROCESSLIST;
Kalıcı yönlendirme: /*force_proxy_internal*/
Sonraki tüm sorguları belirtilen bir örneğe yönlendiren kalıcı bir geçersiz kılmayı ayarlar.
/*force_proxy_internal*/SET force_node = 'rr-bpxxxxx';
Bu ifadeyi çalıştırdıktan sonra, oturumdaki sonraki tüm sorgular rr-bpxxxxx örneğine gönderilir. Bu örnek kullanılamıyorsa sonraki sorgular şu hatayla başarısız olur:
set force node 'rr-bpxxxxx' is not found, please check.
Çoğu durumda /*force_proxy_internal*/ kullanımından kaçının. Bu kullanım, sonraki tüm trafiği tek bir örneğe yönlendirerek okuma/yazma ayrımını devre dışı bırakır. Salt okunur bir örneğin ağırlığını 0 olarak ayarlayıp herhangi bir ipucu kullanarak buna zorla yönlendirme yaparsanız istemcinin bu örnekle bağlantısı kesilir.