自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

什么是SQL自動(dòng)化?你知道嗎?

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
我不是DBA,僅僅是一個(gè)懂一點(diǎn)SELECT *的運(yùn)維工程師,希望能有一個(gè)工具能夠幫助開(kāi)發(fā)、DBA甚至運(yùn)維降低數(shù)據(jù)庫(kù)的操作門檻。

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

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

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

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

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

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

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

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

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

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

圖片

什么是Bytebase

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

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

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

安裝部署

說(shuō)一千,道一萬(wàn),不如手中過(guò)一遍。

這里,我選擇在Kubernetes中部署。

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

---
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ù)丟失就白忙活一場(chǎng)。

(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

使用示例

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

然后就可以進(jìn)入如下界面。

圖片

用戶管理

用戶支持手動(dòng)管理,也支持集成SSO,這里帶大家集成SSO。

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

圖片

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

圖片

圖片

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

最后,在登錄的時(shí)候選擇Gitlab登錄即可。

圖片

實(shí)例管理

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

圖片

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

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

圖片

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

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

圖片

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

圖片

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

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

圖片

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

圖片

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

圖片

就是說(shuō)我們不允許字段為空,但是又沒(méi)有設(shè)置默認(rèn)值。

修改字段如下:

圖片

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

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

圖片

項(xiàng)目管理

上面的操作比較分散,在實(shí)際中可能會(huì)以項(xiàng)目為中心進(jìn)行管理。

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

圖片

進(jìn)入項(xiàng)目過(guò)后,把joker-test數(shù)據(jù)庫(kù)轉(zhuǎn)移過(guò)來(lái)。

圖片

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

圖片

然后就可以進(jìn)行一些變更操作了。

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

圖片

環(huán)境管理

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

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

圖片

最后

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

責(zé)任編輯:姜華 來(lái)源: 運(yùn)維開(kāi)發(fā)故事
相關(guān)推薦

2023-12-20 08:23:53

NIO組件非阻塞

2022-11-28 00:04:17

2024-01-15 12:16:37

2021-12-06 20:00:59

人工智能AI自動(dòng)化

2024-07-30 08:22:47

API前端網(wǎng)關(guān)

2024-11-08 09:48:38

異步編程I/O密集

2024-03-19 08:01:54

服務(wù)熔斷軟件設(shè)計(jì)模式微服務(wù)

2024-02-19 07:44:52

虛擬機(jī)Java平臺(tái)

2024-06-27 10:51:28

生成式AI領(lǐng)域

2023-07-11 00:12:05

2023-01-04 11:39:45

2022-06-05 21:09:47

Python辦公自動(dòng)化

2021-04-20 23:16:06

SparkSQL語(yǔ)法

2024-04-30 09:02:48

2022-12-06 10:04:59

5G網(wǎng)絡(luò)C波段

2025-02-18 08:11:17

2024-05-30 09:55:05

人工智能AGI領(lǐng)域

2024-06-11 09:02:30

2024-12-04 08:40:19

2024-06-20 08:06:30

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)