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