Автобиография
Програми
Web Blog B
 
O Y A N   B O Y C H E
V Скинове & Fonts
Книга за Гости Игри
Лични Снимки Михаел Шумахер
Моите Приятели       Връзки
Меню
   
Инфо
 
Вашето IP:
 3.145.10.68
 
Дата и час:
21 Ноември 2024
20:31:37
 
Последна актуализация:
04 Януари 2024
 
Вие сте посетител №:
11.2024г. 1919
(2024г.) (0)

Посетители - ботове:
11.2024г. 1919
(2024г.) (42629)

 
 

Valid XHTML 1.0 Transitional

 
Новини
Проблем със cyrus-imapd след обновяване на db
Gentoo Linux, db-4.3.29-r2 и cyrus-imapd-2.2.12-r4
Вторник, 21 Август 2007
Oracle Berkeley DB (db) е водеща система за управление на бази от данни (СУБД) с отворен код. Системата се интегрира лесно с различни приложения, като предоставя в ръцете на разработчиците бързо, надеждено, постоянно и с почти нулева администрация средство за локално съхранение на данни. Oracle Berkeley DB е библиотека, която директно се свързва с вашите приложения. Приложенията, които я използват, извикват прости функции към базата от данни (локално), за разлика от популярните релационни бази от данни (които изпращат съобщения на отдалечен сървър). По този начин Oracle Berkeley DB елиминира евентуалните проблеми и неудобства в представянето на клиент-сървер архитектурата. Избягват се също така и SQL заявките към базата от данни и се дава възможност на приложенията с предсказуеми схеми да стартират значително по-бързо.

Това е дефиницията, която ни дават на сайта на Oracle. Не знам колко е бърза и надежна СУБД, но на мен лично ми създаде достатъчно проблеми. При обновлението на една от моите машини с операционна система Gentoo Linux се натъкнах на досаден проблем с db4 или още казано Oracle Berkeley DB. Доколкото разбрах от Интернет проблема е в несъвместимост м/у версиите на Oracle Berkeley DB. Нямам точна представа къде точно е проблема, но за по-любознателните от мен има достатъчно информация в Интернет, част от нея съм систематизирал в линковете в края на статията. Тук само ще дам информация как аз си реших проблема, не знам дали е 100% правилно или не, но при мен свърши работа :).

На проблемът се натъкнах благодарение на cyrus-imapd, който използвам за съхранение на електронната ми поща. Той (cyrus-imapd) от своя страна използва Oracle Berkeley DB за съхранение на своите данни, като например съществуващите пощенски кутии и други. Сърверът cyrus-imapd не функционираше правилно и бълваше грешки в логовете, които най-накрая видях и аз :).

Типичните грешки, които може да видите са в /var/log/syslog:
Цитат
Aug 20 10:12:43 hostname ctl_cyrusdb[4964]: DBERROR ^Pà^F^H: db4
Aug 20 10:12:43 hostname ctl_cyrusdb[4964]: DBERROR ^Pà^F^H: db4
Aug 20 10:12:44 hostname ctl_cyrusdb[4964]: recovering cyrus databases
Aug 20 10:12:44 hostname ctl_cyrusdb[4964]: DBERROR ^Pà^F^H: db4
Aug 20 10:12:44 hostname ctl_cyrusdb[4964]: DBERROR ^Pà^F^H: db4
Aug 20 10:12:44 hostname master[4944]: ready for work
Aug 20 10:12:44 hostname ctl_cyrusdb[5278]: DBERROR ^Pà^F^H: db4
Aug 20 10:12:45 hostname tls_prune[5276]: DBERROR <80>^A^G^H: db4
Aug 20 10:12:46 hostname cyr_expire[5277]: DBERROR @é^F^H: db4
Aug 20 10:27:49 hostname master[4944]: exiting on SIGTERM/SIGINT
Aug 20 10:28:39 hostname master[5436]: process started
Aug 20 10:28:39 hostname ctl_cyrusdb[5439]: DBERROR ^Pà^F^H: db4
Aug 20 10:28:39 hostname ctl_cyrusdb[5439]: recovering cyrus databases
Aug 20 10:28:39 hostname ctl_cyrusdb[5439]: DBERROR ^Pà^F^H: db4
Aug 20 10:28:39 hostname ctl_cyrusdb[5439]: DBERROR ^Pà^F^H: db4
Aug 20 10:28:39 hostname master[5436]: ready for work
Aug 20 10:28:39 hostname tls_prune[5445]: DBERROR <80>^A^G^H: db4
Aug 20 10:28:39 hostname cyr_expire[5446]: DBERROR @é^F^H: db4
Aug 20 10:28:39 hostname ctl_cyrusdb[5447]: DBERROR ^Pà^F^H: db4
Aug 20 10:30:49 hostname imap[5469]: DBERROR @­ ^H: db4
Aug 20 10:30:49 hostname master[5436]: service imap pid 5469 in READY state: terminated abnormally
Aug 20 10:30:49 hostname imap[5470]: DBERROR @­ ^H: db4
Aug 20 10:30:49 hostname master[5436]: service imap pid 5470 in READY state: terminated abnormally
Aug 20 10:30:49 hostname imap[5471]: DBERROR @­ ^H: db4


Още грешки има в /var/log/messages:
Цитат
Aug 20 10:30:47 hostname master[5469]: about to exec /usr/lib/cyrus/imapd
Aug 20 10:30:49 hostname imap[5469]: DBERROR @­ ^H: db4
Aug 20 10:30:49 hostname imap[5469]: DBERROR: critical database situation
Aug 20 10:30:49 hostname master[5436]: process 5469 exited, status 75
Aug 20 10:30:49 hostname master[5436]: service imap pid 5469 in READY state: terminated abnormally
Aug 20 10:30:49 hostname master[5470]: about to exec /usr/lib/cyrus/imapd
Aug 20 10:30:49 hostname imap[5470]: DBERROR @­ ^H: db4
Aug 20 10:30:49 hostname imap[5470]: DBERROR: critical database situation
Aug 20 10:30:49 hostname master[5436]: process 5470 exited, status 75


А ето и моето съвсем просто решение на проблема (използвайте root потребителя):
Цитат
hostname ~ # /etc/init.d/cyrus stop
hostname ~ # cd /var/imap/db
hostname ~ # rm __db.*
hostname ~ # /etc/init.d/cyrus start


Така проблемът вече е решен (поне при мен). Проверете своите логове, за да сте напълно убедени в разрешаването на неприятната ситуация.

Ако продължавате да имате проблеми, моля прочете информацията предоставена на страниците описани по долу.

Препоръчително е винаги преди обновяване на db или cyrus-imapd да правите резерно копие на базата от данни в текстови вид:
Примерен код
hostname ~ # cd /var/imap/
hostname ~ # /usr/lib/cyrus/ctl_mboxlist -d > mailboxes.txt


Конвертирането обратно в db формат:
Примерен код
hostname ~ # cd /var/imap/
hostname ~ # /usr/lib/cyrus/ctl_mboxlist -d < mailboxes.txt

Повече за това може да намерите на втората хипервръзка по долу.

А ето и точните версии на използваните приложения, за които стана дума:
  • sys-libs/db-4.3.29-r2
  • net-mail/cyrus-imapd-2.2.12-r4

Пожелавам на всички успех в начинанието :)!


Публикувано в Софтуер


<< Назад
© Боян Бойчев