Logo

dev-resources.site

for different kinds of informations.

πŸš› Deploy Database Schema Migrations with Bytebase

Published at
11/10/2023
Categories
database
devops
sql
schema
Author
adela_bytebase
Categories
4 categories in total
database
open
devops
open
sql
open
schema
open
Author
14 person written this
adela_bytebase
open
πŸš› Deploy Database Schema Migrations with Bytebase

Bytebase offers a powerful GUI for schema migration deployments. This tutorial will show you how to use Bytebase to deploy schema migrations with features like SQL Review, custom approval, time scheduling, and more.

graph-4-steps

Bytebase offers Community, Pro and Enterprise Plans. Advanced plans
unlock new capabilities of deploying schema migrations and this tutorial will walk you through them progressively.

Features covered

Preparation

  1. Make sure your Docker is running, and start the Bytebase Docker container with the following command:
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:%%bb_version%% \
  --data /var/opt/bytebase \
  --port 8080
Enter fullscreen mode Exit fullscreen mode
  1. Bytebase is running successfully in Docker, and you can visit it via localhost:5678. Register an admin account and it will be granted the workspace owner role automatically.

Level 1: Automatic rollout with SQL review (Community Plan)

  1. Go to Environments > Test and Environments > Prod, you'll see
    1. The Rollout policy is automatic. Unless there's some warning or error, the rollout will be automatically executed after the issue is created.
    2. SQL Review is enabled on Prod with a sample policy.

bb-env-rollout-automatic-test-prod

  1. Click SQL Review Sample Policy to go to SQL Review policy, there're three rules activated. Let's pay attention to Enforce NOT NULL constraints on columns rule, and we'll try to violate it.

bb-sql-review-sample-policy

  1. Go to Sample Project, click Edit Schema, choose both Test and Prod databases, and click Next. Paste the following SQL statements into Raw SQL, and click Preview issue.
ALTER TABLE "public"."employee"
    ADD COLUMN "country" text;
Enter fullscreen mode Exit fullscreen mode
  1. SQL Review checks will dry run before the issue is created. Here let's create the issue regardless of the dry run result.

  2. After the issue is created, SQL Review will run automatically along with some other checks. You'll see there's a warning for the task on Prod.

bb-issue-warning-prod

bb-issue-sql-review-warning

  1. Click Edit, paste this SQL statement and click Save. Apply this change to all tasks. The SQL checks will run again, and you'll see the warning disappear and it will roll out automatically.
ALTER TABLE "public"."employee"
ADD COLUMN "country" text NOT NULL DEFAULT '';
Enter fullscreen mode Exit fullscreen mode

bb-issue-done-free

  1. Click View change to see the diff or go to Change History to view all changes.

bb-issue-done-show-diff

bb-proj-change-list

Level 2: Manual rollout with dedicated roles and scheduled time (Pro Plan)

With Pro Plan, you'll get two additional features:

  • Manual rollout policy. You can specify multiple pre-defined roles to manually roll out the change.
  • Time scheduling. You can specify a particular time to roll out the change.

To simplify the process, we'll use 14-day enterprise trial here. Click the Start free trial to upgrade.

  1. Go to Environments > Prod, choose Manual rollout by dedicated roles and check all the roles. Click Update.

bb-env-prod-manual

  1. Go to Sample Project, click Edit Schema, choose both Test and Prod databases, and click Next. Paste the following SQL statements into Raw SQL, and click Preview issue.
ALTER TABLE "public"."employee"
    ADD COLUMN "city" text NOT NULL DEFAULT '';
Enter fullscreen mode Exit fullscreen mode
  1. Click Create, and after Task checks runs, you'll see the SQL running on Test automatically but waiting to run on Prod.

bb-issue-prod-waiting

  1. Click Rollout to trigger directly or set a Rollout time.

bb-proj-set-rollout-time

Level 3: Manual rollout with custom approval (Enterprise Plan)

If you want the approval flow to be more dynamic based on the context like the type of SQL statements, the affected rows and etc,
then you can configure custom approval flow.

