组件分享之后端组件——基于Golang实现的数据库迁移工具dbmate

组件分享之后端组件——基于Golang实现的数据库迁移工具dbmate

背景

近期正在探索前端、后端、系统端各类常用组件与工具,对其一些常见的组件进行再次整理一下,形成标准化组件专题,后续该专题将包含各类语言中的一些常用组件。欢迎大家进行持续关注。

组件基本信息

内容

本节我们分享一个基于Golang实现的数据库迁移工具dbmate,可让您的数据库架构在多个开发人员和生产服务器之间保持同步。

它是一个独立的命令行工具,可与 Go、Node.js、Python、Ruby、PHP 或您用来编写数据库支持的应用程序的任何其他语言或框架一起使用。如果您正在用不同的语言编写许多服务,并且希望使用一致的开发工具保持一定的理智,这将特别有用。

其具体特征如下:

  • 支持 MySQL、PostgreSQL、SQLite 和 ClickHouse。
  • 使用纯 SQL 编写模式迁移。
  • 迁移是时间戳版本的,以避免与多个开发人员发生版本号冲突。
  • 迁移在事务中以原子方式运行。
  • 支持创建和删除数据库(在开发/测试中很方便)。
  • 支持保存schema.sql文件以轻松区分 git 中的架构更改。
  • 数据库连接 URL 使用环境变量定义(DATABASE_URL默认情况下),或在命令行中指定。
  • 内置支持从.env文件中读取环境变量。
  • 易于分发,单个独立的二进制文件。

安装方式如下:
1、mac安装

brew install dbmate

2、linux安装

sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64
sudo chmod +x /usr/local/bin/dbmate

3、docker安装

docker run --rm -it --network=host -v "$(pwd)/db:/db" ghcr.io/amacneil/dbmate:1 new create_users_table

4、windows安装下载

命令介绍如下:

dbmate --help    # print usage help
dbmate new       # generate a new migration file
dbmate up        # create the database (if it does not already exist) and run any pending migrations
dbmate create    # create the database
dbmate drop      # drop the database
dbmate migrate   # run any pending migrations
dbmate rollback  # roll back the most recent migration
dbmate down      # alias for rollback
dbmate status    # show the status of all migrations (supports --exit-code and --quiet)
dbmate dump      # write the database schema.sql file
dbmate wait      # wait for the database server to become available

命令行选项
以下选项适用于所有命令。您必须按顺序使用命令行参数dbmate [global options] command [command options]。大多数选项也可以通过环境变量进行配置(并从您的.env文件中加载,这有助于在团队成员之间共享配置)。

--url, -u "protocol://host:port/dbname"- 直接指定数据库 url。(环境:)$DATABASE_URL
--env, -e "DATABASE_URL"- 指定一个环境变量来读取数据库连接 URL。
--migrations-dir, -d "./db/migrations"- 保存迁移文件的位置。(环境:)$DBMATE_MIGRATIONS_DIR
--migrations-table "schema_migrations"- 用于记录迁移的数据库表。 (环境:)$DBMATE_MIGRATIONS_TABLE
--schema-file, -s "./db/schema.sql"- 保存 schema.sql 文件的路径。(环境:)$DBMATE_SCHEMA_FILE
--no-dump-schema- 不要在 migrate/rollback (env: $DBMATE_NO_DUMP_SCHEMA)时自动更新 schema.sql 文件
--wait- 在执行后续命令(env: )之前等待 db 变为可用$DBMATE_WAIT
--wait-timeout 60s- --wait 标志超时(环境$DBMATE_WAIT_TIMEOUT:)

具体使用方式可以参见该文档

本文声明:
88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN華少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值