亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

 

數(shù)據(jù)庫在每個企業(yè)都占據(jù)的非常重要的位置,它存儲著一個公司的命脈。對于數(shù)據(jù)庫的管理也非常的復(fù)雜多變,很多公司都有專業(yè)的DBA團隊在管理。

但是,不論有無DBA,對數(shù)據(jù)庫的操作都不會變少,而且都面臨著相同的問題:

  1. 不是在提數(shù)就是在修數(shù)的路上
  2. 不是在審核SQL就是在審核SQL的路上
  3. 不是在找歷史記錄就是在找歷史記錄的路上
  4. 不是在備份就是在備份的路上

還有非常多類似的工作,這就讓DBA的工作變得枯燥乏味。

我不是DBA,僅僅是一個懂一點SELECT *的運維工程師,希望能有一個工具能夠幫助開發(fā)、DBA甚至運維降低數(shù)據(jù)庫的操作門檻,希望它具有:

  1. 流程審批功能
  2. 自動糾錯能力
  3. 自動備份能力
  4. 自動發(fā)布能力
  5. 歷史操作記錄
  6. 一鍵回滾能力
  7. 版本記錄能力

擁有這些能力,可以讓日常的操作變的簡單,高效。數(shù)據(jù)庫管理者也有時間去做更有意義的事情。

在過程的過程中,使用過不同的數(shù)據(jù)庫管理工具,比如Yearning、SQLE,它們本質(zhì)上只是一個數(shù)據(jù)庫管理平臺,可以記錄日常的操作記錄,也能實現(xiàn)流程審批等能力。但是它們依舊是一個一個的孤島,無法直接打通開發(fā)、DBA之間的部門墻。

那有什么工具可以比它們更好?

也是偶然的機會,發(fā)現(xiàn)Bytebase這個項目,它的有點在于可以打通Gitlab->數(shù)據(jù)庫,這樣開發(fā)可以在Gitlab中管理SQL語句,其他的自動交給Bytebase去完成。

 

圖片

 

什么是Bytebase

Bytebase團隊把它定位成面向開發(fā)者可靠的數(shù)據(jù)庫CICD,它不僅僅是數(shù)據(jù)庫管理工具,更是連接開發(fā)和DBA的橋梁。

它到底具有什么樣的能力呢?

  1. SQL審核
  2. SQL糾錯
  3. SQL編輯器
  4. GitOps
  5. 備份恢復(fù)
  6. 多租戶管理

安裝部署

說一千,道一萬,不如手中過一遍。

這里,我選擇在Kube.NETes中部署。

(1)首先,部署PG數(shù)據(jù)庫

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: postgres-pv-claim
  labels:
    App: postgres
spec:
  storageClassName: longhorn
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name:  postgres
  labels:
    app:  postgres
spec:
  selector:
    matchLabels:
      app: postgres
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app:  postgres
    spec:
      containers:
      - name:  postgres
        image:  postgres:15.2
        imagePullPolicy: IfNotPresent
        resources:
          requests:
            cpu: 100m
            memory: 100Mi
          limits:
            cpu: 4
            memory: 8000Mi
        env:
        - name: POSTGRES_PASSword
          value: '123456'
        - name: POSTGRES_USER
          value: 'bytebase'
        - name: POSTGRES_DB
          value: 'postgres'
        - name: PGDATA
          value: /var/lib/postgresql/data/pgdata
        ports:
        - containerPort:  5432
          name:  postgresport
        volumeMounts:
        - name: localtime
          mountPath: /etc/localtime
        - name: data-disk
          mountPath: /var/lib/postgresql/data
      volumes:
        - name: localtime
          hostPath:
            path: /usr/share/zoneinfo/Asia/Shanghai
        - name: data-disk
          persistentVolumeClaim:
            claimName: postgres-pv-claim
---
apiVersion: v1
kind: Service
metadata:
  name: postgres
spec:
  selector:
    app: postgres
  type: NodePort
  ports:
  - name: postgres
    port: 5432
    targetPort:
    protocol: TCP

需要給PG的數(shù)據(jù)做持久化,不然數(shù)據(jù)丟失就白忙活一場。

(2)部署B(yǎng)ytebase

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: bytebase-pvc
  labels:
    app: bytebase
