UniFi Veritabanı Sorunlarını

UniFi Ağ Uygulamasındaki Veritabanı Sorunlarını Onarma

Giriş ve Belirtiler

Bakılacak şey:

  • Veri saklama süresi içinde raporlanmayan istatistikler. Tipik olarak, istatistikler yalnızca birkaç gün boyunca kayıt yapacak ve daha sonra kesilecek veya aralıklı olacaktır.
  • İstatistik içeren bir yedekleme yapamamak (7 günlük, 30 günlük vb.).
  • Yalnızca ayarlar yedeklemesi tamamlanamıyorsa, ace veritabanında bozulma veya alakasız başka bir şey olabilir.
  • UniFi Network uygulamasını açmaya çalışırken 400 hatası alıyorum.
  • Veritabanı hataları nedeniyle ağ uygulama hizmeti başlatılamıyor.
Kullanıcı İpucu:
UC-CK’de toplam verinin 2 GB’ı aşması gerekmez, yalnızca Mongo’nun genişlemesi için yeterince büyük olması gerekir. MongoDB sınırlamasından etkilenmeyen 64 bit makinelerde, ana bilgisayarda veritabanını onarmaya çalışırken sorunlara neden olabilecek genel alan sorunları da olabilir. df -hUniFi’nin veri depoladığı bölümün boş olup olmadığını görmek için bunu bir SSH oturumunda kontrol edin .

32-bit MongoDB Sınırlamaları

32 bit MongoDB koleksiyonları toplam 2 GB boyutuyla sınırlıdır. MMAPv1 depolama motorunu çalıştırırken bu, toplama toplama boyutlarını küçültmeye çalışırken sorunlara neden olabilir. MongoDB üzerinde bir kompakt komut çalıştırırken, veritabanı yeniden yazılır ve hata düzeltmesi yapılmadan birleştirilir. Bu işlem, depolama motoru MMAPv1 olduğunda UniFi OS Konsoluna (veya diğer Ağ uygulaması ana bilgisayarına) kullanılabilir disk alanı döndürmez.

32 bitlik bir MongoDB örneğinde bu değerli disk alanını geri almak, veritabanının onarılmasını gerektirecektir. Bu onarım, geçersiz girişler, bozulma veya koleksiyon ölçeklendirme sorunlarından şüphelenenler için gerekli olabilir. Bir veritabanı onarımını çalıştırabilmek için Bulut Anahtarının, mevcut veri kümesinin boyutuna ve 2 gigabayta eşit yeterli boş disk alanına sahip olması gerekir. Veri kümesi zaten db.repairDatabase() komutuyla devam edemeyecek kadar büyümüşse, bu sorunu çözmek için aşağıda yönergeler vardır.

NOT: UniFi Bulut Anahtarı (UC-CK)  aşağıdakileri kullanır:
  • 32-Bit mimari
  • MMAPv1
  • MongoDB Sürüm 2.4.10

Bulut Anahtarında Veri tabanı Nasıl Onarılır

1. mongo budama komut dosyasını indirin. Yazıldığı gibi, komut dosyası yalnızca son 7 güne ait girişleri tutacaktır. UniFi yönetimi için gerekli olan girişleri kaldırmaz. Aşağıdaki komutu çalıştırarak bunu yapın:

2. UniFi hizmetini durdurun

servis unifi durağı
3. UniFi hizmeti, mongo sürecini kapatacaktır. UniFi hizmetinin tamamen kapatıldığından emin olun. Sorgu ölçütlerinde yer alan veri girişlerini ve boş kullanılmayan disk alanı alanını sıkıştırmak için veritabanını onarın.
mongod --dbpath /usr/lib/unifi/data/db --smallfiles --logpath /usr/lib/unifi/logs/server.log --repair
NOT:Disk alanından tasarruf etmek için veritabanını budamanız gerekiyorsa, 4-7 arasındaki adımlar isteğe bağlıdır.

