在修改数据库的数据时,建议先备份即将修改的数据,以便在需要时能够恢复。Bytebase 提供了「数据回滚」的功能来帮助实现这一功能。本教程将为你演示这一过程。

file

准备

  1. 请确保已安装 Docker,如果本地没有重要的现有 Bytebase 数据,可以通过 rm -rf ~/.bytebase/data 从头开始。
  2. 这是企业版的功能,您可以通过添加小助手申请(见文末二维码)。

过程

第一步 - 启动 Bytebase 并升级至企业计划

  1. 复制并粘贴命令,通过 Docker 启动 Bytebase。
docker run --rm --init \
  --name bytebase
  --publish 8080:8080 --pull always \
  --volume ~/.bytebase/data:/var/opt/bytebase \
  bytebase/bytebase:2.21.0

(这里的 2.21.0 可以替换成最新版本)
  1. 注册第一个账户,它将自动获得工作区管理员角色。
  2. 点击右上角的设置齿轮图标,然后点击工作区 > 订阅上传许可。
  3. 单击铅笔图标,选择要启用企业功能的实例,然后单击确认。这里是将许可分配给了实例,为对应实例开启企业版功能。

file

第二步 - 准备 schema bbdataarchive

Bytebase 将备份数据存储在专们的位置。对于 Postgres,它存储在变更的数据库的 bbdataarchive schema 下。

  1. 进入 Sample Project,单击左边栏的数据库 > 数据库,选择 hr_test,然后单击编辑 schema。
  2. 在 schema 编辑器中,单击...,然后单击创建 schema。填写名称 bbdataarchive,然后单击创建。

file

  1. 可以看到绿字的 bbdataarchive,单击预览。创建工单并等待它自动发布,完成。现在 bbdataarchive schema 已创建。

file

第三步 - 变更数据并回滚

  1. 变更前,进入 SQL 编辑器,选择 hr_test,然后双击 employee,就会看到当前数据。我们将尝试变更 Georgi 这个名字。

file

  1. 再次进入 Sample Project 里的数据库 > 数据库,选择 hr_test,然后单击变更数据。
  2. 打开右侧的事先备份,在字段中输入 SQL,然后单击创建。

UPDATE employee SET first_name = 'Adela' WHERE emp_no = 10001;

file

  1. 工单创建并发布后,你可以看到有一个活动显示数据已备份到先前创建的 bbdataarchive schema 下的一个新表中。

file

  1. 再次访问数据库 > 数据库,然后单击 hr_test。
  2. 在数据库页面,选择 bbdataarchive schema,就可以看到备份表。

file

  1. 需要进一步验证的话,可以请进入 SQL 编辑器。选择 hr_test 中的 employee 表,输入以下 SQL 脚本并点击运行,就会看到数据已更改。

SELECT * FROM "public". "employee" ORDER BY emp_no LIMIT 50

file

  1. 选择 bbdataarchive 这个 schema,双击下面的表。你将在查询结果中看到备份数据。

file

需要特别注意的

如果你要使用 MySQL/SQL Server/Oracle,就不是创建 bbdataarchive schema ,而要创建 bbdataarchive 数据库来存储备份数据。更多详情请查看文档。https://www.bytebase.com/docs/change-database/rollback-data-c...


💡 更多资讯,请关注 Bytebase 公号:Bytebase


Bytebase
56 声望18 粉丝

为 DevOps 团队准备的数据库 CI/CD 工具,专为开发者和 DBA 打造。唯一被 CNCF Landscape 收录的 Database CI/CD 产品。