Є випадки, коли стандартні механізми бекапу в Odoo не працюють. Наприклад, при великому розмірі аттачментів (більше за розмір оперативної пам'яті) або навіть при великому розмірі самої бази. Також є випадки, коли аттачмети не потрібні, наприклад, для локального дебагу. Розглянемо спосіб створення і розгортання бекапу без аттачментів засобами PosgreSQL, який має певну специфіку.
1. Робимо Plain dump
sudo -u postgres pg_dump -Fp your_database | gzip > /tmp/your_database_dump.gz
2. Видаляємо локально свою базу і створюємо таку ж порожню. Але користувач для БД повинен бути такий же як і у забекапленої (у прикладі odoo)
sudo -u postgres psql
DROP DATABASE "your_database";
CREATE DATABASE "your_database"
WITH OWNER = odoo
ENCODING = 'UTF8'
TABLESPACE = pg_default
LC_COLLATE = 'en_US.UTF-8'
LC_CTYPE = 'en_US.UTF-8'
CONNECTION LIMIT = -1;
3. копіюємо собі на комп'ютер файл your_database_dump.gz і розпаковуємо його.
gunzip your_database_dump.gz
4. Після підчищаємо від артефактів Postgres 10 (зокрема від "AS integer")
cat your_database_dump | sed '/AS integer/d' > your_database_dump_better.sql
5. І потім очищений файл заливаємо під користувачем odoo. Це тому, що з рестора викликається роль як у забекапленої БД:
sudo -u postgres psql -U odoo -W your_database -h 127.0.0.1 < your_database_dump_better.sql
Якщо версія Postgres новіша та/або весія локальна співпадає з серверною, можна скоротити пункти 3-5, замініивши їх однією командою
gunzip -c your_database_dump.gz | psql -U odoo -W -h 127.0.0.1 -d your_database
6. Перепризначаємо права на базу локальному користувачеві
sudo -u postgres psql
REASSIGN OWNED BY odoo TO odoo_your_project;
\c your_database;
REASSIGN OWNED BY odoo TO odoo_your_project;
Можна також локально дати всім користувачам пароль admin
UPDATE res_users SET password = '$pbkdf2-sha512$25000$kDKmtFYKAQCglHIuhRACoA$IcsiACdtip/1WdNwjOsJn0pdfPAY0DrpYx25Vk6w1F5jThGaXrF7Af7PrwzELFTFV5aikU4Y8yqx2kvp1.ThZw';
7. Проганяємо апдейти (і не забути в директорію з проектом підтягнути залежні репозиторії)
odoo-helper addons update base
8. Готово!