С Remnawave
Установщик сам находит Remnawave на сервере и предлагает перенести данные. Если выбрать Docker, скрипт скопирует данные напрямую из PostgreSQL Remnawave в PostgreSQL GoWave, минуя промежуточный файл SQLite. Исходная база во всех сценариях только читается.
Ниже описаны команды для ручного запуска.
Напрямую из PostgreSQL в PostgreSQL
Заголовок раздела «Напрямую из PostgreSQL в PostgreSQL»Команда читает базу Remnawave и переносит записи в PostgreSQL GoWave одной транзакцией:
# Настройки найдутся автоматическиgowave migrate pg-to-pg
# Или с явным указанием адресов подключенияgowave migrate pg-to-pg 'postgresql://rw:pass@127.0.0.1:5432/remnawave' 'postgresql://gw:pass@127.0.0.1:5432/gowave'Флаг --force разрешает перезаписать данные, если в целевой базе уже есть пользователи, ноды или хосты.
Особенности переноса:
- Исходная база читается в транзакции с уровнем изоляции Repeatable Read. Запись в неё не ведётся.
- Целевая база заполняется за одну транзакцию. Любая ошибка отменяет изменения целиком.
- Защита от ошибок: скрипт проверяет отпечатки баз и откажется запускаться, если источник и цель совпадают.
- Типы UUID, JSON, массивы и перечисления переносятся с приведением типов через текстовый формат.
- Пустые значения NULL для полей без указателей приводятся к нулевым значениям языка Go.
- Контейнеры старой панели продолжают работать до завершения переноса. После проверки работы GoWave остановите их вручную или через интерактивное меню.
Из PostgreSQL в SQLite
Заголовок раздела «Из PostgreSQL в SQLite»Если GoWave работает без Docker через systemd и хранит данные в файле:
gowave migrate pg-to-sqlite- Настройки подключения к Remnawave считываются из
/opt/remnawave/.env. - Переносятся все таблицы: пользователи, трафик, ноды, хосты, шаблоны, сквады.
- По умолчанию создаётся файл
gowave-migrated.sqlite. Укажите его в переменнойDATABASE_URLсDB_DRIVER=sqliteи перезапустите службу GoWave.
Меню rescue
Заголовок раздела «Меню rescue»Оба сценария доступны в интерактивном меню:
gowave rescue- Пункт 8: перенос из PostgreSQL Remnawave в SQLite.
- Пункт 10: перенос напрямую из PostgreSQL Remnawave в PostgreSQL GoWave.