配置 AIRBYTE 工作數(shù)據(jù)庫(kù)
Airbyte 使用不同的對(duì)象來存儲(chǔ)內(nèi)部狀態(tài)和元數(shù)據(jù)。數(shù)據(jù)是由各種 Airbyte 組件存儲(chǔ)和操作,但您可以通過以下兩種方式管理數(shù)據(jù)庫(kù)的部署
使用默認(rèn)的 postgres 數(shù)據(jù)庫(kù),它已經(jīng)寫到 docker-compose.yml 中,即 docker-compose.yml 中的 airbyte/db 服務(wù)。
使用單獨(dú)的 postgres 實(shí)例(這種情況下 airbyte/db 就不再被使用,您可以將它從您的 docker-compose.yml 中移除。)。將數(shù)據(jù)庫(kù)部署到 docker 和 k8s 中不是一種很好的實(shí)踐。使用專門的數(shù)據(jù)庫(kù)實(shí)例將讓您的 airbyte 環(huán)境有更高的可靠性。此外,使用云托管的Postgres實(shí)例(如AWS的RDS,GCP的Cloud SQL),您將得到更細(xì)粒度的備份和實(shí)例大小調(diào)整。例如,一開始業(yè)務(wù)量不大,我們可以選擇一個(gè)相對(duì)小的實(shí)例,后續(xù)我們根據(jù)數(shù)據(jù)量的增長(zhǎng)情況,進(jìn)行彈性的擴(kuò)容或者縮容。
Airbyte 中的各種實(shí)體保存在兩個(gè)內(nèi)部數(shù)據(jù)庫(kù)中:
Job database
里面存放有關(guān) Airbyte 作業(yè)執(zhí)行和各種運(yùn)行時(shí)元數(shù)據(jù)的數(shù)據(jù)。
里面存放有關(guān) Airbyte、Temporal.io?使用的內(nèi)部編排器的數(shù)據(jù)(任務(wù)、工作流數(shù)據(jù)、事件和可見性數(shù)據(jù))。
Config database
里面存放連接器、同步的連接和各種 Airbyte 配置對(duì)象。
請(qǐng)注意,來自源(或目標(biāo))連接器的實(shí)際數(shù)據(jù)不會(huì)傳輸或保留在此內(nèi)部數(shù)據(jù)庫(kù)中。
如果您需要操作這些數(shù)據(jù)庫(kù),例如進(jìn)行備份或執(zhí)行一些清理維護(hù),您還可以通過 API 或 UI (在管理頁(yè)面的配置選項(xiàng)卡中)進(jìn)行。
連接外部的 POSTGRES 數(shù)據(jù)庫(kù)
讓我們來看看使用不由 Airbyte 管理的 Postgres 實(shí)例需要什么。首先,在本教程中我們將使用以下命令通過 docker 創(chuàng)建的獨(dú)立的 Postgres 環(huán)境。如果您已經(jīng)存在其他的 Postgresql 實(shí)例,你可以不執(zhí)行此操作。
docker run --rm --name airbyte-postgres -e POSTGRES_PASSWORD=password -p 3000:5432 -d postgres
為了讓 Airbyte 使用我們剛才創(chuàng)建的數(shù)據(jù)庫(kù)實(shí)例,我們需要修改airbyte的環(huán)境變量(docker 方式部署的環(huán)境變量配置文件通常為airbyte安裝目錄下.env)。我們需要修改一下環(huán)境變量。
#外部數(shù)據(jù)庫(kù)的用戶名 DATABASE_USER=postgres #外部數(shù)據(jù)庫(kù)的密碼 DATABASE_PASSWORD=password #外部數(shù)據(jù)庫(kù)的 ip 或者域名 DATABASE_HOST=host.docker.internal #外部數(shù)據(jù)庫(kù)的端口 DATABASE_PORT=3000 #外部數(shù)據(jù)庫(kù)的 db 名稱 DATABASE_DB=postgres
默認(rèn)情況下,Config Database 和 Job Database 根據(jù)上述設(shè)置使用相同的數(shù)據(jù)庫(kù)實(shí)例。但是,可以通過指定單獨(dú)的參數(shù)將前者與后者分開。例如:
CONFIG_DATABASE_USER=airbyte_config_db_user CONFIG_DATABASE_PASSWORD=password
此外,您必須重新構(gòu)造DATABASE_URL環(huán)境的 JDBC URL,讓它包含正確的主機(jī)、端口和數(shù)據(jù)庫(kù)。如果您需要向 JDBC 驅(qū)動(dòng)程序提供額外的參數(shù)(例如, SSL),您也應(yīng)該在此處添加它:
DATABASE_URL=jdbc:postgresql://host.docker.internal:3000/postgres?ssl=true&sslmode=require
如果要將Config database 和 Job database 分開,則同樣需要重新構(gòu)造JDBC URL:
CONFIG_DATABASE_URL=jdbc:postgresql://<host>:<port>/<database>?<extra-parameters>
初始化數(shù)據(jù)庫(kù)
注意:當(dāng)前步驟只用于當(dāng)用戶使用自己的數(shù)據(jù)庫(kù)實(shí)例的情況。
如果您提供了一個(gè)空的數(shù)據(jù)庫(kù)實(shí)例給 Airbyte 并且是首次啟動(dòng) Airbyte,Airbyte 會(huì)自動(dòng)進(jìn)行初始化。 請(qǐng)確保:
連接庫(kù)已經(jīng)在Postgres中創(chuàng)建好
連接用戶同時(shí)具有讀寫權(quán)限
連接庫(kù)是一個(gè)空庫(kù)
如果連接庫(kù)不是一個(gè)空庫(kù),并且擁有一個(gè)和 Airbyte 自身創(chuàng)建表的表名相同的表,Airbyte 會(huì)認(rèn)定當(dāng)且數(shù)據(jù)庫(kù)已經(jīng)完成了初始化,就不會(huì)再初始化創(chuàng)建表了,導(dǎo)致Airbyte 運(yùn)行失敗。當(dāng)出現(xiàn)這種問題的時(shí)候,您只需清除到當(dāng)前數(shù)據(jù)庫(kù)中的所有表,然后重新拉起 Airbyte 即可。
訪問AIRBYTE的默認(rèn)工作庫(kù)即AIRBYTE/DB
使用默認(rèn)數(shù)據(jù)庫(kù)的情況下(即使用docker-compose.yml中的airbyte/db),如果開發(fā)人員想要訪問airbyte工作庫(kù),可以按照以下說明進(jìn)行操作
如其他的說明所示,所有的數(shù)據(jù)庫(kù)賬號(hào)密碼配置都在airbyte部署目錄下的.env文件內(nèi)。默認(rèn)情況下,這些配置有:
#數(shù)據(jù)庫(kù)的用戶名 DATABASE_USER=docker #數(shù)據(jù)庫(kù)的密碼 DATABASE_PASSWORD=docker #數(shù)據(jù)庫(kù)的庫(kù)名 DATABASE_DB=airbyte
查到配置后,您可以執(zhí)行以下命令接入到airbyte工作庫(kù)中。
#如果您修改了.env文件中數(shù)據(jù)庫(kù)相關(guān)的配置,請(qǐng)把用戶名,庫(kù)名,和密碼修改成您修改后的值 docker exec -ti airbyte-db psql -U docker -d airbyte
在Airbyte庫(kù)中,您將看到以下表:
workspace : 包含名稱、通知配置等工作空間信息。
actor_definition : 包含源和目標(biāo)連接器定義。
actor : 包含源和目標(biāo)連接器信息。
actor_oauth_parameter : 包含源和目標(biāo) oauth 參數(shù)。
operation : 包含 dbt 和自定義規(guī)范化操作。
connection : 包含目錄詳細(xì)信息、源、目標(biāo)等連接配置。
connection_operation : 包含為給定連接配置的操作。
state : 包含連接的最后保存狀態(tài)。