SQL only бекап засобами PostgreSQL
Робимо бекап без атачментів для баз будь-якого розміру

Є випадки, коли стандартні механізми бекапу в 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

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. Готово!



SQL only бекап засобами PostgreSQL
Володимир Карабанов 30 квітня, 2022
Поділитися цією публікацією
Теги
Архів
Нумерація залежна від параметру
Створення залежних від поля послідовностей за допомогою sequence.mixin