ApsaraDB RDS for MySQL örneğinizde geçişler gibi bakım işlemleri, uygulamalarınızı etkileyen bağlantı kesintilerine neden olabilir. Kalıcı bağlantı özelliği, bu tür işlemler sırasında bağlantıları aktif tutarak kesintileri önler; böylece kullanılabilirlik artar ve bakım maliyetleri azalır.
Genel Bakış
ApsaraDB RDS for MySQL veritabanı proxy'sinin kalıcı bağlantı özelliği, örnek geçişleri gibi olaylar sırasında uygulamanız ile proxy arasındaki bağlantıların aktif kalmasını sağlar. Aşağıdaki şekillerde gösterildiği gibi, bu durum bir veritabanı proxy uç noktası üzerinden bağlanan uygulamaların bağlantı hatası mesajları almasını engeller.


Nasıl çalışır
Bir veritabanı proxy'si iki tür bağlantı kullanır: proxy ile istemciniz arasındaki ön uç bağlantıları ve proxy ile veritabanı arasındaki arka uç bağlantıları. Bir örnek geçişi sırasında, arka uç bağlantısı kesilse bile proxy ön uç bağlantısını korur. Bu mekanizma sayesinde proxy kalıcı bağlantılar sunar.
Bir ApsaraDB RDS for MySQL örneğine yönelik arka uç bağlantılarında sürekliliğin anahtarı, kesinti sonrası bağlantı durumunu yeniden oluşturmaktır.
ApsaraDB RDS for MySQL için bağlantı durumu genellikle sistem değişkenlerini, kullanıcı tanımlı değişkenleri, geçici tabloları, karakter kümesi kodlamasını, işlem durumunu ve hazırlanmış ifade bilgilerini içerir. Bu konuda, ApsaraDB RDS for MySQL için kalıcı bağlantı özelliğinin nasıl çalıştığını açıklamak amacıyla set names utf8mb4 komutu örnek olarak kullanılmıştır.
Geçiş
Bir geçiş sırasında, ApsaraDB RDS for MySQL veritabanı proxy'si kalıcı bağlantıyı üç adımda korur:
Geçiş içeren bakım işlemleri şunlardır:
Birincil/ikincil geçiş
Küçük motor sürümü güncellemesi
Örnek yeniden başlatma gerektiren parametre değişikliği
Birincil örnek yapılandırma değişikliği
-
Geçişi başlat: Yeni bağlantıları ve istekleri engelleyin
Proxy işlemleri koruyamaz. Bu nedenle oturumları durumlarına göre farklı şekilde yönetir:
Engelleme dönemi sırasında etkin işlemi olan oturumlar için proxy, istekleri yürütülmek üzere arka uç birincil örneğine iletir.
Engelleme dönemi sırasında yeni işlem başlatan oturumlar için proxy istekleri engeller. İstemci sunucudan yanıt bekler.
Engelleme süresi sona erdikten sonra hâlâ etkin işlemi olan oturumlar için proxy bağlantıyı sonlandırır. Arka uç veritabanı işlenmemiş işlemleri geri alır.

-
Geçiş sırasında: Mevcut bağlantıları değiştirin
Geçiş sırasında mevcut bağlantıların durumu değiştirilir:
Korunamayan bağlantılar için proxy tüm bağlantıyı sonlandırır.
Korunabilen bağlantılar için proxy bunları yeni veritabanı örneğine geçirir.
Proxy, orijinal birincil örneğe giden bağlantıları bağlantı havuzundan temizler.

-
Geçişten sonra: Bağlantıları geri yükleyin
Başarıyla korunan bağlantılar için proxy yeni birincil örneğe bağlantılar kurar ve bağlantı durumunu geri yükler.

