Como restaurar una base de datos de Odoo por CLI
Recientemente tuvimos que restaurar una base de datos de un cliente que pesaba más de 1 GB. Restaurar este fichero usando el gestor de base de datos que proporciona Odoo por la interfaz gráfica fue imposible hacerlo, debido al gran peso del fichero.
Ante este problema, la solución fue subir el fichero a nuestro servidor de base de datos y simular como lo hace Odoo desde su interfaz gráfica.
Opción 1
1- Ubicar el directorio donde se guardan los ficheros:
/opt/odoo14/.local/share/Odoo/filestore
/opt/odoo14: Lugar donde defini que se gestionara el odoo.
2- Descomprimir el fichero subido al servidor
unzip mariel_test_2024-09-20_15-52-19.zip
3- Mover el directorio recien descomprimido al directorio de Odoo.
mv /home/filestore/ /opt/odoo14/.local/share/Odoo/filestore/mariel_st_db
mariel_st_db: Nombre que va a tener la base de datos.
3- Asignar el grupo y el usuario
chown -R odoo14:odoo14 .
odoo14: el grupo y el usuario asignado a mi Odoo.
4- Crea la base de datos
CREATE DATABASE mariel_st_db WITH OWNER odoo ENCODING 'UTF8' LC_COLLATE = 'C' TEMPLATE template0;
odoo: el usuario de base de datos creado por mi.
mariel_st_db: nombre de la base de datos
5- Carga la base de datos:
psql -U odoo -d mariel_st_db -f dump.sql
dump.sql: El fichero generado que se descomprimió en el paso 2
Especificacion:
En caso de tener este error:
psql: error: connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed: FATAL: Peer authentication failed for user "odoo"
Editar el fichero:
sudo nano /etc/postgresql/14/main/pg_hba.conf
Buscra una linea parecida a esta
local all odoo peer
Y modificarla por esta
local all odoo md5
Reiniciar el servicio del postgres
sudo systemctl restart postgresql
Opción 2
1- Abrir un nuevo screen por si pierdes la conexión
screen
2- Verificar que el servicio no este corriendo
systemctl stop odoo.service
3- Verificar que el puerto donde se encuentra el servicio no este ocupado
sudo lsof -i :8164
8164: es el puerto donde se ejecuta mi servicio.
4- Matar todos los procesos
sudo kill -9 1246708
Y asegurarse que todos los procesos que usan ese puerto estén muertos
5- Posicionarse en la carpeta donde está el proyecto
source odoo-venv/bin/activate
6- Ejecutar el siguiente comando:
odoo/odoo-bin -c /etc/acmarielst.conf -d mariel_st_db --load /home/mariel_test_2024-09-20_15-52-19.zip
odoo/odoo-bin: es el fichero que tiene toda la lógica de Odoo
/etc/acmarielst.conf: es donde se encuentra la configuración del sistema
mariel_st_db: es la base de datos que se va a crear
home/mariel_test_2024-09-20_15-52-19.zip: es el fichero que va a ser restaurado
Luego de eso, se debe esperar bastante tiempo. En nuestro caso que la base de datos pesaba aproximadamente 1.5 GB, el tiempo de espera fue de 1 hora.