Go to Instances and click Assign License for both instances. Without doing this, the enterprise plan required for custom approval won't be enabled on instances.

  1. Click Settings (the gear icon) > Security & Policy > Custom Approval. Choose Project Owner -> DBA as High Risk for DDL.

bb-custom-approval

  1. Click the related risk rules or Settings (the gear icon) > Security & Policy > Risk Center. Click Add rule. Set High Risk and DDL as The risk for the production environment is considered to be high.

bb-risk-center-add-rule

  1. Click Settings (the gear icon) and add a DBA account. Click it in the Active members list, and edit its password. You'll need this account later to do the approval.

  2. Go to Environments > Prod, you now unlock the third option for rollout policy Manual rollout by the last approver from the custom approval flow. Choose it.

bb-env-prod-manual-approval

  1. Go to Sample Project, click Edit Schema, choose both Test and Prod databases, and click Next. Paste the following SQL statements into Raw SQL, and click Preview issue.
ALTER TABLE "public"."employee"
    ADD COLUMN "district" text NOT NULL DEFAULT '';
Enter fullscreen mode Exit fullscreen mode
  1. Create the issue and the approval flow is matched. Since it's in the pipeline, it will be brought forward to the Test stage to review earlier. Follow its order to approve. DBA will be the one to do the rollout.

bb-issue-custom-approval-waiting

Summary

You have now learned how to use Bytebase to deploy schema migration in a basic way. Bytebase also provides other advanced features for your interests:

  • GitOps - Observe Git code push events and trigger schema migration;
  • Batch changes - Change multiple databases in a single workflow;
  • Branching - Collaborate on schema changes using Git-like branching;
  • Changelist - Organize and apply changes sequentially, or export them for offline execution.

Join our Discord channel to discuss.

schema Article's
30 articles in total
Favicon
Schema Markup can boost your click-through rates by up to 30%?
Favicon
Custom schema specific Supabase Server Component clients in Grida Form workspace
Favicon
Zod for TypeScript Schema Validation: A Comprehensive Guide
Favicon
Database schema design of Splitwise application
Favicon
Validating JSON Schema with Fixed and User-Defined Keys in Python
Favicon
Using Zod's z.union: An Important Pitfall to Avoid
Favicon
Desvendando o Atlas: Gerencie Seus Esquemas de Banco de Dados com EstiloπŸš€
Favicon
Customize Schema with @extend_schema_view
Favicon
Hotel reservation Schema design (PostgreSQL)
Favicon
How to Insert Data into Specific Table of PostgreSQL Schemas with Node.js
Favicon
Typesafe Supabase Flutter Queries
Favicon
Using yup to build schema with value parsing and validation.
Favicon
Designing an Optimal Database Schema for a Followers-Following System in a Blog-Post App
Favicon
JobPosting from Schema.org
Favicon
Unlocking the Power of Mongoose Schemas: Enhancements for Better Data Handling
Favicon
Unraveling the Power of Schema Markup: Elevating Your Website's Visibility and Performance
Favicon
How to handle complex json schema
Favicon
Navigating Django Schemas with Ease: How Django-schema-viewer Helps Developers
Favicon
🐣Your First Database Schema Change in 5 Minutes with Bytebase
Favicon
Multiplos schemas no mesmo tΓ³pico Kafka na linha de comando
Favicon
How pgroll works under the hood
Favicon
Automating API Documentation: A Journey from TypeScript to OpenAPI and Schema Governence with Optic
Favicon
Master schema validation in TypeScript with Zod
Favicon
πŸš› Deploy Database Schema Migrations with Bytebase
Favicon
Random Data Generator Website
Favicon
Xata's JSON Column Type
Favicon
Introducing pgroll: Zero-downtime, Reversible, Schema Migrations for Postgres
Favicon
Designing Your Database Schema
Favicon
WHAT ARE THE TYPES OF SCHEMA MARKEUP?
Favicon
Iceberg Schema Evolution in Trino

Featured ones: