🔧 Обновление NocoDB и управление бэкапами
На работе собрался обновлять NocoDB. У меня написан скрипт, для создания бекапа PostgreSQL и самой NocoDB. Однако при подключении к виртуальной машине оно начало ругаться на fingerprint, мол у нас другой, может это атака типа мужик по середине.
Полез в консоль яндекса, подключился к ВМ, проверил fingerprint, мне приходит верный. Грохнул существующие записи, ssh-keygen -R vm_ip. Сделал бекап на всякий случай.
Так же заказчик настраивал бекапы в облаке, но я их не обнаружил. После поисков, выяснил что настроено было не резервгное копирование, а снимки дисков. Глянул а там только за март, за 2 дня. Странно, в настройках стоит каждый час, ограничения по количеству нет. Ну наверное место кончилось, заглянул в квоты, хорошо что они есть. Упёрлись в квоту 400 гигов. Один снимок на данный момент весит 28,2 гига, так что изменил расписание на раз в день и ограничил хранение 10 снимками. Старые снимки поудалял.
Далее пошёл изучать changelog NocoDB, чтобы понять, что может пойти не так. Изменилась структура хранения данных в PostgreSQL: они наконец то отказались от всех идентификаторов и промежуточных таблиц и хранят данные так, как мы видим их в NocoDB. Это так же означает что моя библиотека для работы с NocoDB скорее всего перестанет работать, если они изменили апи.
Протестировал свою библиотечку, всё продолжило работать! Исследовал как же всё таки изменилась структура данных. Теперь в таблице с описанием баз новые базы создаются без префикса, для них создаётся новая схема с идентификатором базы в качестве названия, и в ней уже находятся таблицы.
Итак, у меня уже три типа хранения в постгрес. 1. Ранее при создании базы создавалась новая база в PostgreSQL с схемой public, в которой находились таблицы с названиями, указанными пользователем. 2. База nocodb_metadata с множеством метатаблиц, где хранятся описания и уникальные идентификаторы. У баз специальные идентификаторы и префиксы, которые нужно искать в метатаблицах, что создаёт путаницу. 3. Теперь также используется база nocodb_metadata. В таблице с описанием баз новые базы создаются без префикса, и создаётся новая схема с идентификатором базы. Таблицы называются так, как их назвал пользователь.
На мой взгляд, самый удобный вариант — это первый. Остальные могут привести к проблемам с производительностью при увеличении количества баз и объёма данных.