0 门槛 5 分钟体验 Bytebase 库表同步
使用场景
Bytebase 的库表同步功能支持将某个特定的 Schema 版本从一个库复制到另一个。在没有库表同步前,开发人员需要自己小心翼翼地撰写出需要变更的语句。而有了库表同步之后,开发人员就只要告诉 Bytebase 需要把哪个数据库的 Schema 搬到目标数据库就行了。整个过程可以通过 UI 操作来完成,主要用以解决以下场景:
场景一
在产品发布过程中,针对不同环境,如 dev / staging / prod,需要做跨环境的 Schema 版本同步。比如正向地从 dev 到 staging 到 prod 的研发发布流程,或是逆向地从 prod 复制到 dev 做测试。
场景二
对于生产环境同构库,比如 SaaS ,游戏中的分区等情况,
2)厂商维护了多个软件版本的产品,需要统一版本,也就需要对 Schema 归一化。
先选择项目; 选择从哪个数据库的的具体某一个 Schema 作为同步源; 选择希望同步到的数据库;
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,在项目里点击 创建数据库,建立对应的数据库 dbtest 和 dbprod,并且 批准 和 解决 对应的工单。
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)
);
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 的库表同步功能。请继续关注!👀