Realizar el backup de Odoo

15 de junio de 2023 por
Gustavo Orrillo
| Sin comentarios aún
 

Es una norma de la industria... pero hacer el backup de un sistema es algo facil. Lo que es complejo es restaurar el backup y que el sistema salga andando. Odoo no es la excepción a la regla (por más que existan cientos de videos que muestren lo contrario). Y es uno de los aspectos más pasados por alto con el sistema. La restauración del mismo.

Incluido en Odoo hay un utilitario que es de dudosa utilidad. Para instalaciones chicas puede ser util, pero el día que se rompa el servidor y uno deba restaurar dicho backup, no va a servir (principalmente porque requiere que las versiones de los diferentes componentes, Odoo pero por sobre todo PostgreSQL sean las mismas). 

Si uno está trabajando con un VPS, recomiendo utilizar las herramientas de backup que brinda el mismo. Por lo general los servicios de VPSs brindan herramientas que permiten realizar backups en forma automática en forma diaria, y restaurar las maquinas virtuales sin problemas. En su momento en un cliente tuvimos problemas accediendo al server (por issues de networking) y restauramos el backup en otro server. En menos de 30 minutos ya estaba todo funcionando de vuelta y validando las facturas con AFIP.

En este post vamos a explicar como realizar el backup en sus componentes más básicos, así uno puede armar una estrategia de backup y restore que sea util en su ambiente productivo. En un servidor de Odoo, los componentes que necesitan backup son los que se listan a continuación:

PostgreSQL


La base de datos de Odoo es la que se debe resguardar en forma regular (lease diariamente). Para ello podemos utilizar el pg_dump, que es un utilitario provisto por PostgreSQL. El pg_dump se lo utiliza en la línea de comandos y lista los contenidos de la base de datos por la consola. Esta salida (con el contenido de la base de datos) puede ser redirigido a un archivo de texto, el cual se puede copiar a otro servidor para luego restaurarlo donde se desee.

pg_dump mibasededatos > mibasededatos.sql


Para restaurar este archivo en otro servidor se deben seguir los siguientes pasos. Supongamos que queremos restaurar el archivo mibasededatos.sql en una base de datos llamada minuevabasededatos

createdb minuevabasededatos
psql -d minuevabasededatos < mibasededatos.sql

Estos dos pasos primero crean una nueva base de datos, para luego recrear los contenidos de la base de datos en el nuevo server. El server donde se ejecuta el restore puede tener una versión diferente de PostgreSQL, y esto es muy importante. Si uno realiza el backup con el utilitario provisto por Odoo (el cual invoca el pg_dump) el mismo solo puede ser restaurado en un server con la misma versión de PostgreSQL (un detalle pasado por alto en todas las instalaciones de Odoo).

filestore


El segundo componente al que se debe hacer backup es el filestore. Que es el filestore? Es donde se almacenan todos los contenidos binarios de Odoo (por ejemplo attachments o campos binarios). Estos por default (a menos que se configure lo contrario) se almacenan en el filesystem del server (no sean tan kamikazes de almacenarlos en la base de datos, a menos que el server tenga terabytes de memoria RAM). Por lo general los archivos del filestore se encuentran en el siguiente directorio



cd /opt/odoo15
cd .local/share/Odoo/filestore/


Si listan los contenidos de dicho directorio, podrán ver que hay un directorio por base de datos de Odoo y dentro de dicho directorio verán que existen múltiples directorios con los archivos



Dicho contenido es mantenido por Odoo de forma automática. No piensen en alterar dicho mecanismo ya que tendrán resultados no deseados.

Este filestore debe ser copiado en su totalidad al directorio en el sistema destino donde se almacenará el filestore.Y se debe respetar la estructura del filestore, sino tendrá resultados no deseados.



Código fuente de customizaciones y módulos externos de Odoo

Primero y antes que nada, no debe mezclar el directorio de Odoo de addons con sus módulos customizados (si tiene problemas instalando sus módulos, siga trabajando hasta resolver el problema, no ensucie el directorio de addons de Odoo). 

Es conveniente tener un repositorio de git (github o gitlab, los dos sirven) en donde se almacenarán cada uno de los módulos que se utiliza en el sistema. Y mantener dicho repositorio con cada uno de los módulos que se hace instala o se actualiza en el sistema. Luego es importante entender los paquetes externos instalados (y sus dependencias) para hacer funcionar dichos módulos. Por ejemplo, en los módulos de Python dichos requerimientos se encuentran documentados en el archivo requirements.txt y se pueden instalar de la siguiente manera

sudo pip3 install -r requirements.txt


En el sistema destino dicho repositorio debe ser instalado en el directorio donde se almacenan los addons externos. 


Código fuente del core de Odoo


De la misma manera que se mantiene un repositorio con los addons externos o customizados, se debe mantener un repositorio con la versión de Odoo instalada (consejo, hagan un fork del Odoo instalado). Y luego documenten los pasos de instalación de dicho Odoo para evitar cualquier sorpresa al momento de instalar Odoo en el sistema destino y restaurar el backup. También se debe hacer un backup del archivo de configuración de Odoo

En el sistema destino se debe instalar Odoo desde los fuentes siguiendo los pasos documentados previamente de la instalación. Acto seguido, se debe restaurar la base de datos, copiar el filestore y los addons customizados. Y luego actualizar la base de datos con el nuevo código (porque pueden haber cambios)


sudo -Hu odoo ./odoo-bin -c /etc/odoo.conf -d minuevabasededatos -u base --stop-after-init


Es crítico practicar el restore del backup con regularidad. Todos sabemos hacer el backup, pero lo trabajoso y crítico es restaurarlo. Por eso es importante realizar esto con frecuencia a fin de entender los problemas que van a surgir en su procedimiento. 

Otro punto no menor es entender como se instala Odoo en el servidor, ya que es fundamental para el restore. Si el procedimiento de backup y restore es trabajoso, evaluen realizar el backup del servidor completo. Muchas veces los servers de Odoo son maquinas virtuales las cuales son muy sencillas de hacer backup y restaurar.

Gustavo Orrillo 15 de junio de 2023
Compartir
Categorías
Archivar
Identificarse dejar un comentario