前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >组件分享之后端组件——基于Golang实现的数据库迁移工具dbmate

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

作者头像
cn華少
发布2022-06-27 10:13:29
6730
发布2022-06-27 10:13:29
举报
文章被收录于专栏:IT综合技术分享IT综合技术分享

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

背景

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

组件基本信息

内容

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

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

其具体特征如下:

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

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

代码语言:javascript
复制
brew install dbmate

2、linux安装

代码语言:javascript
复制
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安装

代码语言:javascript
复制
docker run --rm -it --network=host -v "$(pwd)/db:/db" ghcr.io/amacneil/dbmate:1 new create_users_table

4、windows安装 下载

命令介绍如下:

代码语言:javascript
复制
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文件中加载,这有助于在团队成员之间共享配置)。

代码语言:javascript
复制
--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:)

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

本文声明:

知识共享许可协议

本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 组件分享之后端组件——基于Golang实现的数据库迁移工具dbmate
    • 背景
      • 组件基本信息
        • 内容
        相关产品与服务
        数据库
        云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档