Jeśli zostaniemy zmuszeni do odzyskania strony internetowej stworzonej w CMS-e ODOO z systemu, który nie działa z różnych przyczyn, np. aktualizacja zakończona niepowodzeniem, a ostatnia wersja archiwum nas nie satysfakcjonuje to musimy pochylic się nad dwoma rodzajami pamięci masowej. Pierwszą jest relacyjna baza danych SQL oparta o silnik POSTGRES. Drugą jest system plików z katalogiem "filestore", który zawiera dołączane do naszej witryny internetowej bloki danych w postaci graficznej itd. Backup katalogu proponuje wykonać następującą komendą:
zip -r odoo_filestore.zip /opt/odoo/.local/Odoo/filestore/
Natomiast jeśli chodzi o baze danych to tu proszę zacząć od zalogowania się na użytkownika postgres mającego pełny dostęp do baz danych POSTGRES-a komendą:
su postgres
następnie jeśli znamy nazwę bazy danych, która odpowiada za naszą witrynę, np. bit to możemy wykorzystać nasŧepujące polecenie:
pg_dump bit > /home/postgres/bit_20250517_0049
Jeśli nie znamy nazwy bazy danych to możemy ją poznać wykorzystując aplikację psql oraz wykonując w niej komendę:
\l
Przy okazji możemy sprawdzić, czy właśnie ktoś z niej nie korzysta:
select * from pg_stat_activity;
i w razie takowej potrzeby możemy zamknąć sesje komendą:
select pg_terminate_backend(pid) from pg_stat_activity where datname="bit";
Natomiast jeśli także nie działa silnik baz danych POSTGRESQL (systemctl stop postgresql) możemy zarchiwizować sam katalog /var/lib/postgresql/.../main komendą, gdzie w tym przypadku 12 jest wersją oprogramowania:
zip -r main.zip /var/lib/postgrsql/12/main/
lub
tar -cf backup.tar /usr/local/pgsql/data
Proszę jednak pamiętać, że ze względu na relacyjność (powiazania) bazy danych i zasadę działania samego Postgresa (dziennik WAL) powyższe proste komendy mają swoje ograniczenia. Podsumowując o ile nie działanie usługi ODOO nie jest wiekszym problemem to brak działania demona POSTGRESQL, czyli brak możliwości użycia migawek dzięki rozkazom pg_dump i pg_dumpall stwarza realną szansę na konieczność skorzystanie z backupu. Wracamy do punktu wyjścia, czyli administratorów dzielimy na tych którzy tworzą archiwa i tych, którzy je bedą robić. ;-P
Uwagi końcowe:
Ze względów bezpieczeństwa proponuję dodać do /etc/odoo.conf dwie liniki:
dbfilter = ^%d$
list_db = 0
Co prawda ręczny backup staje się problematyczny, gdyż wówczas adres poniższy strony internetowej przestaje działać i może spowodować powyższe reperkusje, ale coś za coś.
http://adres_serwera_www:8069/web/database/manager
Opracowane na podstawie:
- File System Level Backup https://www.postgresql.org/docs/current/backup-file.html#BACKUP-FILE