25. Перенесення метаданих StudioFS на новий сервер PostgreSQL¶
Work in progress
Цей розділ описує перенесення метаданих StudioFS на новий сервер PostgreSQL зі збереженням наявного сховища S3. Клієнти тимчасово зупиняються, їхній локальний стан видаляється, а після перенесення кожен клієнт заново під’єднується до тому через discover.
dump і load переносять лише частину метаданих StudioFS. Вони не копіюють файли з S3 і не є повною резервною копією PostgreSQL. Якщо потрібна повна копія бази або в томі є дані, яких ці команди не переносять, використайте штатний механізм міграції PostgreSQL.
Перед початком¶
- Узгодьте коротке вікно обслуговування та попросіть усіх користувачів зберегти роботу й закрити програми, що використовують StudioFS.
- Коректно відмонтуйте том на кожному клієнті. Переконайтеся, що немає помилок і незавершених завантажень до S3.
dumpсинхронізує метадані з PostgreSQL, але не завантажує файлові дані до S3. - Підготуйте новий сервер PostgreSQL і DSN з потрібними правами. Переконайтеся, що конфігурація клієнтів надалі вказуватиме саме на нього.
Перенесення¶
Виконуйте кроки послідовно. dump треба зробити до destroy --local на комп’ютері, з якого запускається експорт: команді потрібна локальна база метаданих тому.
- На одному з клієнтів, де є локальний стан тому, створіть дамп:
studiofs dump projectfs --path-to-dump ./projectfs-metadata.json
Замініть projectfs на назву тому. Збережіть JSON у безпечному місці: він містить конфігурацію тому. Не запускайте експорт повторно в той самий шлях, якщо хочете зберегти попередній файл.
- Після успішного експорту видаліть локальні метадані на всіх клієнтах, включно з тим, де виконували
dump:
studiofs destroy projectfs --local
Ця команда видаляє локальні метадані й кеш цього клієнта, але залишає спільні метадані PostgreSQL і дані S3. Не запускайте її, якщо клієнт ще має незавантажені зміни.
- Завантажте дамп у новий сервер PostgreSQL:
studiofs load --path-to-dump ./projectfs-metadata.json --postgresql-address "<new-postgres-dsn>"
Команда змінює дані в базі, указаній у DSN. Перевірте адресу перед запуском і не спрямовуйте клієнтів до нового сервера, доки завантаження не завершилося успішно.
- На кожному клієнті заново створіть локальний стан із нового сервера:
studiofs discover projectfs --meta "<new-postgres-dsn>"
- Переконайтеся, що клієнти бачать потрібну структуру та можуть відкрити файли, і лише тоді відновіть звичайну роботу.
Межі dump і load¶
dump синхронізує локальні метадані цього клієнта, а потім експортує з PostgreSQL записи volumes, metadata_state, counters та event_log. load застосовує ці дані до цільової бази й зіставляє том за UUID. Ці команди не переносять вміст файлів у S3.
Дамп також не містить усіх таблиць StudioFS, зокрема окремої таблиці volume_crypto_keys та повного стану Snapshot v2 і обліку об’єктів. Тому успішне виконання load саме собою не доводить, що перенесено всі дані, потрібні конкретному тому. Якщо для тому потрібні ці записи або load відхиляє цільову базу, не видаляйте й не змінюйте таблиці вручну: використайте повну міграцію PostgreSQL, що зберігає всі таблиці, та перенесіть налаштування доступу до того самого сховища S3.
Зберігайте дамп і DSN як чутливі дані: обмежте доступ до JSON, а пароль у DSN не додавайте до спільних журналів чи документації.
Зміст · English · ← Попередня · Наступна →