Yük Devretme
Yük devretme, bir sistem arızasının bir ApsaraDB RDS örneğini ikincil bir örneği otomatik olarak yeni birincil olarak yükseltmesine neden olduğu planlanmamış bir olaydır.
Proxy, veritabanında yürütülen veya iletilecek olan SQL deyimlerini önbelleğe alır. Bir veritabanı arızası oluştuğunda, proxy ile veritabanı arasındaki arka uç bağlantısı kesilir. Proxy yük devretmeyi algıladığında istemciyle hemen bağlantıyı kesmez. Bunun yerine, proxy başarısız okuma isteklerini kullanılabilir bir veritabanı örneğine iletir ve bağlantı durumunu geri yükler.
Başarısız yazma istekleri için proxy, veritabanına yapılan yazma işlemlerinin başarılı olup olmadığını belirleyemez. Bu nedenle, yük devretme sırasında oturum kalıcılığı yazma isteklerini desteklemez.
Kalıcı bağlantıları etkinleştirin
9 Ocak 2024 itibarıyla, veritabanı proxy'sini etkinleştirdiğinizde kalıcı bağlantı özelliği, uygun ApsaraDB RDS for MySQL örnekleri için varsayılan olarak etkindir. Bu özelliği istediğiniz zaman devre dışı bırakabilirsiniz.
Önkoşullar
Geçişler için kalıcı bağlantılar
ApsaraDB RDS örneği aşağıdaki gereksinimleri karşılar:
Motor sürümü: MySQL 5.6, 5,7, 8,0 veya 8,4
Sürüm: RDS Yüksek Kullanılabilirlik Sürümü veya RDS Küme Sürümü
Depolama türü: cloud disk veya Premium Yerel SSD'ler
Proxy türü: genel amaçlı veya özel
Veritabanı proxy'si etkindir ve proxy sürümü 1.14.5_20231207 veya üzeridir.
Yük devretmeler için kalıcı bağlantılar
ApsaraDB RDS örneği aşağıdaki gereksinimleri karşılar:
Motor sürümü: MySQL 5.6, 5,7 veya 8,0
Sürüm: RDS Yüksek Kullanılabilirlik Sürümü veya RDS Küme Sürümü
Depolama türü: cloud disk veya Premium Yerel SSD'ler
-
Proxy türü: özel
NotGenel amaçlı veritabanı proxy'si kalıcı bağlantıları yalnızca geçişler için destekler. Özel veritabanı proxy'si kalıcı bağlantıları hem geçişler hem de yük devretmeler için destekler.
Veritabanı proxy'si etkindir ve proxy sürümü 2.9.1 veya üzeridir.
Yordam
ApsaraDB RDS Örnekleri sayfasına gidin. Üst gezinme çubuğunda, örneğin bulunduğu bölgeyi seçin. Ardından örneği bulun ve kimliğine tıklayın.
Sol gezinme bölmesinde Database Proxy öğesine tıklayın.
-
Basic Information bölümünde, Persistent Connection yanındaki Enable öğesine tıklayın.
Not'persistent connection' metni görüntülenmiyorsa, örneğiniz kalıcı bağlantıları etkinleştirme gereksinimlerini karşılamıyor demektir.
Kalıcı bağlantıları kullanın
Önkoşullar
Veritabanı proxy'si etkindir.
Veritabanı proxy'si için kalıcı bağlantı özelliği etkindir.
Yordam
ApsaraDB RDS Örnekleri sayfasına gidin. Üst gezinme çubuğunda, örneğin bulunduğu bölgeyi seçin. Ardından örneği bulun ve kimliğine tıklayın.
Sol gezinme bölmesinde Database Proxy öğesine tıklayın.
İş gereksinimlerinize göre hedef veritabanı proxy uç noktası için bir erişim ilkesi yapılandırın. Daha fazla bilgi için bkz. Veritabanı proxy uç noktası için erişim ilkesi yapılandırma. Read/Write Attributes değerini Read/Write (Read/Write Splitting) olarak ayarlayın.
İş gereksinimlerinize göre veritabanı proxy'si için bir dahili veya genel uç nokta talep edin. Daha fazla bilgi için bkz. Veritabanı proxy uç noktası ayarlama.
Uygulamanızda, veritabanına bağlanmak için veritabanı proxy'sinin dahili veya genel uç noktasını ve bağlantı noktası numarasını kullanın.
Veritabanı örneğinde geçiş içeren bir bakım işlemi gerçekleştiğinde, veritabanı proxy'si bağlantıyı otomatik olarak korur. Veritabanı proxy uç noktasını kullandığınızda, uygulamanızın proxy'ye olan bağlantısı kesilmez.
Sınırlamalar
Bir geçiş sırasında, kalıcı bağlantı özelliği aşağıdaki senaryolarda bağlantıları koruyamaz:
MySQL sunucusunun tüm verileri göndermeyi tamamlamadığı, eksik sonuç kümesine sahip bağlantılar.
İşlenmemiş işlemlere sahip bağlantılar.
Bir
change userdeyimi kullanmış olan bağlantılar.Bir
LOAD DATAdeyimi kullanmış olan bağlantılar.Geçici tablolara sahip bağlantılar.
Veritabanı proxy uç noktası aracılığıyla ikili günlüklerine abone olmak için kullanılan bağlantılar.
FOUND_ROWS(),ROW_COUNT()veLAST_INSERT_ID()işlevlerinin çağrılması desteklenmez. Bu işlevler çağrılabilmekle birlikte, döndürülen sonuçların doğruluğu garanti edilemez. MySQL artıkSELECT FOUND_ROWS()kullanımını önermemektedir. Sorgular içinSELECT FOUND_ROWS()ifadesiniSELECT COUNT(*) FROM tb1ile değiştirmenizi öneririz. Daha fazla bilgi için bkz. FOUND_ROWS().
Kullanım notları
Bağlantılar yeniden bağlanabildiğinden,
select connection_id()sorgusu tarafından döndürülen mevcut bağlantının iş parçacığı kimliği değişebilir.Bağlantılar yeniden kurulduğundan,
show processlistveya SQL Explorer içinde görüntülenen IP adresi ve bağlantı noktası, istemcinin gerçek IP adresi ve bağlantı noktasıyla eşleşmeyebilir.Bir bağlantıda kullanıcı tanımlı değişkenler varsa, bağlantı korunabilir ancak değişkenler geçersiz hale gelir.
Kalıcı bağlantıları devre dışı bırakın
ApsaraDB RDS Örnekleri sayfasına gidin. Üst gezinme çubuğunda, örneğin bulunduğu bölgeyi seçin. Ardından örneği bulun ve kimliğine tıklayın.
Sol gezinme bölmesinde Database Proxy öğesine tıklayın.
Basic Information bölümünde, Persistent Connection yanındaki Disable öğesine tıklayın.
Özellik testi
Bu konu yalnızca geçiş senaryoları için test sonuçları sağlar.
Test ortamı
-
Test ApsaraDB RDS for MySQL örneği:
MySQL 8,0, RDS Yüksek Kullanılabilirlik Sürümü
Örnek türü: mysql.x2.xlarge.2c (özel, 8 vCPU, 16 GB bellek)
Test aracı: Sysbench
-
Test verileri:
Her birinde 40.000 satır bulunan 100 tablo.
Eşzamanlı iş parçacığı sayısı: 128.
Test yöntemi
Farklı bakım senaryolarında bir ApsaraDB RDS for MySQL örneğinin bağlantı tutma oranını test edin. Bağlantı tutma, bir bakım işleminden sonra aktif kalan bağlantıların yüzdesidir.
Aşağıdaki test komutunu çalıştırın:
sysbench --db-driver=mysql --mysql-host=127.X.X.1 --mysql-port=3306 --mysql-user=username --mysql-password='' --tables=100 --table-size=40000 --threads=128 --mysql-db=sbtest --report-interval=5 --time=600 oltp_read_write run
Aşağıdaki tabloda test komutundaki temel parametreler açıklanmaktadır.
db-driver: Veritabanı motorunu belirtir.
mysql-host: Veritabanı proxy uç noktasını belirtir.
tables: Veritabanındaki tablo sayısını belirtir.
table-size: Her tablodaki kayıt sayısını belirtir.
threads: Eşzamanlı iş parçacığı sayısını belirtir.
time: Test süresini saniye cinsinden belirtir.
Test sonuçları
Test edilen bakım senaryolarında, ApsaraDB RDS for MySQL örneği %100 bağlantı tutma oranına ulaşmıştır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
API referansı
|
|
|
|
|
|
|
|
İlgili belgeler
Veritabanı proxy'sini etkinleştirme