単一のmysqlインスタンス上で動作するレガシーシステム上で複数のスキーマをアップグレードしたいと考えています。複数のマイグレーションを並行して実行するベストプラクティス
私は〜10個のスキーマを持っていますが、制作時には〜100個のスキーマがあります。
は開発では、私は、スキーマごとにflyway migrate
を開始するには、単純なbashのループを使用していました:
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に罰金働いていました。プロダクションでは、flyway migrate
を実行するgitlabランナーのRAMをすばやく最大限に活用します。
あなたの意見では、RAMを最大限に活用せずにできるだけ早くデータベースの移行を達成するにはどうすればよいでしょうか?