Go | Миграции баз данных MySQL | PostgreSQL

140
24 апреля 2022, 01:00

В чем суть:

В Laravel (да, да, опять php) есть встроенные механизмы миграции бд, и комманды. Обычно миграциями мы выкатываем новые таблички, или докатываем столбцы (если очень мало данных).

Внимание, пример вывосаный из пальца: Если нужно колонку с полем text выгреcти, и сохранить в другой таблице с типом json - используем комманды.

В данный момент использую MySQL (будет и PostgreSQL). Но так как я переписываю микросервисы с php на go, у меня уже есть смигрировання база до послейдней версии.

Есть либа https://github.com/golang-migrate/migrate, тут все понятно, можно выкатывать структуру базы.

А если нужно какойто alter table запускать?)

Юзаю go с minikube (k8s). Docker image собираю через github actions.

Планирую подкрутить teamcity для деплоя в minikube (локально). В k8s можно указывать пробы на готовность апликухи. Исходя из этого можно либо деплоить апликуху после миграции, либо указывать задачу.

И вопросы:

  • Если указывать задачу при деплои в k8s, то куда ее ложить? Это отдельный скрипт? Или командная строка з параметрами в go приложении? А как тогда откатывать? В laravel все лежит с кодом.
  • Есть какие-то "хорошие практити" по миграции бд в go?
  • Возможно с точки зрения DevOps миграции лучше делать иначе?)
Answer 1

Попробую https://flywaydb.org, так как есть поддержка множества баз.

Уже есть в докере https://hub.docker.com/r/flyway/flyway

READ ALSO
Выборка уникальных значений за определенное время SQL

Выборка уникальных значений за определенное время SQL

Коллеги, привет! Нужно написать SQL запрос для решения следующей задачи: Есть таблица1, содержащая 2 столбца «код» и «дата»

239
#1062 — Дублирующаяся запись '2-6' по ключу 'PRIMARY', как исправить?

#1062 — Дублирующаяся запись '2-6' по ключу 'PRIMARY', как исправить?

Похожие вопросы были, но в них я так и не нашел как решить свою проблему

182
PHP Форматирование datetime в формат 8607 yyyy-MM-ddThh:mmssZ из MySQL

PHP Форматирование datetime в формат 8607 yyyy-MM-ddThh:mmssZ из MySQL

подскажите пожалуйста, есть база данных на mysql, в ней дата записывается в формате yyyy-MM-dd hh:mm:ss, мне нужно вывести ее в json преобразованной в формат...

195
Как разместить/подключить Мускулы на GitHub?

Как разместить/подключить Мускулы на GitHub?

Есть сайт-портфолио с разными моими проектамиБольшая часть из них сделана от балды(т

190