Ana içeriğe geç

MongoDB Sürüm Yükseltme

uyarı

Çok Önemli

Çalışma gerçekleştirilmeden önce MongoDB yedeği alınmalıdır:

mongodump --host <IP_ADDRESS> --port=25080 --username=<USERNAME> --password=<PASSWORD> --authenticationDatabase=admin --gzip --archive=/<DIRECTORY>/apinizer-backup-v<CURRENT_VERSION>--<DATE>--1.archive
not

Bu örnek Ubuntu 22.04 üzerinde gerçekleştirilmiştir.

MongoDB 4.4'ten 5.0'a Yükseltme

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

İlk olarak, tüm MongoDB secondary node'larının her biri teker teker 5.0 sürümüne güncellenir.

MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 5.0 repository'sini ekleyin
# MongoDB 5.0 anahtarı eklenir
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -

# MongoDB 5.0 Repository'si eklenir
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

sudo apt update
MongoDB 5.0'ı yükleyin
uyarı

Güncellemeyi yüklerken soracağı config dosyasını güncelleme sorusuna N ile cevap vererek mevcut konfigürasyon dosyanızı korumanız gereklidir.

sudo apt install -y mongodb-org=5.0.6 mongodb-org-server=5.0.6 mongodb-org-shell=5.0.6 mongodb-org-mongos=5.0.6 mongodb-org-tools=5.0.6
uyarı

Çok Önemli

Yükleme esnasında sistem config dosyasının yeniden yazıp yazmayacağını sorar, burada eğer yanlışlıkla konfigürasyon dosyası ezilirse eski ayara döndürülmesi gerekir.

# sudo vi /etc/mongod.conf
# Eski dosya varsayılan olarak aşağıdaki gibidir
storage:
dbPath: /var/lib/mongodb
wiredTiger:
engineConfig:
cacheSizeGB: 2

systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log

net:
port: 25080
bindIp: 0.0.0.0

replication:
replSetName: apinizer-replicaset

security:
authorization: enabled
keyFile: /etc/mongodb/keys/mongo-key

setParameter:
transactionLifetimeLimitSeconds: 300

processManagement:
timeZoneInfo: /usr/share/zoneinfo
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumu kontrol edilir:

mongo mongodb://<NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

# Replica-Set'in Durumu Kontrol Edilir
rs.status()

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

Primary node'a bağlanılıp primary node'un görevini secondary'e düşürerek yeni bir primary node seçilmesi sağlanır.

Primary Node'a bağlanın
mongo mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p
Primary Node'u Secondary Node'a düşürün
# Primary Node'u Secondary Node'a düşürülür
rs.stepDown()
Yeni Primary Node'u kontrol edin

Biraz bekleyerek Secondary Node'lardan birisinin Primary Node olduğu kontrol edilir:

rs.status()

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

MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 5.0 repository'sini ekleyin
# MongoDB 5.0 anahtarını ekleyin ve repository'i güncellenir
wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/5.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-5.0.list

sudo apt update
MongoDB 5.0'ı yükleyin
uyarı

Güncellemeyi yüklerken soracağı config dosyasını güncelleme sorusuna N ile cevap vererek mevcut konfigürasyon dosyanızı korumanız gereklidir.

sudo apt install -y mongodb-org=5.0.6 mongodb-org-server=5.0.6 mongodb-org-shell=5.0.6 mongodb-org-mongos=5.0.6 mongodb-org-tools=5.0.6
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumu kontrol edilir:

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

# Replica-Set'in durumu kontrol edilir
rs.status()

4) MongoDB 5.0 Özellik Uyumu Kontrolü

