Veritabanı Replikasyonu
- İngilizcesi
- Database Replication
- Türkçe karşılığı
- çoğaltma
- Okunuşu
- deytıbeys replikeyşın
Günlük kullanımda iki ad da yaygın.
Kısaca
Veritabanı replikasyonu, verinin bir sunucudan diğerlerine sürekli kopyalanmasıdır; böylece birkaç sunucu güvenilirlik ve ölçek için aynı veriyi tutar.
Veritabanı replikasyonu nedir?
Replikasyon, aynı veritabanının kopyalarını birden fazla sunucuda tutar. En yaygın kurulumda, birincil (primary) ya da lider adı verilen bir sunucu tüm yazmaları kabul eder; takipçi (follower) ya da okuma replikası da denen bir veya daha fazla replika ise bu değişikliklerin akışını alır ve kendi kopyasına uygular. Eski belgelerde buna master-slave replikasyonu denir.
Replikasyonun üç ana amacı vardır. Erişilebilirliği artırır; çünkü birincil sunucu arızalanırsa bir replika onun yerine terfi ettirilebilir, bu sürece failover denir; okumaları ölçekler; çünkü salt okunur sorgular replikalara dağıtılabilir; ve verinin kopyalarını diğer bölgelerdeki kullanıcılara daha yakın konumlandırabilir. PostgreSQL, MySQL, MongoDB ve Cassandra dahil çoğu ilişkisel ve NoSQL veritabanı bunu destekler.
Replikasyon senkron ya da asenkron olabilir. Senkron replikasyonda birincil sunucu, başarıyı bildirmeden önce her değişiklik için bir replikanın onayını bekler; bu daha güvenli ama daha yavaştır. Asenkron replikasyonda beklemez; bu yüzden replikalar biraz geride kalabilir ve sonraki okuma geride kalan bir replikaya giderse kullanıcı kendi güncellemesini göremeyebilir. Bazı sistemler, birkaç düğümün yazma kabul ettiği çok liderli ya da lidersiz replikasyon kullanır; bunun bedeli çakışan güncellemeleri çözmek zorunda kalmaktır.
Bu, bir öğretmenin cevap anahtarının birkaç asistan için fotokopisinin çekilmesine biraz benzer: herhangi bir asistan soruları yanıtlayabilir, ancak düzeltmeler aslında orijinal üzerinde yapılır ve sonra yeniden dağıtılır. Replikasyon çoğu zaman yedekleme ve sharding ile karıştırılır. Bir replika, yanlışlıkla çalıştırılan bir DELETE gibi hataları neredeyse anında kopyalar; bu yüzden yedek değildir. Farklı veriyi sunuculara bölen sharding'in aksine replikasyon her sunucuya aynı veriyi verir.
Bir bakışta
Önemli noktalar
- Replikasyon, aynı veriyi birden fazla veritabanı sunucusuna kopyalar.
- Birincil-replika kurulumlarında birincil yazmaları, replikalar okumaları karşılar.
- Birincil sunucu çökerse failover bir replikayı terfi ettirir.
- Asenkron replikasyon daha hızlıdır, ancak replikaların birincilin gerisinde kalmasına izin verir.
- Replika bir yedek değildir; çünkü hatalar da replike edilir.
Örnek
// Using node-postgres (pg) with two connection pools
import pg from "pg";
const primary = new pg.Pool({ connectionString: process.env.PRIMARY_DATABASE_URL });
const replica = new pg.Pool({ connectionString: process.env.REPLICA_DATABASE_URL });
await primary.query("UPDATE users SET name = $1 WHERE id = $2", ["Ada", 42]);
// With asynchronous replication, this read may briefly return the old name
const { rows } = await replica.query("SELECT name FROM users WHERE id = $1", [42]);Sık sorulan sorular
Replikasyon ile sharding arasındaki fark nedir?
Replikasyon, aynı veriyi çoğunlukla erişilebilirlik ve okuma ölçekleme için birkaç sunucuya kopyalar. Sharding ise depolamayı ve yazmaları ölçeklemek için verinin farklı parçalarını sunuculara böler ve her shard da çoğu zaman replike edilir.
Replikasyon gecikmesi (replication lag) nedir?
Replikasyon gecikmesi, birincilde onaylanan bir değişiklik ile o değişikliğin bir replikada görünmesi arasındaki gecikmedir. Genellikle milisaniyelerdir ancak yoğun yük altında artabilir; bu yüzden en güncel veriyi görmesi gereken okumalar birincile gitmelidir.
Veritabanı replikasyonu yedekle aynı şey midir?
Hayır. Replikasyon, yanlışlıkla yapılan silmeler ve bozulmuş veri dahil her değişikliği replikalara hızla kopyalar. Yedekler ise bir hatadan önceki veriyi geri yüklemenizi sağlayan belirli bir andaki anlık görüntülerdir; bu yüzden ikisine de ihtiyacınız vardır.
Sık karşılaştırılanlar
İlgili sayfalar
- ShardingVeritabanları, s. 28Sharding, bir veritabanının verisini shard adı verilen birkaç sunucuya bölerek ölçeklendirme yöntemidir; her biri toplamın yalnızca bir kısmını saklar ve işler.
- VeritabanıVeritabanları, s. 37Veritabanı, bilgisayarda düzenli biçimde saklanan ve uygulamaların verimlice kaydedip arayıp güncelleyebildiği, bir yazılımla yönetilen veri topluluğudur.
- CAP TeoremiVeritabanları, s. 3CAP teoremi, ağ arızası dağıtık bir veritabanını böldüğünde sistemin tutarlılık ile erişilebilirlikten birini seçmesi gerektiğini söyler; ikisi birden olamaz.
- TransactionVeritabanları, s. 36Transaction, tek bir bütün olarak başarılı ya da başarısız olan veritabanı işlemleri grubudur; böylece veri asla yarım kalmış, tutarsız bir durumda bırakılmaz.
- Yük DengeleyiciDevOps ve Bulut, s. 54Yük dengeleyici, gelen trafiği birkaç arka uç sunucuya dağıtan bir sunucu ya da hizmettir; hiçbir sunucu aşırı yüklenmez ve uygulama erişilebilir kalır.
- Konsensüs AlgoritmasıYazılım Mimarisi, s. 23Konsensüs algoritması, bir grup makinenin, bazıları çökse ya da mesajlar kaybolsa bile tek bir değerde ya da sıralı bir karar kaydında anlaşmasını sağlar.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin