Okuma/yazma ayrımı, tek bir veritabanı proxy'si uç noktası üzerinden yazma isteklerini birincil örneğe ve okuma isteklerini salt okunur örneklere yönlendirir. İş yükünüzde yazmalara kıyasla okumalar önemli ölçüde daha fazlaysa ve birincil örnek okuma yükünü tek başına karşılayamıyorsa bu özelliği kullanın.
Uygulamanızı, birincil ve her bir salt okunur örnek için ayrı uç noktaları yönetmek yerine tek bir veritabanı proxy uç noktasına bağlayın. Proxy tüm yönlendirmeyi otomatik olarak yönetir.
Okuma/yazma ayrımını ne zaman kullanmalısınız?
Aşağıdaki durumlardan herhangi biriyle karşılaşıyorsanız okuma/yazma ayrımı iyi bir seçimdir:
Yoğun okuma iş yükleri: Uygulamanız INSERT, UPDATE veya DELETE işlemlerine kıyasla çok daha fazla SELECT sorgusu çalıştırır.
Birincil örnek darboğazı: Yazma hacmi yönetilebilir olsa bile birincil örnek CPU veya G/Ç kaynakları okuma trafiği nedeniyle tükenmiştir.
Bağlantı değişikliği olmadan okuma ölçeklendirme: Uygulamanızın bağlantı mantığını değiştirmeden okuma kapasitesini artırmak istersiniz.
Avantajlar
Tek uç nokta, yönlendirme kodu gerekmez: Veritabanı proxy uç noktasına yalnızca bir kez bağlanın. Proxy, yazmaları birincil örneğe iletir ve okumaları salt okunur örnekler arasında otomatik olarak dağıtır; örnek başına ayrı bağlantı dizeleri tutmanıza gerek kalmaz.
Kendi oluşturduğunuz proxy'ye göre daha düşük gecikme süresi: Okuma/yazma ayrımı, ApsaraDB RDS ekosistemine gömülüdür. Veriler ek ara katmanlardan geçmez, bu da cloud ortamında kendi proxy'nizi oluşturmanıza kıyasla yanıt gecikme süresini azaltır.
Yapılandırılabilir okuma ağırlıkları ve gecikme eşiği: Okuma isteklerinin nasıl dağıtılacağını kontrol etmek için her örnek için bir okuma ağırlığı belirtin. Geciken salt okunur örneklerin okuma havuzundan otomatik olarak çıkarılması için bir çoğaltma gecikme eşiği ayarlayın.
Otomatik sağlık kontrolü ve yük devretme: Proxy her örneği sürekli izler. Bir salt okunur örnek başarısız olursa veya çoğaltma gecikmesi eşiği aşarsa proxy bu örneğe okuma yönlendirmeyi durdurur ve bu istekleri sağlıklı örneklere yeniden dağıtır. Örnek kurtarıldıktan sonra yönlendirme otomatik olarak devam eder.
Tek hata noktasından (SPOF) kaçınmak için en az iki salt okunur örnek oluşturun.
Ön koşullar
Okuma/yazma ayrımını etkinleştirmeden önce aşağıdakilere sahip olduğunuzdan emin olun:
RDS High-availability Edition veya RDS Cluster Edition çalışan bir ApsaraDB RDS for MySQL örneği
RDS High-availability Edition için: en az bir salt okunur örnek oluşturulmuş olmalıdır (iki veya daha fazla önerilir)
RDS Cluster Edition için: salt okunur örnek gerekmez; ikincil düğüme erişilebilir ve yalnızca okuma isteklerini işler
Okuma/yazma ayrımı RDS Basic Edition üzerinde desteklenmez.
Nasıl çalışır?
Veritabanı proxy özelliğini etkinleştirdikten sonra okuma/yazma ayrımı otomatik olarak aktif hale gelir; ek yapılandırma gerekmez. instance details sayfasının sol gezinme bölmesinde Database Proxy seçeneğine gidin ve veritabanı proxy uç noktasını (eskiden proxy terminal olarak adlandırılırdı) edinin, ardından uygulama bağlantı dizenizi bunu kullanacak şekilde güncelleyin.
İstek yönlendirme
Adanmış proxy, her isteği türüne göre yönlendirir:
Birincil RDS örneği
Yazma deyimleri: INSERT, UPDATE, DELETE, SELECT FOR UPDATE
Tüm DDL işlemleri (veritabanı/tablo oluşturma veya silme, şema ve izin değişiklikleri)
İşlem içindeki tüm istekler (işlem bölme özelliği etkinleştirilmedikçe)
Repeatable Read (RR) yalıtım düzeyinde ve üzerindeki salt okunur olmayan işlemler
Kullanıcı tanımlı işlevler ve saklı yordamlar
Açıkça oluşturulan geçici tablolar
SELECT last_insert_id()Kullanıcı değişkeni sorguları ve güncellemeleri
SQL'deki
KILLdeyimleri (KILL komutlarından farklıdır),LOCK TABLE,UNLOCK TABLEFLUSHdeyimleri dahilFLUSH TABLES WITH READ LOCK(FTWRL)SAVEPOINT
Birincil RDS örneği veya salt okunur RDS örneği
İşlem dışındaki
SELECTdeyimleriSTART TRANSACTION READ ONLY
Tüm RDS örnekleri
Sistem değişkeni güncellemeleri
USEdeyimleriSHOW PROCESSLIST— adanmış proxy, tüm örneklerden gelen işlemleri toplar ve döndürürNAMED PREPARECOM_CHANGE_USER,COM_QUIT,COM_SET_OPTION
Okuma/yazma özniteliği davranışı
Veritabanı proxy uç noktası iki okuma/yazma özniteliği modunu destekler. Aşağıdaki tabloda her modun normal koşullarda ve salt okunur örnekler kullanılamadığında nasıl davrandığı gösterilmektedir.
| Okuma/yazma öznitelikleri | Okuma ağırlığı yöntemi | Birincil örnek ağırlığı | Normal | Son salt okunur örnek silindikten sonra | Tüm salt okunur örnekler arızalı olduktan sonra |
|---|---|---|---|---|---|
| Read-only | Otomatik veya Özel | Belirtilemez | Birincil: istek yok. Proxy: yalnızca okuma istekleri. | Birincil: istek yok. Proxy: bağlantı hatası. | Birincil: istek yok. Proxy: bağlantı hatası. |
| Read and write | Otomatik | 0 (bkz. Sistem tarafından okuma ağırlığı tahsis kuralları) | Birincil: yalnızca yazma istekleri. Proxy: okuma ve yazma istekleri. | Birincil: okuma ve yazma istekleri. Proxy: okuma ve yazma istekleri. | Birincil: okuma ve yazma istekleri. Proxy: okuma ve yazma istekleri. |
| Özel | 0'dan büyük | Birincil: okuma ve yazma istekleri. Proxy: okuma ve yazma istekleri. | Birincil: okuma ve yazma istekleri. Proxy: okuma ve yazma istekleri. | Birincil: okuma ve yazma istekleri. Proxy: okuma ve yazma istekleri. | |
| 0 | Birincil: yalnızca yazma istekleri. Proxy: okuma ve yazma istekleri. | Birincil: okuma ve yazma istekleri. Proxy: okuma ve yazma istekleri. | Birincil: okuma ve yazma istekleri. Proxy: okuma ve yazma istekleri. |
Birincil üzerinde istek yok : Birincil örnek, salt okunur istek iletimine dahil değildir.
Bağlantı hatası : Proxy uç noktasının yönlendirme yapabileceği kullanılabilir örnek olmadığında bir bağlantı hatası döndürülür.
Birincil ağırlığın 0 olarak ayarlandığı Read and write modunda, okuma istekleri varsayılan olarak salt okunur örneklere gider. İstisnalar: tüm salt okunur örnekler arızalıysa, zorlayıcı bir ipucu belirtilmişse veya işlem bölme etkinleştirilmişse.
Yapılandırma ayrıntıları için bkz. Okuma/yazma özniteliklerini ve okuma ağırlıklarını yapılandırma .
Sonraki adımlar
Okuma/yazma ayrımını etkinleştirdikten sonra şunları yapabilirsiniz:
Okuma/yazma özniteliklerini ve okuma ağırlıklarını yapılandırın — hangi örneklerin hangi oranlarda okuma işleyeceğini ayarlayın.
Okuma/yazma ayrımını doğrulayın — trafiğin doğru şekilde yönlendirildiğini onaylayın.
SQL deyimlerinin örnekler arasında nasıl dağıtıldığını incelemek için SQL Explorer ve Audit özelliğini geçici olarak etkinleştirin (not: bu özellik ayrı olarak faturalandırılır; artık gerekli olmadığında devre dışı bırakabilirsiniz).