Bütün Node'lar MongoDB 5.0'a geçtikten sonra, MongoDB 6.0'a geçiş yapmadan önce özellik uyumluluğu ayarı 5.0'a ayarlanır (Primary Node'da).

Primary Node'a bağlanın
mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

use admin
Özellik uyumluluğunu kontrol edin

Aşağıdaki komutun çıktısı olarak özellik uyumu eğer 4 gözüküyorsa 5'e güncellenmesi gerekir:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })
Özellik uyumluluğunu güncelleyin

Eğer değer 5.0 değilse, bunu aşağıdaki komutla değiştirebilirsiniz:

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

Tüm MongoDB replicalarının 5.0 sürümüne geçtiğinden emin olduktan sonra, 6.0 sürümüne geçiş yapabilirsiniz. İlk olarak, tüm secondary node'ları sırayla güncelleyerek başlayın.

MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 6.0 repository'sini ekleyin
# MongoDB 6.0 anahtarını eklenir ve repository güncellenir
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

sudo apt update
MongoDB 6.0'ı yükleyin
# Güncelleme yüklenilir
sudo apt install -y mongodb-org=6.0.0 mongodb-org-server=6.0.0 mongodb-org-shell=6.0.0 mongodb-org-mongos=6.0.0 mongodb-org-tools=6.0.0
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumunu kontrol edin:

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

# Replica-Set'in durumu kontrol edilir
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 Node'u Secondary Node'a düşürün
# Primary Node'u Secondary Node'a düşürülür
rs.stepDown()
Yeni Primary Node'u kontrol edin

Biraz bekleyerek yükseltme yapılan Secondary Node'lardan birisinin Primary olduğu kontrol edilir:

rs.status()

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

MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 6.0 repository'sini ekleyin
# MongoDB 6.0 anahtarını eklenilir ve repository güncellenir
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list

sudo apt update
MongoDB 6.0'ı yükleyin
# Güncelleme yüklenilir
sudo apt install -y mongodb-org=6.0.0 mongodb-org-server=6.0.0 mongodb-org-shell=6.0.0 mongodb-org-mongos=6.0.0 mongodb-org-tools=6.0.0
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumunu kontrol edin:

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

# Replica-Set'in durumu kontrol edilir
rs.status()

8) MongoDB 6.0 Özellik Uyumu Kontrolü

Bütün Node'lar MongoDB 6.0'a geçtikten sonra, özellik uyumluluğu ayarı 6.0'a ayarlanır (Primary Node'da).

Primary Node'a bağlanın
mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

use admin
Özellik uyumluluğunu kontrol edin

Aşağıdaki komutun çıktısı olarak özellik uyumu eğer 5 gözüküyorsa 6'ya güncellenmesi gerekir:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })
Özellik uyumluluğunu güncelleyin

Eğer değer 6.0 değilse, bunu aşağıdaki komutla değiştirebilirsiniz:

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

MongoDB 6.0'dan 7.0'a Yükseltme

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

Tüm MongoDB replicalarının 6.0 sürümüne geçtiğinden emin olduktan sonra, 7.0 sürümüne geçiş yapabilirsiniz. İlk olarak, tüm secondary node'ları sırayla güncelleyerek başlayın.

MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 7.0 repository'sini ekleyin
# MongoDB 7.0 anahtarını eklenir ve repository güncellenir
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

sudo apt update
MongoDB 7.0'ı yükleyin
# Güncelleme yüklenilir
sudo apt install -y mongodb-org=7.0.0 mongodb-org-server=7.0.0 mongodb-org-shell=7.0.0 mongodb-org-mongos=7.0.0 mongodb-org-tools=7.0.0
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumunu kontrol edin:

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

# Replica-Set'in durumu kontrol edilir
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 Node'u Secondary Node'a düşürün
# Primary Node'u Secondary Node'a düşürülür
rs.stepDown()
Yeni Primary Node'u kontrol edin

Biraz bekleyerek yükseltme yapılan Secondary Node'lardan birisinin Primary olduğu kontrol edilir:

rs.status()

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

MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 7.0 repository'sini ekleyin
# MongoDB 7.0 anahtarını eklenir ve repository güncellenir
wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/7.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

sudo apt update
MongoDB 7.0'ı yükleyin
# Güncelleme yüklenilir
sudo apt install -y mongodb-org=7.0.0 mongodb-org-server=7.0.0 mongodb-org-shell=7.0.0 mongodb-org-mongos=7.0.0 mongodb-org-tools=7.0.0
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumunu kontrol edin:

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