spec:
  storageClassName: longhorn
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: bytebase
spec:
  selector:
    matchLabels:
      app: bytebase
  template:
    metadata:
      labels:
        app: bytebase
    spec:
      containers:
        - name: bytebase
          image: bytebase/bytebase:1.13.0
          imagePullPolicy: IfNotPresent
          env:
          - name: PG_URL
            value: "postgresql://bytebase:123456@postgres:5432/postgres"
          args:
            [
              "--data",
              "/var/opt/bytebase",
              "--external-url",
              "http://bytebase.jokerbai.com",
              "--port",
              "8080",
            ]
          ports:
            - containerPort: 8080
          volumeMounts:
            - name: data
              mountPath: /var/opt/bytebase
          livenessProbe:
            httpGet:
              path: /healthz
              port: 8080
            initialDelaySeconds: 300
            periodSeconds: 300
            timeoutSeconds: 60
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: bytebase-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: bytebase-entrypoint
spec:
  type: ClusterIP
  selector:
    app: bytebase
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: bytebase
spec:
  rules:
  - host: bytebase.jokerbai.com
    http:
      paths:
      - backend:
          serviceName: bytebase-entrypoint
          servicePort: 8080
        path: /

(3)待應(yīng)用都正常表示部署完成

# kubectl get po -n bytebase
NAME                        READY   STATUS    RESTARTS   AGE
bytebase-5559b7ff97-bmwc6   1/1     Running   0          5h18m
postgres-6989656975-5Glhh   1/1     Running   0          5h20m

 

使用示例

第一次登錄,會要求你創(chuàng)建管理員用戶,按著步驟創(chuàng)建即可。

然后就可以進入如下界面。

 

圖片

 

用戶管理

用戶支持手動管理,也支持集成SSO,這里帶大家集成SSO。

點擊設(shè)置->SSO->創(chuàng)建SSO,這里需要非常多的信息。

 

圖片

 

然后我們在Gitlab上去創(chuàng)建應(yīng)用,填入上面的回調(diào)地址,創(chuàng)建應(yīng)用。

 

圖片

 

 

圖片

 

將生成的ID和Secret填入Bytebase中,修改對應(yīng)的Gitlab地址即完成配置。

最后,在登錄的時候選擇Gitlab登錄即可。

 

圖片

 

實例管理

在實例中添加數(shù)據(jù)庫實例即可。

 

圖片

 

這里需要填寫超級管理員的用戶賬戶,在添加實例的時候,會到該實例中創(chuàng)建一個bytebase數(shù)據(jù)庫,在里面創(chuàng)建一個migration_history表用于記錄所有的操作記錄。

然后,會自動將目標(biāo)庫中的數(shù)據(jù)庫同步到bytebase中。

 

圖片

 

數(shù)據(jù)庫管理

上面已經(jīng)介紹會自動同步目標(biāo)數(shù)據(jù)庫中已有的庫,當(dāng)然,也可以自己創(chuàng)建數(shù)據(jù)庫。

 

圖片

 

然后就會自動創(chuàng)建數(shù)據(jù)庫,過程如下:

 

圖片

 

我們可以對數(shù)據(jù)庫中的數(shù)據(jù)進行操作。比如添加一張user表。

點擊數(shù)據(jù)庫->變更Scheme->選擇剛才創(chuàng)建的joker-test庫。

 

圖片

 

預(yù)覽工單即可進入創(chuàng)建頁面。

 

圖片

 

點擊創(chuàng)建,發(fā)現(xiàn)SQL審核不通過,如下:

 

圖片

 

就是說我們不允許字段為空,但是又沒有設(shè)置默認值。

修改字段如下:

 

圖片

 

現(xiàn)在在SQL審核處雖然還是警告,但是不影響創(chuàng)建。

當(dāng)然,還可以進行DML操作,比如我們向剛才創(chuàng)建的user表中插入一條name為jackma的數(shù)據(jù)。

 

圖片

 

項目管理

上面的操作比較分散,在實際中可能會以項目為中心進行管理。

我這里就以環(huán)境為中心,首先創(chuàng)建一個TEST項目。

 

圖片

 

進入項目過后,把joker-test數(shù)據(jù)庫轉(zhuǎn)移過來。

 

圖片

 

除此之外,還需要把當(dāng)前項目對應(yīng)的人添加進來。選擇設(shè)置->添加成員即可。

 

圖片

 

然后就可以進行一些變更操作了。

我們還可以為項目添加一些消息通知,可以方便通知到用戶。

 

圖片

 

環(huán)境管理

環(huán)境表示不同實例所屬的環(huán)境,比如開發(fā)環(huán)境的數(shù)據(jù)庫,測試環(huán)境的數(shù)據(jù)庫。

這里創(chuàng)建環(huán)境除了標(biāo)識數(shù)據(jù)庫的歸屬,還可以設(shè)置審批策略以及備份策略。

 

圖片

 

最后

上面僅僅是簡單的部署和使用,了解基本的功能。但是目前僅僅停留在數(shù)據(jù)庫管理上,如何打通Gitlab和Bytebase,本篇文章還沒有實踐,下篇文章補上。

分享到:
標(biāo)簽:SQL
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定