Ana içeriğe geç

Internetsiz Ortamda MongoDB Sürüm Yükseltme

Bu doküman, internet erişimi bulunmayan (air-gapped) ortamlarda çalışan ve replica set olarak yapılandırılmış MongoDB kümelerinin, hizmet kesintisi yaşanmadan bir üst ana sürüme yükseltilmesini açıklar. Kurulum, repoya bağlanmak yerine önceden indirilip sunuculara taşınan yerel paketlerden (RPM) yapılır.

MongoDB'de ana sürüm atlanamaz; yükseltme her ana sürüm için sırayla uygulanır: 4.4 → 5.0 → 6.0 → 7.0 → 8.0. Her geçişte izlenen yöntem aynıdır: önce secondary node'lar teker teker güncellenir, ardından primary node secondary rolüne çekilip güncellenir ve en son featureCompatibilityVersion (FCV) değeri yükseltilir.

uyarı

Yükseltmeye başlamadan önce güncel bir mongodump yedeği alınmalı ve her node üzerindeki /etc/mongod.conf dosyasının bir kopyası saklanmalıdır. Paketler internete bağlı bir makinede indirilip ilgili sürüm için her node'a taşınmış olmalıdır.

bilgi

Örneklerdeki <NODE_IP> node'un IP adresini, <PRIMARY_NODE_IP> primary node'un IP adresini ve <paket-dizini> ilgili sürümün RPM dosyalarının bulunduğu dizini ifade eder. Komutlar RHEL / Rocky / AlmaLinux (dnf) ortamına göredir. Varsayılan Apinizer MongoDB portu 25080 olarak kullanılmıştır.

MongoDB 4.4'ten 5.0'a Yükseltme​

1. Secondary Node'ları MongoDB 4.4'ten 5.0'a Güncelleme​

Her secondary node üzerinde sırasıyla uygulanır.

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()
bilgi

Bir secondary node, SECONDARY durumuna ve health: 1 değerine dönmeden diğer secondary node'un güncellemesine geçmeyin.

2. Primary Rolündeki Bir Node'u Secondary Rolüne Çekme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

Primary'yi düşürün:

rs.stepDown()

Yeni primary'nin seçildiğini doğrulayın:

rs.status()

3. Primary Rolünü Bırakan Node'u MongoDB 4.4'ten 5.0'a Güncelleme​

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()

4. MongoDB 5.0 Özellik Uyumu (FCV) Güncelleme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
use admin

Mevcut özellik uyumunu kontrol edin:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })

Özellik uyumunu güncelleyin:

db.adminCommand({ setFeatureCompatibilityVersion: "5.0" })

MongoDB 5.0'dan 6.0'a Yükseltme​

5. Secondary Node'ları MongoDB 5.0'dan 6.0'a Güncelleme​

Her secondary node üzerinde sırasıyla uygulanır.

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()

6. Primary Rolündeki Bir Node'u Secondary Rolüne Çekme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

Primary'yi düşürün:

rs.stepDown()

Yeni primary'nin seçildiğini doğrulayın:

rs.status()

7. Primary Rolünü Bırakan Node'u MongoDB 5.0'dan 6.0'a Güncelleme​

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()

8. MongoDB 6.0 Özellik Uyumu (FCV) Güncelleme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
use admin

Mevcut özellik uyumunu kontrol edin:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })

Özellik uyumunu güncelleyin:

db.adminCommand({ setFeatureCompatibilityVersion: "6.0" })

MongoDB 6.0'dan 7.0'a Yükseltme​

uyarı

MongoDB 7.0 sürümünde storage.journal yapılandırma anahtarı tamamen kaldırılmıştır; journaling artık her zaman etkindir. /etc/mongod.conf dosyasında 6.0 döneminden kalan bir journal bloğu varsa, 7.0 servisi bu anahtarı tanımaz ve Unrecognized option: storage.journal.enabled hatasıyla (status=2/INVALIDARGUMENT) açılmaz. Bu geçişte servisi başlatmadan önce journal bloğu config dosyasından tümüyle kaldırılmalıdır. Düzeltme, bu bloğu içeren her node üzerinde ayrıca uygulanmalıdır.

9. Secondary Node'ları MongoDB 6.0'dan 7.0'a Güncelleme​

Her secondary node üzerinde sırasıyla uygulanır.

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

Yapılandırmadaki journal bloğunu kaldırın:

sudo cp -a /etc/mongod.conf /etc/mongod.conf.bak
sudo sed -i '/^\s*journal:/,/^\s*enabled:/d' /etc/mongod.conf
sudo grep -n journal /etc/mongod.conf # çıktı boş olmalıdır
bilgi

Yalnızca enabled: true alt satırını silmek yeterli değildir; journal: anahtarının kendisi de geçersizdir. İşlem sırasında storage: ve dbPath: satırlarının YAML girintisi korunmalıdır.

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()

10. Primary Rolündeki Bir Node'u Secondary Rolüne Çekme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

Primary'yi düşürün:

rs.stepDown()

Yeni primary'nin seçildiğini doğrulayın:

rs.status()

11. Primary Rolünü Bırakan Node'u MongoDB 6.0'dan 7.0'a Güncelleme​

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

Yapılandırmadaki journal bloğunu kaldırın:

sudo cp -a /etc/mongod.conf /etc/mongod.conf.bak
sudo sed -i '/^\s*journal:/,/^\s*enabled:/d' /etc/mongod.conf
sudo grep -n journal /etc/mongod.conf # çıktı boş olmalıdır

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()

12. MongoDB 7.0 Özellik Uyumu (FCV) Güncelleme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
use admin

Mevcut özellik uyumunu kontrol edin:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })

Özellik uyumunu güncelleyin:

db.adminCommand({ setFeatureCompatibilityVersion: "7.0", confirm: true })

MongoDB 7.0'dan 8.0'a Yükseltme​

13. Secondary Node'ları MongoDB 7.0'dan 8.0'a Güncelleme​

Her secondary node üzerinde sırasıyla uygulanır.

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()

14. Primary Rolündeki Bir Node'u Secondary Rolüne Çekme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

Primary'yi düşürün:

rs.stepDown()

Yeni primary'nin seçildiğini doğrulayın:

rs.status()

15. Primary Rolünü Bırakan Node'u MongoDB 7.0'dan 8.0'a Güncelleme​

MongoDB servisini durdurun:

sudo systemctl stop mongod

Paketleri kurun (çevrimdışı, yerel dizinden):

cd <paket-dizini>
sudo dnf install -y ./*.rpm

MongoDB servisini başlatın:

sudo systemctl start mongod
sudo systemctl status mongod

Replica set durumunu kontrol edin:

mongosh mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
rs.status()

16. MongoDB 8.0 Özellik Uyumu (FCV) Güncelleme​

Primary node'a bağlanın:

mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
use admin

Mevcut özellik uyumunu kontrol edin:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })

Özellik uyumunu güncelleyin:

db.adminCommand({ setFeatureCompatibilityVersion: "8.0", confirm: true })