Web-based, zero-config, dependency-free database schema change and version control tool for teams

Overview

Bytebase

Live DemoInstallHelpDevelopmentDesign Doc

license status go report Docker pulls

Bytebase is a web-based, zero-config, dependency-free database schema change and version control management tool for developers and DBAs.

  • Web-based schema change and management workspace for teams
  • Version control based schema migration (Database-as-Code)
  • Classic UI based schema migraiton (SQL Review)
  • Detailed migration history
  • Backup and restore
  • Anomaly center
  • Environment policy
    • Approval policy
    • Backup schedule enforcement
  • Schema drift detection
  • Backward compatibility schema change check
  • Role-based access control (RBAC)
  • MySQL support
  • PostgreSQL support
  • TiDB support
  • Snowflake support
  • ClickHouse support
  • GitLab CE/EE support
  • Webhook integration for Slack, Discord, MS Teams, DingTalk(钉钉), Feishu(飞书), WeCom(企业微信)
  • GitLab.com support
  • GitHub support
Fig.1 - Dashboard

Screenshot

Fig.2 - SQL review issue pipeline

Screenshot

Fig.3 - GitLab based schema migration (Database-as-code)

Screenshot

Installation

Detailed installation guide

Run on localhost:8080

docker run --init --name bytebase --restart always --publish 8080:8080 --volume ~/.bytebase/data:/var/opt/bytebase bytebase/bytebase:0.9.0 --data /var/opt/bytebase --host http://localhost --port 8080

Run on https://bytebase.example.com

docker run --init --name bytebase --restart always --publish 80:80 --volume ~/.bytebase/data:/var/opt/bytebase bytebase/bytebase:0.9.0 --data /var/opt/bytebase --host https://bytebase.example.com --port 80

📕 Docs

User doc https://docs.bytebase.com

In particular, get familar with various product concept such as data model, roles and permissions and etc.

Design doc

https://github.com/bytebase/bytebase/tree/main/docs/design

🕊 Interested in contributing?

  1. Checkout issues tagged with good first issue.

  2. We are maintaining an online database glossary list, you can add/improve content there.

🏗 Development

Bytebase is built with a curated tech stack. It is optimized for developer experience and is very easy to start working on the code:

  1. It has no external dependency.
  2. It requires zero config.
  3. 1 command to start backend and 1 command to start frontend, both with live reload support.

Tech Stack

Screenshot

Data Model

Screenshot

Prerequisites

  • Go (1.16 or later)
  • Yarn
  • Air (For backend live reload)

Steps

  1. Install Air.

  2. Pull source.

    git clone https://github.com/bytebase/bytebase
  3. Set up pre-commit hooks.

     cd bytebase
     pre-commit install
     pre-commit install --hook-type commit-msg
  4. Start backend using air (with live reload).

    air -c scripts/.air.toml

    Change the open file limit if you encounter "error: too many open files".

    ulimit -n 10240
    
  5. Start frontend (with live reload).

    cd frontend && yarn && yarn dev

Bytebase should now be running at https://localhost:3000 and change either frontend or backend code would trigger live reload.

Coding guideline

Here

Notice

Bytebase is in public alpha and we may make breaking schema changes between versions. We plan to stabilize the schema around the middle of August. In the mean time, if you are eager to try Bytebase for your business and encounter issue when upgrading to the new version. Please contact [email protected] or join our Discord server, and we will help you manually upgrade the schema.

We are hiring

We are looking for an experienced frontend engineer to lead Bytebase frontend development. Check out our jobs page.

