Обновление схемы данных без потерь #17

This commit is contained in:
2026-05-04 23:15:59 +03:00
parent af0a36185b
commit 12a9f5a1a6
7 changed files with 176 additions and 2 deletions
@@ -0,0 +1,6 @@
-module('20260501120000_base_schema').
-export([up/0, down/0]).
up() -> ok.
down() -> ok.
@@ -0,0 +1,11 @@
-module('20260504150000_test_migration').
-export([up/0, down/0]).
up() ->
io:format("Test migration UP applied!~n"),
ok.
down() ->
io:format("Test migration DOWN applied!~n"),
ok.
+23
View File
@@ -0,0 +1,23 @@
# Миграции схемы данных EventHub
## Применение миграций
При старте приложения автоматически выполняются все неприменённые миграции.
Для ручного запуска можно вызвать:
migration_engine:apply_pending().
## Создание новой миграции
1. Создайте файл в `priv/migrations/` с именем вида `YYYYMMDDHHMMSS_описание.erl`.
2. Реализуйте поведение `db_migration` (функции `up/0` и `down/0`).
3. При очередном запуске приложения миграция будет применена.
## Откат миграций
migration_engine:rollback("20260501120000_base_schema").
## Плавающее обновление (rolling update)
1. Переведите узел в режим обслуживания.
2. Выполните бэкап: `mnesia:backup("backup_node.bak")`.
3. Обновите код приложения (git pull / rsync).
4. Перезапустите узел – миграции применятся автоматически.
5. Убедитесь в согласованности данных.
6. Верните узел в работу.
7. Повторите для остальных узлов.