Comments (3)
I don't have a good answer for this at the moment.
The times I've had to run migrations that lasted a few hours, we treated those as exceptions, i.e., apply all the migrations up to that point and then run the slow migration in isolation (monitoring it more closely).
When possible, we wrote those migrations to be idempotent, so that if they were interrupted, they could be run again without causing any issues. But obviously, that's not always possible.
In other places, I've resorted to doing "data migrations" in out-of-band jobs without goose, e.g., marking a feature as "no ready" until some data migration or backfill is complete. But the downside is that you must write your own logic to track this.
I'd like to keep this issue open for now and do a bit more thinking. Fwiw the is_applied
column in goose is a legacy thing that tracked down migrations, but we decided to remove that (initial #121 (comment))
from goose.
That's correct, this is working as intended. However, I can see this may not be suitable for some applications.
I've used several tools that leave the database in a "dirty" state and when you're applying migrations on dozens, or even hundreds of systems recovering becomes very challenging.
When we do have to use +goose NO TRANSACTION
we typically isolate those changes to a single file and only down to the statements that truly must run outside a transaction. In practice, for most databases, the number of statements that need to run outside a transaction is very low. So low, that I'd rather not add additional complexity and overhead to handle these edge cases.
from goose.
Interesting thanks. I'm curious how you think we should handle a failed long running migration that involves batch inserting data from a large table into another. Using the Goose's API, I don't think we have a way of knowing whether this migration was previously attempted and cannot stop ourselves from duplicating the work that we had already done. Of course this is something we can write tooling for ourselves to guard against, but it could be nice to have this given to us from Goose directly.
from goose.
Related Issues (20)
- Add support for ssl ca-cert for clickhouse HOT 5
- Local scope for provider go migrations HOT 3
- Migration with multiline comments failed HOT 1
- Migration version mismatch when running `goose fix` in CI HOT 1
- Feature: always migration(s)
- Improve Goose Migration Handling for Interleaved Migration Files HOT 1
- Does Goose support exporting the final SQL schema? HOT 2
- `CREATE INDEX CONCURRENTLY` with `GoMigrationNoTx` failing HOT 2
- Goose returns incorrect error when multiple DB users try to up migrations HOT 2
- mistyped migration file name causing goose to skip future migrations HOT 3
- Suspicious Virus Alert On Windows: Operation did not complete successfully because the file contains a virus or potentially unwanted software. HOT 2
- goose validate: no such command HOT 1
- Command line issue: goose run: ERROR: relation "_db_migrations" already exists (SQLSTATE 42P07) HOT 4
- Dialect Support - Starrocks HOT 1
- Description of CreateVersionTable in database/Store interface is confusing HOT 2
- Migrations table creation and insert fails on MySQL during transaction HOT 1
- goose migrate fails with sql, psql loads ok HOT 2
- Upgrade to go 1.23.1 HOT 4
- Go migrations not registering HOT 1
- online database migrations HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from goose.