4. Bu komutla mongo’yu yeniden başlatın:

mongod --dbpath /usr/lib/unifi/data/db --smallfiles --logpath /usr/lib/unifi/logs/server.log --journal --for
NOT: Mongo veritabanınızda günlük kaydı etkinleştirilmemiş olabilir. Öyleyse, yukarıdaki komutta –journal seçeneğini kaldırın.

stat5. Soruna neden olan koleksiyonları budamak için komut dosyasını yürütün :

mongo </tmp/CK_repair.js

6. Mongo sunucusunu şu komutla kapatın:

mongod --dbpath /usr/lib/unifi/data/db --smallfiles --logpath /usr/lib/unifi/logs/server.log --shutdown
NOT: CK_repair.js betiğindeki son komut “db.repairDatabase()”dir. Mongo sunucusu çalışırken istatistik koleksiyonları tamir edilemeyecek kadar büyümüşse, bu bir hataya neden olabilir. Komut dosyasını çalıştırırken böyle bir hata görürseniz, 3. adımda komutu çalıştırarak veritabanını komut satırından bir kez daha onarmanız gerekir.

7. Son olarak, UniFi hizmetini yeniden başlatın:

servis unifi başlangıcı

Bulut Anahtarı artık Ağ uygulamasını çalıştırabilmelidir. Hala veritabanı sorunlarınız varsa lütfen Ubiquiti Destek ile iletişime geçin . 

Debian tabanlı Linux’ta Veritabanı Nasıl Onarılır

1. UniFi hizmetini durdurun

servis unifi durağı

2. Derginin bozulduğu bazı durumlarda, veritabanını başka bir konuma taşımak için, veritabanını onarmadan önce aşağıdaki komutu çalıştırmak yardımcı olacaktır:

mv -vi /usr/lib/unifi/data/db/journal /usr/lib/unifi/data/db/journal-$(tarih -I)

3. Veritabanını şu komutla onarın:

mongod --dbpath /usr/lib/unifi/data/db --smallfiles --logpath /usr/lib/unifi/logs/server.log --repair

4. Son olarak, UniFi hizmetini yeniden başlatın:

servis unifi başlangıcı
NOT: Bu işlem root olarak yapılmışsa dosya sahipliği değişmiş olabilir. Bu, şu şekilde değiştirilebilir:
chown -R unifi:unifi /usr/lib/unifi/data/db/ 
chown -R unifi:unifi /usr/lib/unifi/logs/server.log

Hala veritabanı sorunlarından şüpheleniyorsanız, lütfen Ubiquiti Destek ile iletişime geçin .

macOS’ta Veritabanı Nasıl Onarılır

1. Çalışma Dizini:  Geçici bir çalışma dizini oluşturun. Onarım amacıyla bu dizine /repair diyeceğiz. Terminalde:

mkdir ~/tamir

2. MongoDB’yi indirin: macOS UniFi yükleyicisi mongo ikili dosyasını içermez. MongoDB resmi indirme web sitesini ziyaret edin ve sunucunuzun CPU mimarisine karşılık gelen .tgz sürümünü indirin. Ayrıca 2.4.14’ü doğrudan buradan indirebilirsiniz: 2.4.14.tgz .

3. Mongo’yu Çıkarın:  İndirilen paketi çalışma dizininize taşıyın ve çift tıklayarak veya istediğiniz uygulamayı kullanarak çıkarın.

4. Mongo’yu Çalışma Dizinine Taşıyın:  bin/mongo ikili dosyasını bulun ve çalışma dizininize kopyalayın. Bu noktada, indirilen .tgz paketi ve ekstra çıkarılan dosyalar sadece mongo ikili dosyasına ihtiyacımız olduğu için silinebilir.

5. Terminal ve komutlar:  Terminal’i açın ve çalışma dizininize gidin

cd ~/tamir

6. UniFi’yi Kapatın/Durdurun.