# Replica-Set'in durumu kontrol edilir
rs.status()

12) MongoDB 7.0 Özellik Uyumu Kontrolü

Bütün Node'lar MongoDB 7.0'a geçtikten sonra, özellik uyumluluğu ayarı 7.0'a ayarlanır (Primary Node'da).

Primary Node'a bağlanın
mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

use admin
Özellik uyumluluğunu kontrol edin

Aşağıdaki komutun çıktısı olarak özellik uyumu eğer 6 gözüküyorsa 7'ye güncellenmesi gerekir:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })
Özellik uyumluluğunu güncelleyin

Eğer değer 7.0 değilse, bunu aşağıdaki komutla değiştirebilirsiniz:

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

Tüm MongoDB replicalarının 7.0 sürümüne geçtiğinden emin olduktan sonra, 8.0 sürümüne geçiş yapabilirsiniz. İlk olarak, tüm secondary node'ları sırayla güncelleyerek başlayın.

not

RHEL sunucularda yükseltme yapıyorsanız, paket yöneticisi apt yerine dnf olduğu için yükseltme komutları aşağıdaki şekilde değişir:

dnf clean all
dnf makecache

# Son sürüme güncellemek için
dnf upgrade mongodb-org\*
MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 8.0 repository'sini ekleyin
# MongoDB 8.0 anahtarını eklenir ve repository güncellenir
wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

sudo apt update
MongoDB 8.0'ı yükleyin
# Güncelleme yüklenilir
sudo apt install -y mongodb-org=8.0.0 mongodb-org-server=8.0.0 mongodb-org-shell=8.0.0 mongodb-org-mongos=8.0.0 mongodb-org-tools=8.0.0
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumunu kontrol edin:

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

# Replica-Set'in durumu kontrol edilir
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 Node'u Secondary Node'a düşürün
# Primary Node'u Secondary Node'a düşürülür
rs.stepDown()
Yeni Primary Node'u kontrol edin

Biraz bekleyerek yükseltme yapılan Secondary Node'lardan birisinin Primary olduğu kontrol edilir:

rs.status()

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

MongoDB servisini durdurun
sudo apt-mark unhold mongo*
sudo systemctl stop mongod
MongoDB 8.0 repository'sini ekleyin
# MongoDB 8.0 anahtarını eklenir ve repository güncellenir
wget -qO - https://www.mongodb.org/static/pgp/server-8.0.asc | sudo apt-key add -
echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

sudo apt update
MongoDB 8.0'ı yükleyin
# Güncelleme yüklenilir
sudo apt install -y mongodb-org=8.0.0 mongodb-org-server=8.0.0 mongodb-org-shell=8.0.0 mongodb-org-mongos=8.0.0 mongodb-org-tools=8.0.0
MongoDB servisini başlatın
sudo apt-mark hold mongo*
sudo systemctl start mongod
sudo systemctl status mongod
Replica set durumunu kontrol edin

Herhangi bir node'a bağlanarak replica set'in durumunu kontrol edin:

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

# Replica-Set'in durumu kontrol edilir
rs.status()

16) MongoDB 8.0 Özellik Uyumu Kontrolü

Bütün Node'lar MongoDB 8.0'a geçtikten sonra, özellik uyumluluğu ayarı 8.0'a ayarlanır (Primary Node'da).

Primary Node'a bağlanın
mongosh mongodb://<PRIMARY_NODE_IP>:25080 --authenticationDatabase "admin" -u "apinizer" -p

use admin
Özellik uyumluluğunu kontrol edin

Aşağıdaki komutun çıktısı olarak özellik uyumu eğer 7 gözüküyorsa 8'e güncellenmesi gerekir:

db.runCommand({ getParameter: 1, featureCompatibilityVersion: 1 })
Özellik uyumluluğunu güncelleyin

Eğer değer 8.0 değilse, bunu aşağıdaki komutla değiştirebilirsiniz:

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