Bytebase数据库 Schema 变更管理工具
Bytebase 是一個開源數據庫 DevOps 工具,它相當于在整個應用程序開發生命周期中管理數據庫的 GitLab,它為 DBA 和開發人員提供了一個基于 Web 的工作空間,以安全有效地協作和管理數據庫變更。
官網地址
隨著 DevOps 進入主流,大部分團隊采用 GitLab/GitHub 等工具來管理代碼,并開始采用 Terraform 來管理基礎設施,同樣的 Bytebase 就是在應用程序開發期間管理數據庫的這樣的一個工具。Bytebase 是對現有云提供商的數據庫平臺或公司內部數據庫運維平臺的補充,雖然這些平臺負責數據庫實例級別的操作(例如配置數據庫實例),但 Bytebase 會幫助團隊使用配置的數據庫來構建他們的應用程序。
主要特征
Bytebase 是一款聚焦在 Database schema change and version control 的工具。它主打的是在應用研發過程中變更數據庫數據結構 (schema) 的這個場景,主要面向的人群是研發工程師和 DBA。
? 架構(DDL)和數據(DML)變更審核工作流程:與代碼審查一樣,Bytebase 簡化了數據庫變更過程,在單個工作流中,可以從開發環境一直到生產環境審查和部署數據庫更改。
? SQL質量檢查:Bytebase 分析 SQL 變更以執行符合您組織策略的規則。強制執行包括命名約定、反 SQL 模式檢測等。生產環境和非生產環境也可以分別強制執行不同的規則。
? SQL編輯器: 基于 Web 的用于查詢和導出數據的 SQL 編輯器,當開發人員需要訪問數據時,DBA 不再需要提供敏感的數據庫憑據。
? 與VCS集成的版本控制:Bytebase可以保留完整的Schema變更歷史記錄,它還與VCS系統(例如 GitLab)集成。團隊可以在VCS中管理 SQL 遷移腳本,并在代碼提交時觸發 Schema 部署。
? 備份還原: Bytebase 支持數據庫級別的手動和定期備份。
? 多租戶支持:多租戶服務可以為其每個租戶創建單獨的數據庫,Bytebase 可以在單個工作流中為所有租戶管理特定的數據庫更改部署。
用例
? 多數據庫管理
組織通常有多個數據庫系統來管理OLTP和OLAP工作負載。Bytebase支持流行的數據庫系統,包括MySQL、PostgreSQL、ClickHouse、TiDB和Snowflake。
? 數據庫變更自動化
與GitLab/GitHub如何簡化代碼交付類似,Bytebase簡化了從非生產環境到生產環境的數據庫變更部署。Bytebase還與VCS集成,支持GitOps工作流。您可以在VCS中管理數據庫更改腳本,只要觀察到新的更改腳本,Bytebase就會啟動新的部署過程。
您還可以將Bytebase的CLI bb集成到您現有的CI/CD工作流中。
? 數據庫開發人員門戶
隨著工程團隊的發展,將會形成一個平臺團隊或專門的DBA團隊來管理數據庫基礎設施,并支持開發人員與他們的應用數據庫進行交互。Bytebase為開發人員/數據庫管理員/平臺工程師提供了一個集中的門戶,用于協作完成與數據庫相關的任務,如檢查數據庫更改、查詢數據、備份和恢復數據庫等。
? 多租戶服務
SaaS服務可以為其每個租戶提供單獨的數據庫。確保數據庫更改一致地應用于每個租戶的數據庫是一件痛苦且容易出錯的事情。Bytebase提供了一種租戶模式來對這些數據庫進行分組,并可以將這些數據庫的生命周期作為一個單元來管理。
? 模式實施和卓越工程
數據質量和系統健壯性在很大程度上取決于數據庫模式。能夠一致地實施標準是高質量模式的關鍵。Bytebase可以執行模式規則,包括命名約定、反SQL模式檢測等。您還可以分別為生產和非生產環境配置每個單獨的規則。
部署
Docker
Bytebase 提供了多種部署方式,最簡單就是使用 Docker 進行一鍵啟動。
docker run --init -d \--name bytebase \--restart always \--add-host host.docker.internal:host-gateway \--publish 8080:8080 \--volume ~/.bytebase/data:/var/opt/bytebase \bytebase/bytebase:1.2.2 \--data /var/opt/bytebase \--host http://192.168.235.15 \--port 8080您可以將8080更改為5678或其他端口,但是請確保這三個端口相同:
--publish {{hostport}} :{{containerport}} --port {{port}}}
Bytebase會將其數據存儲在~/.bytebase/data,您可以通過運行命令重置所有數據:
rm -rf ~/.bytebase/data瀏覽器訪問 http://192.168.235.15:8080/
注冊一個管理員帳戶 部署后的第一個注冊帳戶將被授予工作區所有者(Workspace Owner)角色。
在Bytebase中,工作區所有者完成VCS配置。
注冊一個定期賬戶 創建管理員帳戶后,您可以注冊一個普通帳戶,并被授予Workspace Developer角色。
生產設置
確保 --host,--port 與字節庫應該訪問的host:port地址完全匹配。
Bytebase使用 --host, --port 來配置項目版本控制工作流使用的VCS webhook回調。如果主機:端口不匹配,則提交的遷移腳本將不會觸發字節庫中的問題創建。如果Bytebase由Docker運行,請確保 --publish hostport:containerport和 --port 標志相同。
如下例所示,所有3個端口都是5678: --publish 5678:5678 --port 5678
無法用Docker啟動Bytebase
docker logs bytebase
Due to the vm mechanism of colima, try to use the --mount option when starting colima as shown below:
部署到Kubernetes
我們可以使用下面的最基礎的資源清單來部署 Bytebase,最好使用一個 Volume 來持久化數據,這里我們定義的是一個 LoadBalancer 類型的 Service,當然我們也可以創建一個 Ingress 對象來進行暴露,具體使用哪種方式需要結合你 Kubernetes 集群來決定,可以在下面資源清單基礎上進行修改。
apiVersion: apps/v1 kind: Deployment metadata:name: bytebasenamespace: default spec:selector:matchLabels:app: bytebasetemplate:metadata:labels:app: bytebasespec:containers:- name: bytebaseimage: bytebase/bytebase:1.2.2args: ["--data", "/var/opt/bytebase", "--host", "http://localhost", "--port", "8080"]ports:- containerPort: 8080volumeMounts:- name: datamountPath: /var/opt/bytebasevolumes:- name: dataemptyDir: {} --- apiVersion: v1 kind: Service metadata:name: bytebase-entrypointnamespace: default spec:type: LoadBalancerselector:app: bytebaseports:- protocol: TCPport: 8080targetPort: 8080直接在 Kubernetes 集群中部署上面的對象即可。
腳本
此外我們還可以使用 Bytebase 官方提供的安裝腳本進行安裝,安裝腳本存儲在https://github.com/bytebase/install
使用安裝腳本安裝最新發布版本:
如果沒有出現錯誤,您應該會在控制臺中看到如下內容
OS: Darwin ARCH: arm64 Password: Get bytebase latest version: x.y.z Downloading tarball into /var/folders/j4/9x356cb9263f2jryv0xs9pnr0000gn/T/tmp.g1C2PJ8U Start downloading https://github.com/bytebase/bytebase/releases/download/x.y.z/bytebase_x.y.z_Darwin_arm64.tar.gz...% Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 100 81.3M 100 81.3M 0 0 3972k 0 0:00:20 0:00:20 --:--:-- 5430k Completed downloading https://github.com/bytebase/bytebase/releases/download/x.y.z/bytebase_x.y.z_Darwin_arm64.tar.gz Start extracting tarball into /opt/bytebase... Start installing bytebase and bb x.y.z Installed bytebase x.y.z to /usr/local/bin Installed bb x.y.z to /usr/local/binCheck the usage withbytebase --helpbb --help安裝完成后,運行:
bytebase --host http://localhost --port 8080您應該在控制臺中看到類似這樣的內容:
Version x.y.z has started at http://localhost:8080
卸載 Bytebase
I will always love the life I never deviated from.
總結
以上是生活随笔為你收集整理的Bytebase数据库 Schema 变更管理工具的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HarmonyOS应用框架如何解决多设备
- 下一篇: mysql sysbench_MySQL