7. Mongo Veritabanını Onarın:

mongod --dbpath ~/Library/Application\ Support/UniFi/data/db --smallfiles --logpath ~/Library/Application\ Support/UniFi/logs/server.log --repair

8. Finder’dan UniFi uygulamasını açın:

-n /Applications/UniFi.app'yi açın

Hala veritabanı sorunlarından şüpheleniyorsanız, lütfen Ubiquiti Destek ile iletişime geçin . 

Windows’ta Bir Veritabanı Nasıl Onarılır

1. MongoDB’yi İndirin: Windows UniFi yükleyicisi mongo ikili dosyasını içermez. MongoDB resmi indirme web sitesini ziyaret edin ve CPU mimarinize karşılık gelen .zip sürümünü indirin.
NOT : Önerilen MongoDB sürümü 3.4.x’tir. 3.4.23’ü doğrudan buradan indirebilirsiniz:  3.4.23.zip .

2. Mongod.exe’yi çıkarın

\bin\mongod.exe dosyasını istediğiniz bir çalışma dizinine çıkarın. Bu örnekte, C:\repair\ kullanacağız. .zip dosyasında bulunan diğer tüm dosyaları yok sayabilirsiniz.

3. UniFi’yi Kapatın/Durdurun

4. Komut İstemini  Açın: WINDOWS + R tuşlarına basarak komut istemini açın. Açılır pencerede cmd yazın ve ENTER tuşuna basın.

5. Çalışma Dizinine Girin

cd C:\tamir\

6. UniFi’yi Kapatın/Durdurun.

7. Mongo Veritabanını Onarın 

mongod.exe --dbpath "%userprofile%\Ubiquiti UniFi\data\db" --smallfiles --logpath "%programfiles%\Ubiquiti UniFi\logs\server.log" –repair

8. UniFi uygulamasını açın

Hala veritabanı sorunlarından şüpheleniyorsanız, lütfen Ubiquiti Destek ile iletişime geçin . 

MMAPv1’den WiredTiger’a Nasıl Geçilir?

DİKKAT: Bu bölüm, UC-CK G1 dahil olmak üzere 32 bit mimarili ana bilgisayarlar için geçerli değildir.

Ağ uygulaması tekrar işlevsel hale geldikten sonra, bir kullanıcı onu WiredTiger depolama motoruna geçirmek isteyebilir.

Ne kadar alan kullanıldığını doğrulamak için aşağıdaki komutu çalıştırın:

du -shc /usr/lib/unifi/data/db/ace* /usr/lib/unifi/data/db/journal/* /usr/lib/unifi/data/db/local* | grep toplam

Hangi  MongoDB sürümünün kullanıldığını doğrulamak için aşağıdakileri çalıştırın:

mongod --versiyon | grep "db sürümü"

Hangi depolama altyapısı sürümünün kullanıldığını doğrulamak için aşağıdaki iki komutu çalıştırın:

mongo yerel ana bilgisayar: 27117
db.serverStatus().storageEngine.name

WiredTiger’a nasıl geçiş yapılır

1.  Ayarlar > Bakım > Yedekleme altında istenen saklama ayarlarıyla bir yedek oluşturun.

2. UniFi’yi Windows veya macOS’tan kaldırın. UniFi’yi Debian tabanlı Linux’tan şu komutla temizleyin:

sudo dpkg -P birleşik

3. UniFi’yi Windows veya macOS’ta yeniden yükleyin. UniFi’yi aşağıdaki komutlarla Debian tabanlı Linux’a yeniden yükleyin:

cd /tmp/ 
wget <indirmek için https bağlantısı> 
sudo dpkg -i unifi_sysvinit_all.deb

4. UniFi Kurulum Sihirbazı’nda 1. adımdaki yedeklemeyi geri yükleyin.

İlgili Makaleler

UniFi – Eski Verileri Kaldırma (Budama) ve Mongo Veritabanı Boyutunu Ayarlama