查看原文
其他

0 门槛 5 分钟体验 Bytebase 库表同步

Adela Bytebase 2022-12-19

本文简述了库表同步的基本使用场景以及在 Bytebase 中如何通过纯 UI 操作来丝滑地使用这个功能。Bytebase 在 v1.8.0 的版本中加入了对 MySQL🐬 的库表同步支持,后续也将支持 PostgreSQL🐘。

使用场景

Bytebase 的库表同步功能支持将某个特定的 Schema 版本从一个库复制到另一个。在没有库表同步前,开发人员需要自己小心翼翼地撰写出需要变更的语句。而有了库表同步之后,开发人员就只要告诉 Bytebase 需要把哪个数据库的 Schema 搬到目标数据库就行了。整个过程可以通过 UI 操作来完成,主要用以解决以下场景:

场景一

在产品发布过程中,针对不同环境,如 dev / staging / prod,需要做跨环境的 Schema 版本同步。比如正向地从 dev 到 staging 到 prod 的研发发布流程,或是逆向地从 prod 复制到 dev 做测试。

场景二

对于生产环境同构库,比如 SaaS ,游戏中的分区等情况,

1)因为特殊原因导致的人为修改,使得本该同构的库产生了差异,需要重新归一化;

2)厂商维护了多个软件版本的产品,需要统一版本,也就需要对 Schema 归一化。

通过在 Bytebase Console 的界面上进行三步操作,即可完成库表同步功能:
  1. 先选择项目;
  2. 选择从哪个数据库的的具体某一个 Schema 作为同步源;
  3. 选择希望同步到的数据库;

Bytebase 会显示两者的 Schema 差异并会自动生成建议的 DDL 语句。(比如 ALTER TABLE ……)


5分钟内丝滑体验

下面我们来看看怎样快速安装 Bytebase 来体验库表同步,即使你从未使用过 Bytebase 也可以尝试在 5 分钟内丝滑感受下:

准备阶段

0)确保安装了 Docker。

1)复制粘贴以下语句用 Docker 启动 1 个 Bytebase,2 个 MySQL。

docker run --init \ --name bytebase \ --restart always \ --publish 5678:8080 \ --health-cmd "curl --fail http://localhost:5678/healthz || exit 1" \ --health-interval 5m \ --health-timeout 60s \ --volume ~/.bytebase/data:/var/opt/bytebase \ bytebase/bytebase:1.8.0 \ --data /var/opt/bytebase \ --port 8080
docker run --name mysqldtest \ --publish 3307:3306 \ -e MYSQL_ROOT_HOST=172.17.0.1 \ -e MYSQL_ROOT_PASSWORD=testpwd1 \ mysql/mysql-server:8.0
docker run --name mysqldprod \ --publish 3308:3306 \ -e MYSQL_ROOT_HOST=172.17.0.1 \ -e MYSQL_ROOT_PASSWORD=testpwd1 \ mysql/mysql-server:8.0

2)在启动的 Bytebase Console 里,注册管理员,根据提示在实例里添加两个针对不同环境(Test/Prod)的实例。用户名/密码均为 root/testpwd1

3)建立项目 sync-schema,在项目里点击 创建数据库,建立对应的数据库 dbtestdbprod,并且 批准解决 对应的工单。

4)回到项目页面点击 变更 Schema,只选中 Test 环境中的 dbtest,在新建立的工单中输入如下语句,点击右上方 创建,这里你也可以导入您需要的 Schema。

CREATE TABLE t1 ( person_id INT, last_name VARCHAR(255), first_name VARCHAR(255), address VARCHAR(255), city VARCHAR(255));
5)再次回到项目页面点击 变更 Schema,只选中 Prod 环境中的 dbprod,在新建立的工单中输入如下语句,点击右上方 创建,这里你也可以导入您需要的 Schema。
CREATE TABLE t2 ( person_id INT, full_name VARCHAR(255));


使用阶段

1) 回到项目主页,点击 库表同步,根据步骤 1-3 填写,将 dbtest 数据库的内容同步给 dbprod。


2)点击 预览工单 会预览即将生成工单,只有点击创建后工单才会真正创建。

3)点击 创建,即可生成工单,通过批准工单的执行,即可完成该次库表同步操作。


企业版

如果你使用的是 Bytebase 的免费版团队版,只能选择最新的历史版本;如果你使用的是企业版,则可以在所有历史版本中做选择。

v1.8.0 开始,用户无需在 Bytebase License Hub 上注册,即可直接开启14 天的团队版免费试用。在试用过程中,在相关的企业版功能处解锁可升级至企业版试用


体验顺畅吗?还是遇到什么问题呢?欢迎添加 BB小助手,进入用户群一起聊聊!

我们将会在接下来的文章中为你拆解 Bytebase 是怎样从技术上实现 MySQL 的库表同步功能。请继续关注!👀

Bytebase v1.8.0 重点新功能解读
MotherDuck,从 SQLite 走向数据届的 Docker
Bytebase v1.8.0 2022.11.17
和 Bytebase 一起去 GitHub Universe Watch Party!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存