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

Якщо версія 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. Готово!



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