Issues
  • fix(ui/ux): pipeline flow nav item overflow

    fix(ui/ux): pipeline flow nav item overflow

    Before: Xnip2022-02-26_13-54-09

    After fix: image

    Fixed this layout problem only in PC viewport, it also appear in mobile view.

    See this.

    Xnip2022-02-26_14-07-43

    Unlike the previous ones, this is the tooltip element css position, and a solution can be negotiated.

    opened by Innei 16
  • fix: tenant mode VSC with DatebaseNameTemplate task execute error

    fix: tenant mode VSC with DatebaseNameTemplate task execute error

    Signed-off-by: cluas [email protected]

    case:

    • tenant template: {{DB_NAME}}_{{TENTANT}}
    • tenants: a, b
    • demo db: demo
    • file path template: {{DB_NAME}}__{{VERSION}}__{{TYPE}}__{{DESCRIPTION}}.sql
    • example push file: demo__v0.1.0__migrate__demo.sql
    • tasks after gitops webhook: task1 {database: demo_a, namespace: demo_a}}, task2 {database: demo_b, namespace: demo_b}}

    but here it parse {{DB_NAME}}, in this case, always is demo. so subsequent tasks will immediately go wrong.

    cla-signed 
    opened by Cluas 14
  • Error status code 422 trying to integrate version control with project

    Error status code 422 trying to integrate version control with project

    Provide the MySQL version you are using (if related with instance/database operation) MariaDB 10.6.4

    Provide the Bytebase version you are using 0.8.1

    Describe the bug After adding a project, database, initial migration schema, and Git provider (self hosted gitlab instance), I attempted to integrate my project with Gitlab. At the final step where you click Finish it gives me an error message "Failed to create webhook for project ID: 101, status code: 422"

    Steps or screenshots to reproduce the behavior

    1. Go to project
    2. Click Version Control tab
    3. Click Version Control Workflow and click Configure version control button
    4. Click on existing Git provider
    5. Click on repo
    6. Enter "master" as the branch
    7. Click Finish
    8. See error: "Failed to create webhook for project ID: 101, status code: 422"

    Expected behavior

    Version control is integrated successfully.

    Desktop (please complete the following information):

    • Browser Firefox 91.3.0esr

    I'm not sure what to look for. I also tried unprotecting the master branch for the repo but I'm still seeing this error message. If it's relevant, I do not have any .sql files present in the repo yet as I'm not sure whether Bytebase is supposed to create them for me, or if I'm supposed to provide them ahead of time... I assumed Bytebase would generate the .sql files in the repo.

    bug 
    opened by linucksrox 12
  • feat(PITR): embed mysqlbinlog

    feat(PITR): embed mysqlbinlog

    TODO:

    • [x] Embed mysqlbinlog-8.0.28-macos11-arm64
    • [x] Embed mysqlbinlog-8.0.28-linux-glibc-2.17-x86_64
    • [x] A tiny unit test for mysqlbinlog-8.0.28-linux-glibc-2.17-x86_64
    • [x] Describe production process
    cla-signed 
    opened by h3n4l 11
  • When docker run according to docs ERROR   failed to extract txz file, error: failed to create directory

    When docker run according to docs ERROR failed to extract txz file, error: failed to create directory "share/postgresql/", error: mkdir /var/opt/bytebase/resources: permission denied

    Provide the Bytebase version you are using docker 1.0.0 Describe the bug

    docker run --init --name bytebase --restart always --publish 80:80 --volume ~/.bytebase/data:/var/opt/bytebase bytebase/bytebase:1.0.0 --data /var/opt/bytebase --host https://bytebase.example.com --port 80
    -----Config BEGIN-----
    mode=release
    server=https://bytebase.example.com:80
    datastore=https://bytebase.example.com:81
    frontend=https://bytebase.example.com:80
    dsn=file:/var/opt/bytebase/bytebase.db
    resourceDir=/var/opt/bytebase/resources
    pgdataDir=/var/opt/bytebase/pgdata
    seedDir=seed/release
    readonly=false
    demo=false
    debug=false
    -----Config END-------
    2022-03-11 03:23:24.091208 I | Installing Postgres OS "linux" Arch "amd64" txz "postgres-linux-x86_64-alpine_linux.txz"
    2022-03-11T03:23:24.092Z        ERROR   failed to extract txz file, error: failed to create directory "share/postgresql/", error: mkdir /var/opt/bytebase/resources: permission denied
    
    bug 
    opened by abserari 11
  • Schema update in VCS doesn't trigger Bytebase to apply the change

    Schema update in VCS doesn't trigger Bytebase to apply the change

    Provide the MySQL version you are using (if related with instance/database operation) MySQL 5.6.30

    Provide the GitLab version you are using (if related with VCS integration) 14.5.0

    Provide the Bytebase version you are using 0.8.1

    Describe the bug After integrating with self hosted Gitlab, I set the file path template and schema path template, then committed a schema update to the repository matching the template, but nothing happened in Bytebase. Even with debug logging enabled, I don't see any activity on Bytebase.

    Steps or screenshots to reproduce the behavior

    1. Integrate VCS with a project
    2. Set branch to master
    3. Set file path template to {{DB_NAME}}{{VERSION}}{{TYPE}}.sql
    4. Click Update button
    5. Commit a file in the root directory of the master branch named dbtest__202112031025__migrate.sql
    6. Expect something to happen in Bytebase but nothing happens
    7. Check the debug output, but there is nothing
    8. Confirm the instance name is dbtest
    9. Confirm the database name is dbtest

    Expected behavior

    I believe a new migration is supposed to happen in Bytebase, but I'm not sure if it's an issue where Gitlab is not calling Bytebase to do the update, or if Bytebase is not polling Gitlab for changes, or maybe it's not detecting a matching file pattern.

    Desktop (please complete the following information):

    • Browser Firefox 91.3.0esr

    Additional context

    It would be helpful if the documentation explained in a little more detail what the process was. For example, does Gitlab send a webhook reqeust to Bytebase after committing to the repo, or does Bytebase periodically check for changes in the repo? Also it would be helpful in the case where Bytebase checked for schema updates to log that it didn't find any files matching the pattern.

    bug 
    opened by linucksrox 11
  • fix: send SIGINT to clean up resources

    fix: send SIGINT to clean up resources

    Send SIGINT to backend when restarting to make sure the sqlite database is closed properly.

    This PR is blocked by a PR for air.

    After this change, I start to see the "BYE" banner when I make a change: Screen Shot 2021-12-02 at 8 46 46 PM

    opened by suzaku 11
  • Chrome all labels show as their variable names.

    Chrome all labels show as their variable names.

    Provide the Bytebase version you are using 1.0.3, I also tested 1.0.2 and 1.0.0

    Describe the bug

    When using Google Chrome all labels show as their variable names.

    Steps or screenshots to reproduce the behavior

    1. Startup Bytebase
    2. visit the dashboard
    Screenshot 2022-04-13 at 14 51 55

    Expected behavior

    As in example screenshots and safari. actual content & titles instead of variable namings. Screenshot 2022-04-13 at 15 08 47

    Desktop (please complete the following information):

    • Browser [chrome]
    • Version [100]

    Additional context

    • Update: It seems like a content management issue in chrome 100. A lot of content isn't displayed. e.g. Modal pop-ups have no content. only a variable name.
    bug 
    opened by kevinbevers 10
  • feat: move oauth token exchange logic to the backend

    feat: move oauth token exchange logic to the backend

    function effected:

    1. login via VCS both access token and application secret is invisible to the frontend
    2. set up a VCS for the workspace for the user need to set up the secret for the first time, no logic changed
    3. set up a VCS repo for the project application secret is invisible to the frontend, the access token will still return by the backend for we may still need the token to access VCS resource Possible improvement: store the gitlab token in the cookie just like how we store our access token
    cla-signed 
    opened by zhouzilong2020 10
  • Introduce testify assertions for simplifying testing code

    Introduce testify assertions for simplifying testing code

    So far, bytebase adopt the bundled go testing framework to run unit test. It's good to follow and well integrated with the ecosystem.

    However, manually verify assertions and write error message handy is a bit awkward. Thus, I propose we introduce testify assertions for simplifying testing code.

    Before:

    func TestUnmarshal(t *testing.T) {
    	// ...
    	if err := jsonapi.UnmarshalPayload(bytes.NewReader(b), databasePatch); err != nil {
    		t.Fatal(err)
    	}
    
    	var labels []*DatabaseLabel
    	if err := json.Unmarshal([]byte(*databasePatch.Labels), &labels); err != nil {
    		t.Fatal(err)
    	}
    	for i, label := range labels {
    		if keys[i] != label.Key || values[i] != label.Value {
    			t.Fatal("Key value pair does not match!")
    		}
    	}
    }
    

    After:

    func TestUnmarshal(t *testing.T) {
    	// ...
    	require.NoError(t, jsonapi.UnmarshalPayload(bytes.NewReader(b), databasePatch))
    
    	var labels []*DatabaseLabel
    	require.NoError(t, json.Unmarshal([]byte(*databasePatch.Labels), &labels))
    	for i, label := range labels {
    		require.Equal(t, keys[i], label.Key)
    		require.Equal(t, values[i], label.Value)
    	}
    }
    

    What do you think?

    Notes

    Note that what I propose here is assertion of testify only, excluding its suite gear which share global state and somehow buggy.

    Also, I don't propose a series of works to globally migrate tests from one flavor to another. Since we're working well so far, I tend to regard such an introduction as supplements and best practice which we can gradually adopt. (Yes. The original motivation is when I debugging bytebase, I'd like to write testify assertions instead of manually asserting.)

    There may be some concerns that the last release of testify upstream was made more than one year ago. But I think the current functionality is good to use. Otherwise, we may write our own assertions but it's almost duplicate work of good enough open-source artifacts.

    enhancement 
    opened by tisonkun 10
  • Timeout while adding existing Clickhouse instance, UI hangs

    Timeout while adding existing Clickhouse instance, UI hangs

    Clickhouse version: 21.11.1 revision 54450

    Provide the Bytebase version you are using 0.12.0 running in Docker

    Describe the bug

    While running a small setup locally for testing, Bytebase in Docker + 4-node cluster of Clickhouse in Docker. When clickhouse instance doesn't contain any objects or user DBs/tables, adding an instance works quick and as expected. However, once there are objects defined (10+ DBs, each containing a number of tables), no data, the 'add Instance' dialog window never finishes, keeps stuck on 'creating' phase:

    Screenshot 2022-01-27 at 11 34 05

    and after 20-30 seconds fails with an error message in the lower-right corner: Screenshot 2022-01-27 at 11 33 56

    After closing the window which never finishes, it looks like the databases are all get imported, so hitting some sort of a timeout in UI, but in a backend it seems to generally work.

    I presume it's related to Bytebase connecting to Clickhouse and taking some time to extract the schema definition, and hitting a timeout at some point.

    Steps or screenshots to reproduce the behavior

    1. Go to 'Instance' menu section
    2. Click on 'Add instance'
    3. Fill in details for a Clickhouse instance running in cluster configuration (maybe a single instance will do too?) containing a good number of objects.
    4. Clic on 'Create'.

    Expected behavior

    Instance 'Create' form window closing and reporting success.

    Desktop (please complete the following information):

    • Browser: Safari
    • Version 15.1
    bug 
    opened by NickStepanov 10
  • feat(frontend): PITR create issue

    feat(frontend): PITR create issue

    • [x] The [Restore] button only enabled when allowAdmin and doneBackupList.length > 0. "done" backup is a backup with backup.status === "DONE".
    • [x] The date-time picker will disable dates after today or before the earliest date of available backups.
    • [x] Call [POST] /api/issue endpoint to validate and create a PITR issue.
    • [x] isDev() guarded.
    • [ ] PITR optimized issue UI is not implemented yet. Falling back to standard mode UI. Will do this in future PRs.
    • [ ] Introduce a menu of something to "Restore" in the "Backup" panel, allowing the user to choose whether to restore the backup to a new database or use PITR.

    pitr-2

    cla-signed 
    opened by LiuJi-Jim 0
  • FindMigrationHistoryList error when use external pg

    FindMigrationHistoryList error when use external pg

    • use external pg as bytebase db
    • create db on tenant mode project check duplicate version error: "failed to connect to `host=xxx user=xxx database=bytebase`: server error (FATAL: database \"bytebase\" does not exist (SQLSTATE 3D000))"

    https://github.com/bytebase/bytebase/blob/5d3ca6e452bec01bc8362964c3c2b4698d04e782/plugin/db/util/driverutil.go#L191 https://github.com/bytebase/bytebase/blob/5d3ca6e452bec01bc8362964c3c2b4698d04e782/plugin/db/pg/pg.go#L1011

    I think it was these two places that caused this problem,the dsn of the target database is used instead of the dsn of the external pg

    bug 
    opened by Cluas 17
  • Existing PG extensions & views will block --pg perform metadb migration

    Existing PG extensions & views will block --pg perform metadb migration

    Provide the Bytebase version you are using

    v1.0.4

    Describe the bug

    Use external pg with existing schemas prevent bytebase perform metadb migration.

    The docker-compose.yaml conf file

    version: "3"
    services:
      bytebase:
        container_name: bytebase
        image: bytebase/bytebase:1.0.4
        restart: unless-stopped
        ports:
          - "8887:8887"
        command: |
          --host http://ddl.pigsty --port 8887 --data /var/opt/bytebase --pg postgres://dbuser_bytebase:[email protected]:5432/bytebase
    

    The error output:

    2022-05-04T03:22:18.808Z	INFO	Establishing external PostgreSQL connection...	{"pgURL": "postgres://dbuser_bytebase:[email protected]:5432/bytebase"}
    2022-05-04T03:22:18.833Z	INFO	Apply database migration if needed...
    2022-05-04T03:22:18.833Z	INFO	The database schema has not been setup.
    2022-05-04T03:22:18.834Z	INFO	The prod cutoff schema version: 1.0.1
    2022-05-04T03:22:18.859Z	ERROR	cannot open db: failed to migrate: failed to migrate initial schema version "migration/prod/LATEST.sql", error: failed to get views from database "bytebase": schema "repack" view "primary_keys" has empty definition; please check whether proper privileges have been granted to Bytebase
    2022-05-04T03:22:18.859Z	INFO	Trying to stop Bytebase...
    2022-05-04T03:22:18.859Z	INFO	Bytebase stopped properly.
    
    2022-05-04T03:24:28.132Z	INFO	Establishing external PostgreSQL connection...	{"pgURL": "postgres://dbuser_bytebase:[email protected]:5432/bytebase"}
    2022-05-04T03:24:28.153Z	INFO	Apply database migration if needed...
    2022-05-04T03:24:28.153Z	INFO	The database schema has not been setup.
    2022-05-04T03:24:28.153Z	INFO	The prod cutoff schema version: 1.0.1
    2022-05-04T03:24:28.178Z	ERROR	cannot open db: failed to migrate: failed to migrate initial schema version "migration/prod/LATEST.sql", error: failed to get views from database "bytebase": schema "monitor" view "pg_stat_statements_info" has empty definition; please check whether proper privileges have been granted to Bytebase
    2022-05-04T03:24:28.178Z	INFO	Trying to stop Bytebase...
    2022-05-04T03:24:28.178Z	INFO	Bytebase stopped properly.
    

    The database is already provisioned with extension pg_stat_statements under schema monitor and pg_repack extension under schema pg_repack.

    After drop extension pg_repack and drop pg_stat_statements, bytebase launch schema-migration successfully.

    Expected behavior

    Is there some introspection failure for views?

    ByteBase will ignore existing schema, or ignore view created by other extensions.

    Or at least add options to specify which schemas to be omitted.

    bug 
    opened by Vonng 0
  • docker restart bytebase report errors  error: database

    docker restart bytebase report errors error: database "bb" has already applied version 10001

    version bytebase/bytebase:1.0.1

    waiting for server to start....2022-04-01 05:41:23.521 UTC [15] LOG: starting PostgreSQL 14.2 on x86_64-pc-linux-musl, compiled by gcc (Alpine 6.3.0) 6.3.0, 64-bit 2022-04-01 05:41:23.521 UTC [15] LOG: listening on IPv4 address "127.0.0.1", port 5679 2022-04-01 05:41:23.521 UTC [15] LOG: could not bind IPv6 address "::1": Address not available 2022-04-01 05:41:23.523 UTC [15] LOG: listening on Unix socket "/tmp/.s.PGSQL.5679" 2022-04-01 05:41:23.525 UTC [16] LOG: database system was shut down at 2022-04-01 05:40:23 UTC 2022-04-01 05:41:23.528 UTC [15] LOG: database system is ready to accept connections done server started 2022-04-01T05:41:23.638Z INFO Apply database migration if needed... 2022-04-01T05:41:23.638Z INFO Current schema version before migration: 1.0 2022-04-01T05:41:23.638Z INFO Migrating migration/10001__init_schema.sql... 2022-04-01T05:41:23.994Z ERROR cannot open db: failed to migrate: failed to migrate schema version "10001__init_schema.sql", error: database "bb" has already applied version 10001 2022-04-01T05:41:23.994Z INFO Trying to stop Bytebase... 2022-04-01T05:41:23.994Z INFO Trying to shutdown postgresql server... 2022-04-01 05:41:23.995 UTC [15] LOG: received fast shutdown request 2022-04-01 05:41:23.996 UTC [15] LOG: aborting any active transactions 2022-04-01 05:41:23.996 UTC [32] FATAL: terminating connection due to administrator command 2022-04-01 05:41:23.996 UTC [15] LOG: background worker "logical replication launcher" (PID 22) exited with exit code 1 2022-04-01 05:41:23.997 UTC [17] LOG: shutting down 2022-04-01 05:41:24.007 UTC [15] LOG: database system is shut down waiting for server to shut down.... done server stopped 2022-04-01T05:41:24.095Z INFO Bytebase stopped properly.

    bug 
    opened by huangbipeng 4
  • ☂️ GitHub Git provider

    ☂️ GitHub Git provider

    Context

    This is a tracking issue for adding GitHub as a Git provider based on Bytebase GitHub Git provider design doc.

    Frontend and backend work can be parallelized, and the frontend uses IsDev() to guard changes until completion.

    TODO

    • [x] Make necessary changes to the database schema to allow the existence of GITHUB_COM as a value of VCS type.
    • [x] Implement the VCS provider workflow
      • [x] Implement the necessary methods of vcs.Provider interface for GitHub.com
      • [x] Audit call sites to the implemented methods of vcs.Provider and update places that are hard-coded for GitLabSelfHost to have code branches to handle GitHubCom.
      • [x] Implement necessary frontend changes.
    • [ ] Implement the project VCS setting
      • [ ] Implement the necessary methods of vcs.Provider interface for GitHub.com
        • Previously hard-coded repositoryID in method signatures is very GitLab-specific; the recommended alternative is externalID.
      • [ ] Audit call sites to the implemented methods of vcs.Provider and update places that are hard-coded for GitLabSelfHost to have code branches to handle GitHubCom.
      • [ ] Implement necessary frontend changes.
    • [ ] Add two POST endpoints to accept access token exchange (/api/github/exchangetoken and fetching repositories (/api/github/repository) requests for GitHub.
    • [ ] Implement GitHub webhook handler
    • [ ] Timebox: Support sign-in with GitHub.com
    opened by unknwon 0
Releases(1.0.5)
  • 1.0.5(May 12, 2022)

    What's Changed

    • Launch the Chinese version of our official website.

    🎄 Enhancements

    • Add custom project webhook.
    • Add "Format on save" checkbox on the issue detail page.
    • Add "Sync schema afterward" checkbox on the instance create and detail page to allow users to disable the database sync if needed.

    🐞 Bug Fix

    • Fix bugs that prevent GitLab providers from being added or modified under certain circumstances, and improve the overall experience of integrating GitLab for users.

    🎠 Community

    Source code(tar.gz)
    Source code(zip)
    bytebase_1.0.5_Darwin_arm64.tar.gz(47.55 MB)
    bytebase_1.0.5_Darwin_x86_64.tar.gz(47.67 MB)
    bytebase_1.0.5_Linux_arm64.tar.gz(29.80 MB)
    bytebase_1.0.5_Linux_x86_64.tar.gz(32.82 MB)
    checksums.txt(404 bytes)
  • 1.0.4(Apr 28, 2022)

    What's Changed

    Support -pg option to boot Bytebase.

    🚀 Features

    • Support --dsn option in CLI.
    • Add installation script of CLI.
    • Add dashboard page to manage all sheets.
    • Owner and DBA can view all projects under Settings.
    • Added /healthz health check endpoint.

    🎄 Enhancements

    • Expose Visit Default Project button explicitly.

    🎠 Community

    New Contributors

    Full Changelog:

    Changelog

    • acf5e85 chore: remove ssl_mode disable mode if users don't set SSL (#1170)
    Source code(tar.gz)
    Source code(zip)
    bytebase_1.0.4_Darwin_arm64.tar.gz(47.49 MB)
    bytebase_1.0.4_Darwin_x86_64.tar.gz(47.63 MB)
    bytebase_1.0.4_Linux_arm64.tar.gz(29.75 MB)
    bytebase_1.0.4_Linux_x86_64.tar.gz(32.77 MB)
    checksums.txt(404 bytes)
  • 1.0.3(Apr 14, 2022)

    What's Changed

    🚀 Features

    • Toggle Debug mode at runtime for easier troubleshooting

    🎄 Enhancements

    • [SQL editor] support more types of EXPLAIN queries on the basis of EXPLAIN SELECT, such as EXPLAIN INSERT.

    🎠 Community

    New Contributors

    • @0xflotus made their first contribution in https://github.com/bytebase/bytebase/pull/805
    • @Sepush made their first contribution in https://github.com/bytebase/bytebase/pull/856
    • @milkwine made their first contribution in https://github.com/bytebase/bytebase/pull/874
    • @unknwon made their first contribution in https://github.com/bytebase/bytebase/pull/941
    • @Cluas made their first contribution in https://github.com/bytebase/bytebase/pull/1071

    Full Changelog: https://github.com/bytebase/bytebase/compare/v1.0.2...v1.0.3

    Source code(tar.gz)
    Source code(zip)
    bytebase_1.0.3_Darwin_arm64.tar.gz(45.64 MB)
    bytebase_1.0.3_Darwin_x86_64.tar.gz(45.70 MB)
    bytebase_1.0.3_Linux_arm64.tar.gz(28.03 MB)
    bytebase_1.0.3_Linux_x86_64.tar.gz(30.89 MB)
    checksums.txt(404 bytes)
  • 1.0.2(Mar 31, 2022)

    What's Changed

    • Our official documentation switches from gitbook to bytebase.com/docs. Now developers can follow https://bytebase.com/docs/document-write-guide to commit your changes.

    🚀 Features

    • Support branding customization (available in Team/Enterprise Plan).

    🎄 Enhancements

    • [SQL Editor] Highlight the editing SQL query block.
    • [SQL Editor] Add SQL query format button.
    • Bump tailwind css to v3. JIT mode is also enabled to support arbitrary values.
    • Switch frontend package manager from yarn to pnpm, helping developers to save time and disk spaces.

    🎠 Community

    • Open source an Employee sample database for MySQL https://github.com/bytebase/employee-sample-database-mysql based on https://github.com/datacharmer/test_db. We prepare 2 datasets: -- Full dataset (~170 MB) including 300024 employee records. -- Small dataset (~6 MB) including 10000 employee records.
    • We're working to support online schema change for MySQL using gh-ost. You can find the design doc at https://github.com/bytebase/bytebase/blob/main/docs/design/gh-ost-integration.md
    • Switch license from APL 2.0 to MIT.
    • Thanks to @unknwon for the PR feat: add migration for GITHUB_COM to be a valid Git and role provider #941
    • Thanks to @Sepush for the PR refactor: use script setup&fix type #856

    New Contributors

    • @0xflotus made their first contribution in https://github.com/bytebase/bytebase/pull/805
    • @Sepush made their first contribution in https://github.com/bytebase/bytebase/pull/856
    • @milkwine made their first contribution in https://github.com/bytebase/bytebase/pull/874
    • @unknwon made their first contribution in https://github.com/bytebase/bytebase/pull/941

    Full Changelog: https://github.com/bytebase/bytebase/compare/v1.0.1...v1.0.2

    Source code(tar.gz)
    Source code(zip)
  • 1.0.1(Mar 14, 2022)

    What's Changed

    🚀 Features

    • Support instance read-only connection. Once configured, Bytebase will use this user to query databases in SQL Editor and will use it in all read-only scenarios in the future.

    🎄 Enhancements

    • [Tenant Mode] Enable Data Change (DML) for tenant mode projects.
    • [SQL Schema Review] Allow users to edit SQL statements.
    • [SQL Schema Review] Allows retry for failed migration with invalid SQL statement.
    • [SQL Editor] Change the save sheet logic. Save the sheet when clicking the save button or using the shortcut (CMD + S).
    • [Installation Improvement] Improved installation on Linux platform.

    🐞 Notable bug fixes

    • Several security enhancements.

    🎠 Community

    New Contributors

    • @0xflotus made their first contribution in https://github.com/bytebase/bytebase/pull/805
    • @Sepush made their first contribution in https://github.com/bytebase/bytebase/pull/856

    Full Changelog: https://github.com/bytebase/bytebase/compare/v1.0.0...v1.0.1

    Source code(tar.gz)
    Source code(zip)
  • 1.0.0(Mar 8, 2022)

    What's Changed

    Announce our Team Plan

    With over a year of hard work and 3500+ commits, we finally reach the milestone to announce our 1.0.0 version and our Team Plan. The team plan includes:

    • Role-Based-Access-Control (RBAC) with Owner, DBA, Developer roles catering to the collaboration during database development.
    • GitLab login.
    • SQL backward compatibility check and schema drift detection.
    • Per-environment schema review and backup policy.

    The price starts at $29 per instance per month. Please visit our pricing page for more details.

    Enhancement

    • (SQL Editor) Add an EXPLAIN button adjacent to the run button.
    • (SQL Editor) Redesign the database connection navigation and connection status.
    • (SQL Editor) Run non-SELECT SQL navigate to the different workflow.
    • Improved tenant project pipeline UI.
    • Switch to use PostgreSQL for storing Bytebase metadata. This enables us to handle more complex scenarios down the road.
    • Add quickstart for preparing an environment including Bytebase, GitLab (macOS Apple Silicon) and Clickhouse Cluster.
    • Sync project members from configured VCS (GitLab).

    Bug fix

    • (SQL Editor) Query result table cover display.
    • (SQL Editor) Query result table attributes order.

    Sunset

    • Retire issue rollback feature.

    Community

    New Contributors

    • @Juneezee made their first contribution in https://github.com/bytebase/bytebase/pull/264
    • @wuhan005 made their first contribution in https://github.com/bytebase/bytebase/pull/340
    • @qsliu2017 made their first contribution in https://github.com/bytebase/bytebase/pull/399
    • @cosmtrek made their first contribution in https://github.com/bytebase/bytebase/pull/410
    • @d-bytebase made their first contribution in https://github.com/bytebase/bytebase/pull/436
    • @stormcat24 made their first contribution in https://github.com/bytebase/bytebase/pull/453
    • @tisonkun made their first contribution in https://github.com/bytebase/bytebase/pull/611
    • @raysarl made their first contribution in https://github.com/bytebase/bytebase/pull/624
    • @Innei made their first contribution in https://github.com/bytebase/bytebase/pull/668
    • @snyk-bot made their first contribution in https://github.com/bytebase/bytebase/pull/685
    • @dragonly made their first contribution in https://github.com/bytebase/bytebase/pull/703

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.10.0...v1.0.0

    Source code(tar.gz)
    Source code(zip)
  • 0.13.0(Feb 17, 2022)

    What's changed

    New Features

    • SQL editor supports sheet sharing.
    • Remodel query saving as sheets.

    Enhancement

    • Searchable member selector.
    • Database label related features are now available for standard mode projects now.
    • Show comprehensive schema comparison when schema drift is detected.
    • Add quickstarts for MySQL and Clickhouse.

    Bug fix

    • Prevent XSS in SQL editor.
    • Filter improper authorization of user inbox.

    Community

    • Our gratitude goes to @boyapatisandeep for the bug report https://github.com/bytebase/bytebase/issues/543 and @NickStepanov for bringing up discussion https://github.com/bytebase/bytebase/discussions/350
    • Thanks to @Juneezee https://github.com/bytebase/bytebase/pull/264
    • @wuhan005 https://github.com/bytebase/bytebase/pull/340
    • @cosmtrek https://github.com/bytebase/bytebase/pull/410
    • @stormcat24 https://github.com/bytebase/bytebase/pull/453 for the contribution!

    New Contributors

    • @Juneezee made their first contribution in https://github.com/bytebase/bytebase/pull/264
    • @wuhan005 made their first contribution in https://github.com/bytebase/bytebase/pull/340
    • @qsliu2017 made their first contribution in https://github.com/bytebase/bytebase/pull/399
    • @cosmtrek made their first contribution in https://github.com/bytebase/bytebase/pull/410
    • @stormcat24 made their first contribution in https://github.com/bytebase/bytebase/pull/453
    Source code(tar.gz)
    Source code(zip)
  • 0.12.0(Jan 20, 2022)

    What's Changed

    New Features

    Multi-tenancy Database Management

    • Intelligent database management for tenants using identical schemas.
    • Creating and managing database labels used for searching resources and identifying tenants.
    • Flexible tenant database deployment such as multi-stage regional deployments.
    • Schema updates are applied to all tenants consistently. Adding a new tenant database will use the same schema from existing tenants.

    SQL Editor

    • Support keeping multiple editors under different tabs.
    • Jump to the schema change (DDL) / data change (DML) workflow from the SQL Editor.
    • Project based permission control.
    • Save Query: support saving the SQL statement, search it with highlight and delete.
    • Query History: record all executed queries.

    Signup and login via GitLab EE/CE

    Data change (DML) workflow

    Enhancement

    • Surface detailed error to the UI when --debug is enabled when starting Bytebase

    Bug fix

    • Fix the VCS schema write back after migration when the git branch name contains slash (e.g. features/foo) https://github.com/bytebase/bytebase/issues/396
    • Fix MySQL8.0 window functions syntax error https://github.com/bytebase/bytebase/issues/175

    Community

    • We are on the list of “The fastest-growing open-source startups in Q4 2021” by Runa Capital https://runacap.com/ross-index/q4-2021/

    New Contributors

    • @Juneezee made their first contribution in https://github.com/bytebase/bytebase/pull/264
    • @wuhan005 made their first contribution in https://github.com/bytebase/bytebase/pull/340
    • @cosmtrek made their first contribution in https://github.com/bytebase/bytebase/pull/410

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.11.0...0.12.0

    Source code(tar.gz)
    Source code(zip)
  • 0.11.0(Jan 6, 2022)

    What's Changed

    New Features

    (Preview) SQL Editor, It provides the following features:

    • Auto-complete and context menu.
    • Run SQL statement (only allow SELECT query) and display the result in a table view.
    • Navigate among different database connections via the left tree panel.
    • Display table schema info on the bottom left side panel.

    Enhancement

    • Refactor the underlying VCS module to make it pluggable.
    • kbar quickstart

    Bug fix

    • Fix the issue when we are unable to write back the latest schema to the Git repository after the migration succeeds.

    Community

    New Contributors

    • @Juneezee made their first contribution in https://github.com/bytebase/bytebase/pull/264

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.10.0...0.11.0

    Source code(tar.gz)
    Source code(zip)
  • 0.10.0(Dec 24, 2021)

    What's Changed

    New Features

    • 你好, 中文 Chinese Language Support
    • Earliest allowed time for executing a task

    Enhancement

    • Logging activity for altering SQL statement
    • Modal showing detailed check status

    Bug Fixes

    • Fix for Postgres CREATE DATABASE cannot run inside a transaction block
    • Fix for auto-increment starting value in MySQL schema
    • Auto refresh GitLab access token on expiration

    Community

    • Our gratitude goes to @linucksrox especially for the detailed bug report https://github.com/bytebase/bytebase/issues/108 and @suzaku again for continuous contribution

    New Contributors

    • @boojack made their first contribution in https://github.com/bytebase/bytebase/pull/219

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.9.0...0.10.0

    Source code(tar.gz)
    Source code(zip)
  • 0.9.0(Dec 9, 2021)

    NOTE: This version has some breaking schema change, please contact [email protected] and we will help you manually upgrade to the new version.

    Installation guide

    https://docs.bytebase.com/install/docker

    What's Changed

    New Features

    • Add cmd+k command bar experience
    • Add database webhook
    • Gitpod Code Preview

    Notable Bug Fixes

    • Fix tooltip position
    • Add the missing EVENT privilege to the instruction for configuring the MySQL user connection

    Community

    • Special thanks to @suzaku for PRs

    New Contributors

    • @zhouzilong2020 made their first contribution in https://github.com/bytebase/bytebase/pull/36
    • @spinningbot made their first contribution in https://github.com/bytebase/bytebase/pull/42
    • @LiuJi-Jim made their first contribution in https://github.com/bytebase/bytebase/pull/50
    • @xiaoluoboding made their first contribution in https://github.com/bytebase/bytebase/pull/49
    • @suzaku made their first contribution in https://github.com/bytebase/bytebase/pull/54

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.8.1...0.9.0

    Source code(tar.gz)
    Source code(zip)
  • 0.8.1(Nov 15, 2021)

    NOTE: If you upgrade from 0.8.x, no migration needed. If you upgrade before 0.8.x, there is some breaking schema change, please contact [email protected] and we will help you manually upgrade to the new version.

    Installation guide

    https://docs.bytebase.com/install/docker

    What's Changed

    Branding update

    Enhancements

    • New illustration for signin/signup page, 403, 404 pages.
    • New wizard on home page.
    • Properly populate instance default host in create instance form.

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.8.0...0.8.1

    Source code(tar.gz)
    Source code(zip)
  • 0.8.0(Nov 10, 2021)

    NOTE: This new release has some breaking schema change. If you upgrade from previous version, please contact [email protected] and we will help you manually upgrade to the new version.

    Installation guide

    https://docs.bytebase.com/install/docker

    Features

    • Add Snowflake support.

    Notable bug fixes

    • Mark the migration history as failed if the migration did fail.
    • Fix the PostgreSQL schema sync from AWS RDS and Google Cloud SQL #30.
    • Allow Bytebase to run on non-https host #31.

    Enhancements

    • Improve migration history table layout and surface migration SQL from the list.

    New Contributors

    • @RainbowDashy made their first contribution in https://github.com/bytebase/bytebase/pull/32

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.7.2...0.8.0

    Source code(tar.gz)
    Source code(zip)
  • 0.7.2(Oct 25, 2021)

    NOTE: If you upgrade from 0.7.x, no migration needed. If you upgrade before 0.7.x, there is some breaking schema change, please contact [email protected] and we will help you manually upgrade to the new version.

    Installation guide

    https://docs.bytebase.com/install/docker

    What's Changed

    New Features

    • Add ClickHouse® support. ClickHouse is an open-source, high performance columnar OLAP database management system for real-time analytics using SQL and it has a similar schema management requirement see #14.

    Enhancements

    • Refresh the database list immediately after updating the instance connection info.
    • Add shortcut button to create new database from the instance detail page.
    • Hide empty password checkbox in instance creation form. User can already leave the password field empty, so there is no need to have an extra checkbox.

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.7.1...0.7.2

    Source code(tar.gz)
    Source code(zip)
  • 0.7.1(Oct 18, 2021)

    NOTE: If you upgrade from 0.7.0, no migration needed. If you upgrade before 0.7.0, there is some breaking schema change, please contact [email protected] and we will help you manually upgrade to the new version.

    Installation guide

    https://docs.bytebase.com/install/docker

    What's Changed

    • Fix a bunch of security issue found by huntr.dev.
    • Allow Bytebase server to start only if the underlying schema's major and minor version both match. Before, we only require the major version match. We do this to avoid hidden error in case minor schema migration fails.

    New Contributors

    • @jiweiyuan made their first contribution in https://github.com/bytebase/bytebase/pull/24

    Full Changelog: https://github.com/bytebase/bytebase/compare/0.7.0...0.7.1

    Source code(tar.gz)
    Source code(zip)
  • 0.7.0(Oct 8, 2021)

    NOTE: This new release has some breaking schema change. If you upgrade from previous version, please contact [email protected] and we will help you manually upgrade to the new version.

    Installation guide

    https://docs.bytebase.com/install/docker

    Features

    • Add PostgreSQL support.
    • Schema drift detection.
    • Anomaly center.
    • Backward compatible schema migration check.
    • Backup schedule environment policy.
    • Side-by-side migration version diff.

    Enhancement

    • Improve the onboarding workflow to establish the initial schema baseline.
    • Allow user to specify empty password when connecting the instance (though not recommended).
    • Sync detailed VIEW schema info.
    Source code(tar.gz)
    Source code(zip)
  • 0.6.0(Sep 18, 2021)

    NOTE: This new release has some breaking schema change. If you upgrade from previous version, please contact [email protected] and we will help you manually upgrade to the new version.

    Features

    • Add TiDB support.
    • Add task check. Currently it enforces syntax and db connection check for database schema update task. Task will be blocked if check fails.

    Enhancement

    • Show VCS push event info in the migration history detail page.
    • Improve UX for configuring the instance connection.
    • Improve UX for transferring database between projects.
    • Create dedicated migration history tab for a particular database.
    • Add baseline migration history record upon creating the database.
    Source code(tar.gz)
    Source code(zip)
  • 0.5.0(Sep 9, 2021)

    NOTE: This new release has some breaking schema change. If you upgrade from previous version, please contact [email protected] and we will help you manually upgrade to the new version.

    Notable bug fixes

    • #21: MySQL 5.7 instance sync schema failure

    Features

    • Project level activities including
      • Database ownership transfer
      • Membership change
      • Version Control Workflow based push event
    • For Version Control Workflow based workflow, allow user to specify the migration file path template
    • For Version Control Workflow based workflow, allow user to specify the schema path template. If specified, Bytebase will update the latest schema to the specified path after each migration.
    • Record schema snapshot in the migration history
    • Create a dedicated page to show individual migration history including the applied migration statement as well as the schema snapshot after the migration.

    Enhancement

    • Make task scheduler run task asynchronously.
    • For database creation task, add database and its creation state (pending or created) to the issue sidebar.
    • For database schema update task, show indication if it's a baseline migration.

    Community

    • Thanks @chenliang for providing a detailed bug report for #21 and even suggesting the fix.
    • Thanks @yaohui-wyh for the contribution.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.1(Aug 31, 2021)

    NOTE: You don't need to do anything if upgrading from 0.4.0. If you upgrade from version before 0.4.0, there is some breaking schema change, please contact [email protected] and we will help you manually upgrade to the new version.

    Features

    • Support rollback in UI-based SQL review workflow

    Improvement

    • Taking backup in a single transaction to make the backup consistent.
    • Add alter schema button on the database detail page.
    • Add button to apply SQL statements to other pipeline stages.
    • Optimize database table list.
    • Hide project quick action list for non-project member.
    Source code(tar.gz)
    Source code(zip)
  • 0.4.0(Aug 19, 2021)

    NOTE: This new release has some breaking schema change. If you upgrade from previous version, please contact [email protected] and we will help you manually upgrade to the new version.

    Features

    • Per database backup
      • Weekly automatic backup
      • Manual backup
    • Database restore
      • Support restore to a different database
      • Record the original database that the restored database comes from.
    • Webhook
      • Support Slack, Discord, Teams, DingTalk, Feishu, WeCom webhook endpoint
      • Support Issue creation, issue status change, issue task status change, issue info change, issue comment creation

    Notable bug fixes

    • #15: Sync schema error Unknown column 'EXPRESSION' in 'field list'

    Commuity

    • Thanks @zhj-hx for helping us root cause #15
    • Thanks @iczc for #18
    Source code(tar.gz)
    Source code(zip)
  • 0.3.0(Aug 2, 2021)

    NOTE: This new release has some breaking schema change. If you upgrade from previous version, please contact [email protected] and we will help you manually upgrade to the new version.

    Features

    • Environment approval policy
    • Inbox
    • Database instance user sync
    Source code(tar.gz)
    Source code(zip)
  • 0.2.2(Jul 25, 2021)

  • 0.2.1(Jul 24, 2021)

  • 0.2.0(Jul 19, 2021)

    NOTE: This new release has some breaking schema change. If you upgrade from 0.1.0, please contact [email protected] and we will help you manually upgrade to the new version.

    • Added Migration History under database detail view
    • Added table detail view, displaying the basic table info, column info and index info.
    Source code(tar.gz)
    Source code(zip)
  • 0.1.0(Jul 9, 2021)

    The first open source version of Bytebase.

    // Run on localhost:8080

    $ docker run --init --name bytebase --restart always --publish 8080:8080 --volume ~/.bytebase/data:/var/opt/bytebase bytebase/bytebase:0.1.0 --data /var/opt/bytebase --host http://localhost --port 8080

    See https://docs.bytebase.com/install/docker for more details.

    Way to go~

    Source code(tar.gz)
    Source code(zip)
Owner
Bytebase
Web-based, zero-config, dependency-free database schema change and version control management tool for teams.
Bytebase
A flexible and powerful SQL string builder library plus a zero-config ORM.

SQL builder for Go Install Usage Basic usage Pre-defined SQL builders Build SQL for MySQL, PostgreSQL or SQLite Using Struct as a light weight ORM Nes

Huan Du 766 May 7, 2022
Zero boilerplate database operations for Go

(Now compatible with MySQL and PostgreSQL!) Everyone knows that performing simple DATABASE queries in Go takes numerous lines of code that is often re

null 341 May 10, 2022
Podman based development-only dependency manager for Linux.

Tent is a CLI tool for running development dependencies such as MySQL, Mongo, ElasticSearch etc inside pre-configured containers using simple one

Farhan Hasin Chowdhury 107 Mar 2, 2022
GitHub's Online Schema Migrations for MySQL

gh-ost GitHub's online schema migration for MySQL gh-ost is a triggerless online schema migration solution for MySQL. It is testable and provides paus

GitHub 10k May 10, 2022
Manage Schema for KubeDB managed Databases

schema-manager Manage Schema for KubeDB managed Databases Installation To install KubeDB, please follow the guide here. Using KubeDB Want to learn how

Kubernetes Database 8 Feb 19, 2022
Go library that stores data in Redis with SQL-like schema

Go library that stores data in Redis with SQL-like schema. The goal of this library is we can store data in Redis with table form.

kaharman 2 Mar 14, 2022
[mirror] the database client and tools for the Go vulnerability database

The Go Vulnerability Database golang.org/x/vulndb This repository is a prototype of the Go Vulnerability Database. Read the Draft Design. Neither the

Go 43 May 3, 2022
Database - Example project of database realization using drivers and models

database Golang based database realization Description Example project of databa

Denis 1 Feb 10, 2022
Stash large datasets on GitHub for free, quick, and easy download 🐿

squirrel Stash large datasets on GitHub for free, quick, and easy download ?? Install To install squirrel, run the following: curl ... Usage Create a

wwm 0 Dec 31, 2021
Package sqlite is a CGo-free port of SQLite.

sqlite Package sqlite is a CGo-free port of SQLite. SQLite is an in-process implementation of a self-contained, serverless, zero-configuration, transa

Joe 3 Nov 30, 2021
A simple Golang-based application that queries a PostgreSQL database

Qwik-E-Mart Demo App A simple Golang-based application that queries a PostgreSQL database named qwikemart to read and return customer data stored in t

Joe Garcia 0 Nov 6, 2021
🏋️ dbbench is a simple database benchmarking tool which supports several databases and own scripts

dbbench Table of Contents Description Example Installation Supported Databases Usage Custom Scripts Troubeshooting Development Acknowledgements Descri

Simon Jürgensmeyer 65 May 9, 2022
Dumpling is a fast, easy-to-use tool written by Go for dumping data from the database(MySQL, TiDB...) to local/cloud(S3, GCP...) in multifarious formats(SQL, CSV...).

?? Dumpling Dumpling is a tool and a Go library for creating SQL dump from a MySQL-compatible database. It is intended to replace mysqldump and mydump

PingCAP 260 Apr 21, 2022
Goose database migration tool - fork of https://bitbucket.org/liamstask/goose

goose Goose is a database migration tool. Manage your database schema by creating incremental SQL changes or Go functions. Goals of this fork github.c

Pressly Inc. 2.6k May 9, 2022
The EVEmu Database Tool

EVEDBTool - The EVEmu Database Tool This is a tool written in Go to manage the installation, versioning and update of the EVEmu database. A pre-built

EvEmu Project 4 Feb 9, 2022
A tool I made to quickly store bug bounty program scopes in a local sqlite3 database

GoScope A tool I made to quickly store bug bounty program scopes in a local sqlite3 database. Download or copy a Burpsuite configuration file from the

null 3 Nov 18, 2021
A database connection tool for sensitive data

go-sql 用于快速统计数据库行数、敏感字段匹配、数据库连接情况。 usage ./go-sql_darwin_amd64 -h ./go-sql_darwin_amd64 -f db.yaml -k name,user ./go-sql_darwin_amd64 -f db.yaml --min

null 5 Apr 4, 2022
A Go rest API project that is following solid and common principles and is connected to local MySQL database.

This is an intermediate-level go project that running with a project structure optimized RESTful API service in Go. API's of that project is designed based on solid and common principles and connected to the local MySQL database.

Kıvanç Aydoğmuş 19 Apr 26, 2022