Tüm Ürünler
Search
Belge Merkezi

ApsaraDB for MongoDB:Use MongoShake to implement delayed synchronization among ApsaraDB for MongoDB instances

Son Güncelleme:Oct 03, 2026

MongoShake ile gerçek zamanlı senkronizasyon, birincil örnekteki hatalı bir işlemin (örneğin yanlışlıkla bir koleksiyonun silinmesi veya bozuk veri yazılması) saniyeler içinde ikincil örneklere yansıtılması anlamına gelir ve müdahale için zaman tanımaz. MongoShake 2.4.6 ve sonraki sürümlerdeki incr_sync.target_delay parametresi, birincil örnek ile senkronizasyon hedefleri arasında sabit bir gecikme süresi tanıtarak sorunu tespit etmeniz, senkronizasyonu durdurmanız ve bozuk veri ulaşmadan önce trafiği temiz bir ikincil örneğe yönlendirmeniz için size bir zaman penceresi sağlar.

Bu konu, incr_sync.target_delay parametresini ele almaktadır. Genel MongoShake kurulumu için bkz. ApsaraDB for MongoDB örnekleri arasında tek yönlü senkronizasyon gerçekleştirmek için MongoShake kullanma .

Ön koşullar

Başlamadan önce şunlara sahip olduğunuzdan emin olun:

  • MongoShake 2.4.6 veya üzeri bir sürüm. MongoShake releases page adresinden indirin.

  • Sanal özel cloud (VPC) içinde bulunan bir kaynak ApsaraDB for MongoDB çoğaltma kümesi örneği. Örnek klasik ağ üzerindeyse öncelikle VPC'ye geçiş yapın.

  • Kaynakla aynı VPC içinde bulunan bir hedef ApsaraDB for MongoDB çoğaltma kümesi örneği; bu sayede ağ gecikme süresi en aza indirilir. Bkz. Çoğaltma kümesi örneği oluşturma.

  • Ağ gecikme süresini en aza indirmek amacıyla MongoShake'i çalıştırmak için aynı VPC içinde bir Elastic Compute Service (ECS) örneği. Bkz. ECS örneği oluşturma.

  • MongoShake'in her iki örneğe de bağlanabilmesi için ECS örneğinin özel IP adresinin hem kaynak hem de hedef örneklerin izin listelerine eklenmiş olması. Bkz. İzin listesi yapılandırma.

Ağ kurulumunuz VPC gereksinimlerini karşılamıyorsa her iki örnek için genel uç noktalar başvurun ve bunun yerine ECS örneğinin genel IP adresini izin listelerine ekleyin. Bkz. Genel uç nokta için başvuru ve İzin listesi yapılandırma .

Çalışma mantığı

Varsayılan olarak MongoShake, birincil örneğin işlem günlüğünü (oplog) izler ve değişiklikleri ikincil örneklere neredeyse gerçek zamanlı olarak uygular. Bu durum, hatalı bir işlemin neredeyse anında ikincil örneklere yayılmasına neden olur.

incr_sync.target_delay ayarı, MongoShake'e belirtilen süre (saniye cinsinden) boyunca değişiklikleri bekletmesini ve ardından uygulamasını söyler. Örneğin, 1.800 saniyelik (30 dakika) bir gecikme belirlendiğinde geçerli saat 10:00 ise ikincil örnek 09:30 itibarıyla verileri yansıtır. 09:30 verileri uygulanmadan önce hatalı bir işlem tespit ederseniz senkronizasyonu durdurabilir ve bozuk veri ulaşmadan önce trafiği ikincil örneğe yönlendirebilirsiniz.

Gecikmeli senkronizasyon yapılandırma

Aşağıdaki adımlarda MongoShake ana bilgisayarı olarak bir Ubuntu ECS örneği kullanılmıştır.

  1. ECS örneğine oturum açın. Bkz. Kullanıcı adı ve parola kullanarak Linux örneğine bağlanma.

  2. MongoShake paketini indirin:

    wget <download-url>

    Örnek:

    wget https://github.com/alibaba/MongoShake/releases/download/release-v2.0.7-20190817/mongo-shake-2.0.7.tar.gz

    En son indirme URL'sini MongoShake releases page adresinde bulun.

  3. Paketi çıkarın:

    tar xvf <package-name>

    Örnek:

    tar xvf mongo-shake-2.0.7.tar.gz
  4. Düzenlemek için collector.conf dosyasını açın:

    vi collector.conf

    Kaynak ve hedef bağlantı dizelerini ile diğer gerekli parametreleri yapılandırın. Tüm parametre referansı için bkz. MongoShake parametreleri. İstediğiniz gecikme süresini (saniye cinsinden) ayarlamak üzere incr_sync.target_delay değerini belirleyin. Aşağıdaki örnek 30 dakikalık bir arabellek süresi ayarlar:

    incr_sync.target_delay = 1800
  5. collector.conf dosyasını kaydedin ve kapatın.

  6. MongoShake'i başlatın:

    ./collector.linux -conf=collector.conf -verbose 1

    MongoShake artık değişiklikleri birincil örnekte gerçekleşmesinden 30 dakika sonra ikincil örneğe uygular.

Hatalı işlemden kurtarma

Birincil örnekte hatalı bir işlem tespit edildiğinde (örneğin yanlışlıkla veri yazılması veya bir koleksiyonun silinmesi) bozuk veri ikincil örneğe ulaşmadan önce senkronizasyonu durdurmak ve ardından trafiği temiz ikincil örneğe yönlendirmek için aşağıdaki adımları izleyin.

  1. Hatalı işlemin ne zaman gerçekleştiğini belirlemek amacıyla birincil örneğin işlem günlüğünü sorgulayın. Aşağıdaki örnek 1 Haziran 2020 ile 2 Haziran 2020 tarihleri arasındaki tüm işlem günlüğü girdilerini getirir:

    use local  // Switch to the local database
    db.oplog.rs.find({"o.createTime": {$gte: new Date(2020,6,1), $lte: new Date(2020,6,2)}})

    Tam işlem günlüğü sorgu sözdizimi için MongoDB documentation adresine bakın.

  2. Hatalı işlem ikincil örneğe uygulanmadan önce belirli bir zamanda MongoShake'i durdurmak amacıyla bir ExitPoint ekleyin:

    curl -X POST --data '{"ExitPoint": <unix-timestamp>}' <mongoshake-host>:<port>/sentinel/options

    Örnek:

    curl -X POST --data '{"ExitPoint": 1593534600}' 127.0.0.1:9100/sentinel/options

    1593534600 zaman damgası 30 Haziran 2020 tarihinde 16:30:00 saatine karşılık gelir. MongoShake, işlem günlüğünde bu noktaya ulaştığında otomatik olarak çıkar.

  3. collector.conf dosyasını açın ve ikincil örneğin yeni senkronizasyon kaynağı haline gelmesi için birincil ve ikincil örneklerin IP adreslerini değiştirin.

  4. MongoShake'i yeniden başlatın:

    ./collector.linux -conf=collector.conf -verbose=1
  5. Geçiş işlemini tamamlamak için uygulamanızın bağlantı dizesini yeni birincil örneğe yönlendirin.

MongoShake durumunu izleme

İzleme talimatları için bkz. MongoShake durumunu izleme.