有意思,這個工具可以讓你像 GitLab 一樣管理數據庫
Bytebase 是一個開源數據庫 DevOps 工具,它相當于在整個應用程序開發生命周期中管理數據庫的 GitLab,它為 DBA 和開發人員提供了一個基于 Web 的工作空間,以安全有效地協作和管理數據庫變更。
隨著 DevOps 進入主流,大部分團隊采用 GitLab/GitHub 等工具來管理代碼,并開始采用 Terraform 來管理基礎設施,同樣的,Bytebase 就是在應用程序開發期間管理數據庫的這樣的一個工具。Bytebase 是對現有云提供商的數據庫平臺或公司內部數據庫運維平臺的補充,雖然這些平臺負責數據庫實例級別的操作(例如配置數據庫實例),但 Bytebase 會幫助團隊使用配置的數據庫來構建他們的應用程序。
特性
- 架構 (DDL) 和數據 (DML) 變更審核工作流程:與代碼審查一樣,Bytebase 簡化了數據庫變更過程,在單個工作流中,可以從開發環境一直到生產環境審查和部署數據庫更改。
- SQL 質量檢查:Bytebase 分析 SQL 變更以執行符合您組織策略的規則。強制執行包括命名約定、反 SQL 模式檢測等。生產環境和非生產環境也可以分別強制執行不同的規則。
- SQL 編輯器:基于 Web 的用于查詢和導出數據的 SQL 編輯器,當開發人員需要訪問數據時,DBA 不再需要提供敏感的數據庫憑據。
- 與 VCS 集成的版本控制:Bytebase 可以保留完整的 Schema 變更歷史記錄,它還與 VCS 系統(例如 GitLab)集成。團隊可以在 VCS 中管理 SQL 遷移腳本,并在代碼提交時觸發 Schema 部署。
- 備份還原:Bytebase 支持數據庫級別的手動和定期備份。
- 多租戶支持:多租戶服務可以為其每個租戶創建單獨的數據庫,Bytebase 可以在單個工作流中為所有租戶管理特定的數據庫更改部署。
部署
Bytebase 提供了多種部署方式,最簡單就是使用 Docker 進行一鍵啟動。
docker run --init \
--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://localhost \
--port 8080
上面的命令啟動后我們可以通過 http://localhost:8080 直接訪問 Bytebase,就是這么簡單。
如果你想要在生產環境中使用,我們建議將其部署到 Kubernetes 集群中去。
我們可以使用下面的最基礎的資源清單來部署 Bytebase,最好使用一個 Volume 來持久化數據,這里我們定義的是一個 LoadBalancer 類型的 Service,當然我們也可以創建一個 Ingress 對象來進行暴露,具體使用哪種方式需要結合你 Kubernetes 集群來決定,可以在下面資源清單基礎上進行修改。
apiVersion: apps/v1
kind: Deployment
metadata:
name: bytebase
namespace: default
spec:
selector:
matchLabels:
app: bytebase
template:
metadata:
labels:
app: bytebase
spec:
containers:
- name: bytebase
image: bytebase/bytebase:1.2.2
args: ["--data", "/var/opt/bytebase", "--host", "http://localhost", "--port", "8080"]
ports:
- containerPort: 8080
volumeMounts:
- name: data
mountPath: /var/opt/bytebase
volumes:
- name: data
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: bytebase-entrypoint
namespace: default
spec:
type: LoadBalancer
selector:
app: bytebase
ports:
- protocol: TCP
port: 8080
targetPort: 8080
直接在 Kubernetes 集群中部署上面的對象即可。
此外我們還可以使用 Bytebase 官方提供的安裝腳本進行安裝,腳本托管在 https://github.com/bytebase/install 倉庫。
使用
Bytebase 部署成功后,我們需要為團隊成員注冊賬號,第一次注冊的賬號會被授予 Workspace Owner 角色。
admin 賬號創建后,我們可以注冊一個普通的賬號會被授予 Workspace Developer 角色。
登錄后進入到 Bytebase 的主頁我們就可以根據需要創建項目、添加數據實例或者環境了,下面的一些圖展示了 Bytebase 的一些示例。
圖 1 - Dashboard
圖 2 - SQL review issue 流水線
圖 3 - 基于 GitLab 的 schema 遷移(Database as code)圖 4 - 內置的 SQL 編輯器
此外 Bytebase 還可以了一些在線 Demo 可以體驗,地址:https://demo.bytebase.com,我們可以前往進行體驗。關于 Bytebase 的更多使用可以參考官方文檔 https://www.bytebase.com/docs 了解更多相關信息。
Git 倉庫:https://github.com/bytebase/bytebase。