I use SQL migrations for this, works fine. Only migrate up, never down, and store the name of migrations already run in the db.
(1) https://www.npmjs.com/package/sql-migrations
I use something I wrote myself (see link in other comment). Nothing fancy and could be replicated easily - save sql files for migrations, run migration if not in db already, then store in the db the name of the migration run.