Odoo oferuje unikalną możliwość zarządzania wieloma bazami danych w ramach jednej instancji systemu. Jest to niezwykle przydatna funkcjonalność dla firm zarządzających kilkoma podmiotami, agencji obsługujących wielu klientów czy zespołów programistycznych pracujących nad różnymi projektami. W tym artykule szczegółowo wyjaśnimy, jak skutecznie konfigurować i zarządzać wieloma bazami danych w Odoo.
Dlaczego warto używać wielu baz danych w Odoo?
Wykorzystanie wielu baz danych w jednej instancji Odoo przynosi szereg korzyści operacyjnych i biznesowych:
- Izolacja danych - każda baza danych to oddzielna baza PostgreSQL, co zapewnia pełną separację informacji między projektami czy klientami
- Optymalizacja zasobów - jedna instancja Odoo wymaga mniej zasobów serwerowych niż kilka osobnych instalacji
- Łatwiejsze zarządzanie - aktualizacje i konfiguracja systemu wykonywane są centralnie dla wszystkich baz
- Środowiska testowe - możliwość utworzenia dedykowanych baz do testowania bez wpływu na produkcję
- Oszczędność kosztów - redukcja wydatków na infrastrukturę i administrację
Podstawowe wymagania i przygotowanie
Zanim przystąpisz do tworzenia wielu baz danych w jednej instancji Odoo, upewnij się, że masz:
- Działającą instalację Odoo (Community lub Enterprise) - wersja 14 lub nowsza
- Dostęp do pliku konfiguracyjnego odoo.conf
- Uprawnienia administratora systemu
- Wystarczające zasoby serwera (RAM, CPU, przestrzeń dyskowa) - minimum 2GB RAM na bazę dla komfortowej pracy
- Skonfigurowany PostgreSQL (wersja 12 lub nowsza)
Jeśli dopiero zaczynasz pracę z Odoo, zapoznaj się z naszym przewodnikiem jak zainstalować Odoo 19 Community vs Enterprise.
Konfiguracja pliku odoo.conf dla wielu baz danych
Kluczowym elementem umożliwiającym dodanie wielu baz danych w jednej instancji Odoo jest odpowiednia konfiguracja pliku odoo.conf. Oto najważniejsze parametry:
Podstawowe ustawienia
Otwórz plik konfiguracyjny Odoo (zwykle zlokalizowany w /etc/odoo/odoo.conf lub ~/.odoorc) i skonfiguruj następujące parametry:
[options]
db_host = localhost
db_port = 5432
db_user = odoo
db_password = twoje_haslo
list_db = True
dbfilter = .*
Szczegółowe informacje o wszystkich parametrach znajdziesz w naszym artykule jak skonfigurować plik odoo.conf.
Parametr list_db
Parametr list_db = True umożliwia wyświetlanie listy wszystkich dostępnych baz danych w interfejsie logowania. Jest to domyślne zachowanie Odoo w środowisku deweloperskim. Uwaga: W środowisku produkcyjnym zaleca się ustawienie list_db = False ze względów bezpieczeństwa - uniemożliwia to potencjalnym atakującym poznanie listy wszystkich baz danych w systemie.
Filtrowanie baz danych - dbfilter
Parametr dbfilter jest kluczowy przy zarządzaniu wieloma bazami danych w jednej instancji Odoo. Określa on, które bazy danych są dostępne w zależności od domeny lub innych kryteriów. Przyjmuje wyrażenia regularne:
dbfilter = .*- pokazuje wszystkie bazy danych (przydatne w środowisku deweloperskim)dbfilter = ^%d$- wyświetla bazę danych pasującą do nazwy domeny (bez www i rozszerzenia) - najczęściej używana konfiguracja w produkcjidbfilter = ^%h$- używa pełnej nazwy hosta (włącznie z subdomeną)dbfilter = firma1|firma2|firma3- ogranicza dostęp tylko do wymienionych baz
Alternatywnie, dla scenariuszy z pojedynczą bazą danych, możesz użyć parametru db_name zamiast dbfilter.
Zarządzanie hasłem głównym
Hasło główne (master password) możesz ustawić na dwa sposoby:
admin_passwd = twoje_silne_haslo
Lub przez zmienną środowiskową (bezpieczniejsze):
export ODOO_MASTER_PASSWORD='twoje_silne_haslo'
Domyślne hasło to 'admin' i musi zostać zmienione przed wdrożeniem produkcyjnym.
Tworzenie nowej bazy danych przez interfejs webowy
Najłatwiejszym sposobem na dodanie wielu baz danych w jednej instancji Odoo jest wykorzystanie wbudowanego interfejsu webowego:
Krok 1: Dostęp do menedżera baz danych
Przejdź do adresu: http://twoja-domena:8069/web/database/selector
Uwaga: Upewnij się, że parametr list_db jest ustawiony na True w pliku konfiguracyjnym. W nowszych wersjach Odoo możesz także potrzebować parametru db_manager_enabled = True (domyślnie włączony w Community, może być wyłączony w Enterprise).
Krok 2: Tworzenie nowej bazy
W menedżerze baz danych kliknij przycisk 'Create' i wypełnij formularz:
- Master Password - hasło główne Odoo (domyślnie 'admin', powinno zostać zmienione)
- Database Name - unikalna nazwa nowej bazy danych (bez spacji, najlepiej małe litery i podkreślenia)
- Email - adres e-mail administratora
- Password - hasło administratora nowej bazy (nie mylić z master password)
- Language - język interfejsu (Polski)
- Country - kraj (Polska)
- Demo data - czy załadować dane demonstracyjne (zalecane dla baz testowych, niezalecane dla produkcji)
Krok 3: Inicjalizacja bazy
Po kliknięciu 'Continue' system automatycznie utworzy nową bazę PostgreSQL, zainstaluje podstawowe moduły i przekieruje Cię do nowo utworzonej instancji. Proces ten może potrwać od kilku do kilkunastu minut w zależności od zasobów serwera i wybranej opcji danych demonstracyjnych.
Tworzenie bazy danych przez wiersz poleceń
Dla zaawansowanych użytkowników i w scenariuszach automatyzacji przydatne jest tworzenie baz danych przez CLI:
odoo-bin -c /etc/odoo/odoo.conf -d nazwa_bazy -i base --stop-after-init --without-demo=all
Parametry:
-c /etc/odoo/odoo.conf- ścieżka do pliku konfiguracyjnego-d nazwa_bazy- nazwa nowej bazy danych-i base- instaluje podstawowy moduł (wymagany dla każdej bazy Odoo)--stop-after-init- zatrzymuje proces po inicjalizacji--without-demo=all- nie ładuje danych demonstracyjnych (opcjonalne)
Dla instalacji zainstalowanych przez menedżer pakietów, użyj:
/usr/bin/odoo -c /etc/odoo/odoo.conf -d nazwa_bazy -i base --stop-after-init
Zarządzanie wieloma bazami danych
Przełączanie między bazami
Po zalogowaniu do Odoo możesz przełączać się między bazami danych poprzez:
- Wylogowanie i ponowne logowanie z wyborem innej bazy (jeśli list_db = True)
- Bezpośrednie przejście do
/web/database/selector - Używanie różnych domen z odpowiednią konfiguracją dbfilter (zalecane w produkcji)
- Bezpośrednie dodanie parametru db do URL:
?db=nazwa_bazy(jeśli nie jest zablokowane przez dbfilter)
Kopie zapasowe wielu baz
Regularne wykonywanie kopii zapasowych jest krytyczne przy zarządzaniu wieloma bazami. Każda baza danych Odoo (będąca oddzielną bazą PostgreSQL) powinna być osobno archiwizowana. Szczegółowe instrukcje znajdziesz w artykule jak wykonać kopię zapasową bazy danych Odoo.
W przypadku konieczności przywrócenia danych, skorzystaj z naszego przewodnika jak przywrócić bazę danych Odoo z backupu.
Wyłączenie menedżera baz danych w produkcji
Ze względów bezpieczeństwa w środowisku produkcyjnym zaleca się wyłączenie menedżera baz danych przez dodanie do pliku konfiguracyjnego:
list_db = False
db_manager_enabled = False
To uniemożliwi dostęp do interfejsu zarządzania bazami przez przeglądarkę. Zarządzanie bazami będzie możliwe tylko przez CLI lub bezpośrednio w PostgreSQL.
Pamiętaj o restarcie usługi Odoo po zmianie. Jeśli skonfigurowałeś Odoo jako usługę systemd, sprawdź jak uruchomić Odoo jako usługę systemd.
Zaawansowana konfiguracja z wieloma domenami
Przy zarządzaniu wieloma bazami danych w jednej instancji Odoo często zachodzi potrzeba przypisania każdej bazy do oddzielnej domeny lub subdomeny.
Konfiguracja nginx dla wielu baz
Używając nginx jako reverse proxy, możesz kierować różne domeny do odpowiednich baz danych:
server {
server_name klient1.example.com;
location / {
proxy_pass http://127.0.0.1:8069;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
W pliku odoo.conf ustaw:
dbfilter = ^%d$
proxy_mode = True
Parametr proxy_mode = True jest kluczowy dla poprawnego działania Odoo za reverse proxy. Ta konfiguracja automatycznie wybierze bazę 'klient1' dla domeny klient1.example.com. Więcej szczegółów znajdziesz w artykule jak ustawić nginx jako reverse proxy dla Odoo.
Zabezpieczenie SSL dla każdej domeny
Każda domena powinna być zabezpieczona certyfikatem SSL. Zapoznaj się z przewodnikiem jak skonfigurować HTTPS/SSL dla Odoo, aby prawidłowo skonfigurować szyfrowanie dla wszystkich baz danych. Możesz użyć Let's Encrypt do automatycznego generowania certyfikatów dla wielu domen.
Optymalizacja wydajności dla wielu baz danych
Zarządzanie wieloma bazami danych w jednej instancji Odoo wymaga odpowiedniej optymalizacji zasobów:
Konfiguracja workers
Parametr workers w pliku odoo.conf określa liczbę procesów roboczych obsługujących żądania. Przy wielu bazach danych jest to kluczowy parametr wydajności:
workers = 4
max_cron_threads = 2
Ogólna zasada: liczba workers = (liczba_rdzeni_CPU × 2) + 1
Jednak przy wielu aktywnych bazach danych warto eksperymentować z wartościami. Dla 4-rdzeniowego serwera z 2-3 aktywnymi bazami dobrym punktem startowym jest 6-8 workers. Pamiętaj, że każdy worker zużywa pamięć RAM.
Limity pamięci
Ustaw limity pamięci dla każdego workera aby zapobiec przeciążeniu serwera:
limit_memory_hard = 2684354560
imit_memory_soft = 2147483648
limit_time_cpu = 600
limit_time_real = 1200
Te wartości (2.5GB hard, 2GB soft) są odpowiednie dla większości zastosowań. Worker przekraczający soft limit zostanie zrestartowany po zakończeniu bieżącego żądania, a przekraczający hard limit - natychmiast.
Optymalizacja PostgreSQL
Dostosuj ustawienia PostgreSQL do obsługi wielu baz danych (edytuj plik postgresql.conf):
shared_buffers = 512MB
effective_cache_size = 2GB
work_mem = 16MB
maintenance_work_mem = 128MB
max_connections = 200
checkpoint_completion_target = 0.9
Te wartości są odpowiednie dla serwera z 4-8GB RAM obsługującego kilka baz danych. Dla większych instalacji dostosuj proporcjonalnie. Pamiętaj, że shared_buffers powinno wynosić około 25% dostępnej RAM, a effective_cache_size około 50-75% RAM.
Bezpieczeństwo wielu baz danych
Przy zarządzaniu wieloma bazami danych szczególną uwagę należy zwrócić na bezpieczeństwo:
- Ukryj listę baz - ustaw
list_db = Falsew produkcji - Wyłącz menedżer baz - dodaj
db_manager_enabled = Falsew produkcji - Silne hasło główne - zmień domyślne hasło admin_passwd na złożone (min. 20 znaków)
- Dostęp do menedżera - ogranicz dostęp do /web/database/selector przez firewall lub nginx
- Osobne uprawnienia - każda baza powinna mieć niezależnych administratorów z różnymi hasłami
- Regularne backupy - automatyzuj tworzenie kopii zapasowych każdej bazy (minimum raz dziennie)
- Monitorowanie - śledź logi każdej bazy osobno, konfiguruj alerty
- Aktualizacje bezpieczeństwa - regularnie aktualizuj Odoo i PostgreSQL
Migracja i klonowanie baz danych
Dodawanie wielu baz danych w jednej instancji Odoo często wiąże się z koniecznością klonowania lub migracji istniejących danych:
Klonowanie przez interfejs
W menedżerze baz danych (jeśli db_manager_enabled = True) dostępna jest opcja 'Duplicate Database', która tworzy identyczną kopię wybranej bazy. Wymagane jest podanie hasła głównego (master password) oraz nazwy dla nowej bazy. Klonowana jest zarówno struktura bazy PostgreSQL jak i filestore (załączniki, obrazy).
Klonowanie przez PostgreSQL
Możesz także sklonować bazę bezpośrednio w PostgreSQL:
createdb -O odoo -T baza_zrodlowa baza_docelowa
Następnie skopiuj filestore ręcznie:
cp -r ~/.local/share/Odoo/filestore/baza_zrodlowa ~/.local/share/Odoo/filestore/baza_docelowa
Migracja z innego serwera
Jeśli chcesz przenieść bazę z innej instancji Odoo do istniejącej instancji multi-database, skorzystaj z przewodnika jak przenieść Odoo na inny serwer. Proces obejmuje eksport bazy, transfer plików i import do docelowej instancji.
Różnice między Community i Enterprise
W kontekście zarządzania wieloma bazami danych istnieje kilka różnic między wersjami:
- Odoo Community - pełna funkcjonalność multi-database, menedżer baz domyślnie włączony
- Odoo Enterprise - te same możliwości, ale administrator może globalnie wyłączyć dostęp do menedżera baz
- Odoo.sh i Odoo Online - zarządzanie bazami odbywa się przez dedykowany panel, nie przez standardowy menedżer
Funkcjonalność multi-database jest dostępna w obu wersjach bez ograniczeń.
Najlepsze praktyki
Wdrażając wiele baz danych w jednej instancji Odoo, zastosuj następujące najlepsze praktyki:
- Konwencja nazewnictwa - używaj spójnych nazw baz (np. firma_prod, firma_test, firma_dev)
- Dokumentacja - prowadź rejestr wszystkich baz z ich przeznaczeniem, administratorami i datą utworzenia
- Monitoring zasobów - regularnie sprawdzaj wykorzystanie CPU, RAM i dysku dla każdej bazy osobno
- Polityka aktualizacji - testuj aktualizacje najpierw na sklonowanej bazie testowej
- Separacja modułów - dla projektów wymagających różnych wersji modułów rozważ osobne katalogi addons z parametrem
addons_path - Backup strategy - implementuj automatyczne backupy z retencją (np. 7 dni dzienne, 4 tygodnie, 12 miesięcy)
- Limity wielkości - monitoruj rozmiar baz i filestore, ustaw alerty przy przekroczeniu progów
- Archiwizacja - nieużywane bazy archiwizuj i usuwaj z aktywnej instancji
Jeśli planujesz aktualizację systemu, zapoznaj się z artykułem jak zaktualizować Odoo do nowszej wersji.
Rozwiązywanie typowych problemów
Problem: Nie widzę listy baz danych
Sprawdź ustawienie list_db = True w pliku odoo.conf i zrestartuj usługę. Upewnij się też, że db_manager_enabled nie jest ustawione na False. Jeśli używasz dbfilter, sprawdź czy wyrażenie regularne nie filtruje wszystkich baz.
Problem: Niewłaściwa baza ładuje się automatycznie
Zweryfikuj parametr dbfilter i upewnij się, że prawidłowo filtruje bazy według domeny. Sprawdź logi Odoo aby zobaczyć które wyrażenie regularne jest stosowane. Najczęstsza przyczyna to niezgodność nazwy bazy z nazwą domeny przy użyciu dbfilter = ^%d$.
Problem: Błąd 'database selection' przy logowaniu
Ten błąd pojawia się gdy dbfilter nie pasuje do żadnej istniejącej bazy. Sprawdź:
- Czy nazwa bazy danych odpowiada wzorcowi w dbfilter
- Czy baza rzeczywiście istnieje w PostgreSQL
- Czy nagłówki HTTP (Host) są poprawnie przekazywane przez reverse proxy
Problem: Problemy z wydajnością
Zwiększ liczbę workers, zoptymalizuj PostgreSQL lub rozważ zwiększenie zasobów serwera. Każda aktywna baza zużywa pamięć, więc planuj zasoby odpowiednio do liczby równoczesnych użytkowników we wszystkich bazach. Użyj narzędzi monitoringu jak htop, pg_stat_activity aby zidentyfikować wąskie gardła. Rozważ rozdzielenie baz na osobne instancje Odoo jeśli pojedyncza instancja jest przeciążona.
Problem: Filestore nie działa poprawnie po sklonowaniu
Upewnij się, że skopiowałeś cały katalog filestore wraz z uprawnieniami. Katalog powinien być własnością użytkownika odoo i mieć odpowiednie uprawnienia (755 dla katalogów, 644 dla plików).
FAQ - Najczęściej zadawane pytania
Ile baz danych można mieć w jednej instancji Odoo?
Teoretycznie nie ma sztywnego limitu liczby baz danych w jednej instancji Odoo - ograniczeniem są zasoby serwera (pamięć RAM, moc procesora i przestrzeń dyskowa). W praktyce większość implementacji obsługuje od kilku do kilkudziesięciu baz danych. Kluczowe jest odpowiednie dobranie parametrów workers oraz zasobów PostgreSQL do liczby baz i przewidywanego obciążenia.
Jako punkt odniesienia: serwer z 8GB RAM i 4 rdzeniami CPU może komfortowo obsłużyć 5-10 średnio aktywnych baz (10-20 użytkowników każda). Dla bardzo dużej liczby baz (powyżej 20-30) warto rozważyć klaster serwerów lub rozdzielenie ich na kilka instancji. Pamiętaj też o rozmiarze filestore - każda baza ma własny katalog z załącznikami, co może szybko zapełnić dysk.
Czy każda baza danych może mieć różne moduły zainstalowane?
Tak, każda baza danych w instancji Odoo jest całkowicie niezależna i może mieć zainstalowany inny zestaw modułów. Wszystkie bazy współdzielą tę samą pulę dostępnych modułów (katalogi addons określone w parametrze addons_path), ale decyzja o instalacji konkretnych modułów jest podejmowana osobno dla każdej bazy podczas tworzenia lub później przez menu Apps.
To pozwala na dostosowanie funkcjonalności do specyficznych potrzeb każdego projektu czy klienta. Na przykład jedna baza może mieć zainstalowane moduły e-commerce, inna moduły produkcyjne, a trzecia tylko moduły księgowe. Wersje modułów są wspólne dla wszystkich baz (określone przez wersję Odoo), ale zestaw zainstalowanych modułów jest indywidualny. Aby dodać niestandardowe moduły dostępne dla wszystkich baz, sprawdź jak zainstalować moduły zewnętrzne w Odoo.
Czy mogę ukryć wybór bazy danych przed użytkownikami?
Tak, istnieją dwie główne metody ukrycia wyboru bazy danych. Pierwsza to ustawienie list_db = False w pliku odoo.conf, co ukryje listę wszystkich baz przy logowaniu - użytkownicy będą musieli znać dokładną nazwę bazy aby się zalogować (lub być przekierowani przez dbfilter).
Druga, bardziej elegancka i zalecana metoda, to użycie parametru dbfilter = ^%d$ w połączeniu z konfiguracją domen - każda domena automatycznie połączy się z odpowiadającą jej bazą danych bez możliwości wyboru przez użytkownika. Na przykład dla domeny firma1.example.com automatycznie zostanie wybrana baza 'firma1'. Jest to zalecane podejście w środowisku produkcyjnym ze względów bezpieczeństwa (ukrywa listę baz przed potencjalnymi atakującymi) i user experience (użytkownicy nie muszą pamiętać nazwy bazy). Dodatkowo możesz całkowicie wyłączyć menedżer baz przez db_manager_enabled = False.
Podsumowanie
Dodawanie wielu baz danych w jednej instancji Odoo to potężna funkcjonalność, która przy odpowiedniej konfiguracji pozwala na efektywne zarządzanie wieloma projektami, klientami czy środowiskami. Kluczem do sukcesu jest właściwe skonfigurowanie pliku odoo.conf, szczególnie parametrów list_db, dbfilter i db_manager_enabled, oraz zapewnienie odpowiednich zasobów serwerowych.
Pamiętaj o najważniejszych zasadach: wyłącz list_db i db_manager_enabled w produkcji, używaj dbfilter do automatycznego wyboru bazy na podstawie domeny, regularnie wykonuj kopie zapasowe każdej bazy osobno, monitoruj zużycie zasobów i dostosowuj workers oraz konfigurację PostgreSQL do rzeczywistego obciążenia. Odpowiednie zabezpieczenie dostępu poprzez silne hasło główne, HTTPS/SSL i reverse proxy to kluczowe elementy bezpiecznej konfiguracji multi-database.
Dzięki elastyczności Odoo możesz skalować swoją infrastrukturę w miarę rozwoju biznesu, dodając nowe bazy bez konieczności instalowania dodatkowych instancji systemu. Każda baza to oddzielna baza PostgreSQL z własnym filestore, co zapewnia pełną izolację danych przy zachowaniu efektywności operacyjnej jednej instalacji Odoo.
Potrzebujesz pomocy w konfiguracji Odoo?
Zarządzanie wieloma bazami danych w Odoo może być wyzwaniem, szczególnie przy bardziej zaawansowanych konfiguracjach z wieloma domenami, SSL i optymalizacją wydajności. Zespół KK Innovations specjalizuje się we wdrożeniach i optymalizacji systemów Odoo dla firm każdej wielkości.
Oferujemy kompleksowe wsparcie obejmujące:
- Profesjonalną instalację i konfigurację Odoo (Community i Enterprise)
- Migrację danych z innych systemów ERP
- Optymalizację wydajności i dostrajanie parametrów
- Konfigurację zaawansowanych środowisk multi-database z wieloma domenami
- Szkolenia dla zespołów administracyjnych i użytkowników końcowych
- Bieżące wsparcie techniczne i konserwację
- Audyty bezpieczeństwa i wdrażanie best practices
Skontaktuj się z nami, aby omówić Twoje potrzeby i otrzymać dedykowaną ofertę. Nasi eksperci pomogą Ci w pełni wykorzystać potencjał systemu Odoo w Twojej organizacji!