Как обновить базу данных postgres в kubernetes, используя скрипты [CI / CD]? - PullRequest
0 голосов
/ 11 февраля 2020

У меня есть одна postgres база данных, развернутая в kubernetes и подключенная к pv c [с RWX режимом доступа]. Как правильно обновить (создать таблицу) базу данных через мой CI / CD вместо входа в модуль и выполнения запросов [Без удаления pvc]?

1 Ответ

0 голосов
/ 25 февраля 2020

Насколько я понимаю, основная причина вашего вопроса заключается в том, как развернуть структуру БД, изменяющую БД на производстве, с минимальным временем простоя. Для этого я бы go с сине-зелеными развертываниями 1 .

После ваших комментариев я предполагаю, что у вас уже есть запущенный экземпляр из PostgreSQL и хотел бы изменить содержимое БД путем изменения структуры файла непосредственно на «диске» (в данном случае PV C).

Изменение структуры данных непосредственно на диске не является лучшим Идея, если мы говорим о целостности данных, et c.

Причины этого утверждения объясняются в этой статье 2 . Он описывает, как именно postgreSQL хранит данные на диске.

PostgreSQL (по умолчанию) записывает блоки данных (что PostgreSQL вызывает страницы) на диск в виде 8k блоков.

Кроме того, существует связь между таблицей и file_path, поэтому postgresql знает, в каком именно файле хранится какая таблица.

SELECT pg_relation_filepath('test_data');  
pg_relation_filepath  
----------------------  
base/20886/186770

В этом примере файл /database/base/20866/186770 содержит фактические данные для таблицы test_data.

Какой правильный способ обновления базы данных вместо входа в систему в модуль и выполнение запросов

Однако, если вы уверены, что у вас есть полный набор файлов для работы с БД (например, тот, который вы используете во время pg_dump / pg_restore), вы можете попробовать поместить эти данные на другом PV C и пересоздать модуль, однако это все равно приведет к простою.

Надеюсь, это поможет.

...