Я хочу обновить несколько схем в устаревшей системе, работающей на одном экземпляре mysql.
В разработке у меня ~ 10 схем, а в производстве ~ 100 схем.
В процессе разработки я использовал простой цикл bash для запуска flyway migrate
для каждой схемы:
schemas=$(echo "SET SESSION group_concat_max_len=8192; select GROUP_CONCAT(SCHEMA_NAME SEPARATOR ' ') from information_schema.SCHEMATA where SCHEMA_NAME like 'FOO_%'" | mysql -h$DB_URL -P$DB_PORT -u$DB_USER -p$DB_PASSWORD -sN)
for schema in $schemas; do
echo "Starting Migration for : $schema"
flyway -configFile=src/flyway.conf -user=$DB_USER -password=$DB_PASSWORD -url="jdbc:mysql://$DB_URL:$DB_PORT" -schemas=$schema -locations=filesystem:src/schema/ migrate 2>&1 | tee $schema.log &
done
Эта стратегия отлично работала в dev. В процессе производства я быстро исчерпываю возможности бегуна gitlab, который запускает flyway migrate
.
По вашему мнению, что было бы наилучшим способом выполнить миграцию базы данных как можно быстрее, не перегружая память?