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

开发者 2024-9-10 00:09:13 9 0 来自 中国
组件分享之后端组件——基于Golang实现的数据库迁徙工具dbmate

配景

近期正在探索前端、后端、体系端各类常用组件与工具,对其一些常见的组件举行再次整理一下,形成标准化组件专题,后续该专题将包罗各类语言中的一些常用组件。接待各人举行持续关注。
组件根本信息


  • 组件:dbmate
  • 开源协议:MIT license
内容

本节我们分享一个基于Golang实现的数据库迁徙工具dbmate,可让您的数据库架构在多个开发人员和生产服务器之间保持同步。
它是一个独立的命令行工具,可与 Go、Node.js、Python、Ruby、PHP 或您用来编写数据库支持的应用程序的任何其他语言或框架一起利用。如果您正在用不同的语言编写许多服务,而且希望利用同等的开发工具保持一定的理智,这将特别有效。
其具体特征如下:


  • 支持 MySQL、PostgreSQL、SQLite 和 ClickHouse。
  • 利用纯 SQL 编写模式迁徙。
  • 迁徙是时间戳版本的,以制止与多个开发人员发生版本号辩论。
  • 迁徙在事故中以原子方式运行。
  • 支持创建和删除数据库(在开发/测试中很方便)。
  • 支持生存schema.sql文件以轻松区分 git 中的架构更改。
  • 数据库毗连 URL 利用环境变量界说(DATABASE_URL默认环境下),或在命令行中指定。
  • 内置支持从.env文件中读取环境变量。
  • 易于分发,单个独立的二进制文件。
安装方式如下:
1、mac安装
brew install dbmate2、linux安装
sudo curl -fsSL -o /usr/local/bin/dbmate https://github.com/amacneil/dbmate/releases/latest/download/dbmate-linux-amd64sudo chmod +x /usr/local/bin/dbmate3、docker安装
docker run --rm -it --network=host -v "$(pwd)/db:/db" ghcr.io/amacneil/dbmate:1 new create_users_table4、windows安装
下载
命令先容如下:
dbmate --help    # print usage helpdbmate new       # generate a new migration filedbmate up        # create the database (if it does not already exist) and run any pending migrationsdbmate create    # create the databasedbmate drop      # drop the databasedbmate migrate   # run any pending migrationsdbmate rollback  # roll back the most recent migrationdbmate down      # alias for rollbackdbmate status    # show the status of all migrations (supports --exit-code and --quiet)dbmate dump      # write the database schema.sql filedbmate 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:)具体利用方式可以拜见该文档
本文声明:


1.png
知识共享许可协议
本作品由 cn華少 采取 知识共享署名-非商业性利用 4.0 国际许可协议 举行许可。
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 18:22, Processed in 0.179488 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表