日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

同步PostgreSQL數據庫中vector類型的數據

在AI領域的大語言模型LLM(Large Language Model)應用中,檢索增強生成RAG(Retrieval-augmented Generation)技術通過檢索外部的輔助知識庫,能夠顯著提升模型輸出的準確性和時效性,解決了LLM知識更新慢、容易產生幻覺(回答不準確)的問題。與傳統的關鍵詞檢索相比,向量檢索具備語義層面的相似性檢索能力,支持非結構化數據和多模態數據檢索。PostgreSQL的pgvector插件,能夠在保持PostgreSQL原有結構化數據管理能力的基礎上,支持向量檢索功能。DTS的數據同步能力,能夠將寫入到PostgreSQL數據庫的向量數據快速地更新至不同地域的其他數據庫中,幫助您在數據密集型場景中實現異地容災、低延遲查詢、實時決策、多區域數據分析等。

前提條件

方案概覽

  1. 創建數據庫實例

    創建目標RDS PostgreSQL實例。

  2. 創建賬號

    在目標RDS PostgreSQL實例中,創建用于數據同步的賬號。

  3. 創建數據庫

    在目標RDS PostgreSQL實例中,創建用于接收數據的數據庫。

  4. 安裝插件

    在目標RDS PostgreSQL實例中,為目標數據庫安裝pgvector插件,以支持寫入vector類型的數據。

  5. 創建數據同步實例

    使用DTS進行數據同步操作。

準備工作

說明

如下所示為Linux系統的操作步驟。

  1. 登錄自建PostgreSQL所屬的服務器。

  2. 執行如下命令,查詢數據庫已使用復制槽數量。

    select count(1) from pg_replication_slots;
  3. 修改配置文件postgresql.conf,將配置文件中的wal_level設置為logical,并確保max_wal_sendersmax_replication_slots的參數值,均大于數據庫復制槽已使用數與需要以該自建PostgreSQL為源創建的DTS實例數的總和。

    # - Settings -
    
    wal_level = logical			# minimal, replica, or logical
    					# (change requires restart)
    
    ......
    
    # - Sending Server(s) -
    
    # Set these on the master and on any standby that will send replication data.
    
    max_wal_senders = 10		# max number of walsender processes
    				# (change requires restart)
    #wal_keep_segments = 0		# in logfile segments, 16MB each; 0 disables
    #wal_sender_timeout = 60s	# in milliseconds; 0 disables
    
    max_replication_slots = 10	# max number of replication slots
    				# (change requires restart)
    說明

    配置文件修改完成后,您需要重啟自建PostgreSQL使參數生效。

  4. 將DTS的IP地址加入至自建PostgreSQL的配置文件pg_hba.conf中。您只需添加目標數據庫所在區域對應的DTS IP地址段,詳情請參見添加DTS服務器的IP地址段。

    說明
    • 配置文件修改完成后,您需要執行SELECTpg_reload_conf();命令或重啟自建PostgreSQL使參數生效。

    • 關于該配置文件的設置請參見pg_hba.conf文件。如果您已將信任地址配置為0.0.0.0/0(如下圖所示),可跳過本步驟。

    IP

  5. 根據待同步對象所屬的數據庫和Schema信息,在目標RDS PostgreSQL中創建相應數據庫和Schema(Schema名稱須一致),詳情請參見創建數據庫Schema管理。

步驟一:創建數據庫實例

  1. 進入RDS實例購買頁面

  2. 選擇實例的配置參數。

    引擎選擇為14、15或16版本的PostgreSQL,其他參數請根據實際情況選擇。更多信息,請參見創建RDS PostgreSQL實例。

  3. 確認訂單信息、購買量和購買時長(僅包年包月實例),勾選服務協議,單擊去支付,并完成支付。控制臺將提示支付成功開通成功。

    說明

    對于包年包月實例,建議選中啟用自動續費,避免因忘記續費而導致業務中斷。

    按月購買,自動續費周期為1個月;按年購買,自動續費周期為1年,具體以訂單時間為準。自動續費可隨時取消。更多詳情,請參見續費管理/資源續訂使用介紹自動續費。

  4. 查看實例。

    進入實例列表,在上方選擇實例所在地域,根據創建時間找到剛剛創建的實例。

    說明

    實例創建需要約1~10分鐘。請刷新頁面查看。

  5. 查看目標RDS PostgreSQL實例的內核小版本。

    1. 實例創建成功后,單擊目標實例的ID。

    2. 在目標實例的基本信息頁面的配置信息區域,查看小版本信息。

    3. 確保目標實例的內核小版本為20230430或以上。

      說明

      若目標RDS PostgreSQL實例的內核小版本不滿足要求,請進行升級操作。更多信息,請參見升級內核小版本。

步驟二:創建賬號

  1. 訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。

  2. 在左側導航欄中選擇賬號管理。

  3. 單擊創建賬號。

  4. 設置賬號參數。

    填入數據庫賬號、將賬號類型選擇為高權限賬號、設置賬號密碼(新密碼確認密碼)。更多信息,請參見創建賬號

  5. 單擊確定。

步驟三:創建數據庫

  1. 訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。

  2. 在左側導航欄單擊數據庫管理

  3. 單擊創建數據庫

  4. 設置數據庫參數。

    填入數據庫(DB)名稱,將授權賬號選擇為步驟二:創建賬號創建的賬號,其他參數請根據實際情況選擇。更多信息,請參見創建數據庫。

  5. 單擊創建

步驟四:安裝插件

  1. 訪問RDS實例列表,在上方選擇地域,然后單擊目標實例ID。

  2. 在左側導航欄單擊插件管理

  3. 插件市場頁簽單擊AIGC,并單擊vector卡片的安裝。

    image

  4. 在彈出的對話框,選擇數據庫名稱數據庫賬戶。

    說明

    數據庫名稱需選擇步驟三:創建數據庫創建的數據庫,數據庫賬戶需選擇步驟二:創建賬號創建的賬號。

  5. 單擊安裝。

    您可以在插件管理 > 管理插件 > 已安裝插件頁面,查看插件的安裝情況。

    image

步驟五:創建數據同步實例

說明

本操作以簡易配置為例,為您進行介紹創建數據同步實例的方法。更多信息,請參見自建PostgreSQL同步至RDS PostgreSQL。

  1. 進入目標地域的同步任務列表頁面(二選一)。

    通過DTS控制臺進入

    1. 登錄數據傳輸服務DTS控制臺。

    2. 在左側導航欄,單擊數據同步。

    3. 在頁面左上角,選擇同步實例所屬地域。

    通過DMS控制臺進入

    說明

    實際操作可能會因DMS的模式和布局不同,而有所差異。更多信息,請參見極簡模式控制臺自定義DMS界面布局與樣式。

    1. 登錄DMS數據管理服務。

    2. 在頂部菜單欄中,選擇集成與開發 > 數據傳輸(DTS) > 數據同步。

    3. 同步任務右側,選擇同步實例所屬地域。

  2. 單擊創建任務,進入任務配置頁面。

  3. 可選:在頁面右上角,單擊試用新版配置頁。

    說明
    • 若您已進入新版配置頁(頁面右上角的按鈕為返回舊版配置頁),則無需執行此操作。

    • 新版配置頁和舊版配置頁部分參數有差異,建議使用新版配置頁。

  4. 配置源庫及目標庫信息。

    類別

    配置

    說明

    源庫信息

    數據庫類型

    選擇PostgreSQL。

    接入方式

    請根據源庫的部署位置進行選擇,本示例選擇專線/VPN網關/智能網關。

    說明

    源庫為自建數據庫時,您需要執行相應的準備工作。更多信息,請參見準備工作概覽。

    實例地區

    選擇自建PostgreSQL數據庫所屬專有網絡VPC的地域。

    是否跨阿里云賬號

    本示例使用當前阿里云賬號下的數據庫實例,需選擇不跨賬號。

    已和源端數據庫聯通的VPC

    選擇與自建PostgreSQL數據庫所屬的專有網絡VPC。

    域名或IP地址

    填入自建PostgreSQL數據庫的服務器IP地址。

    端口

    填入自建PostgreSQL數據庫提供服務的端口,默認為3433。

    數據庫名稱

    填入自建PostgreSQL數據庫中待同步對象所屬數據庫的名稱。

    數據庫賬號

    填入自建PostgreSQL數據庫中具備superuser權限的賬號。

    數據庫密碼

    填入該數據庫賬號對應的密碼。

    連接方式

    請根據實際情況選擇,本示例保持默認的非加密連接

    目標庫信息

    數據庫類型

    選擇PostgreSQL。

    接入方式

    選擇云實例

    實例地區

    選擇步驟一:創建數據庫實例創建的RDS PostgreSQL實例所屬的地域。

    實例ID

    選擇步驟一:創建數據庫實例創建的RDS PostgreSQL實例的ID。

    數據庫名稱

    填入步驟三:創建數據庫創建的數據庫。

    數據庫賬號

    填入步驟二:創建賬號創建的賬號。

    數據庫密碼

    填入該數據庫賬號對應的密碼。

    連接方式

    請根據實際情況選擇,本示例保持默認的非加密連接。

  5. 配置完成后,在頁面下方單擊測試連接以進行下一步。

    說明
    • 請確保DTS服務的IP地址段能夠被自動或手動添加至源庫和目標庫的安全設置中,以允許DTS服務器的訪問。更多信息,請參見添加DTS服務器的IP地址段。

    • 若源庫或目標庫為自建數據庫(接入方式不是云實例),則還需要在彈出的DTS服務器訪問授權對話框單擊測試連接。

  6. 配置任務對象。

    1. 對象配置頁面,配置待同步的對象。

      配置

      說明

      同步類型

      默認已選中增量同步,本示例同時選中庫表結構同步全量同步。

      同步拓撲

      本示例為單向同步,需選擇單向同步

      目標已存在表的處理模式

      保持默認的預檢查并報錯攔截。

      源庫對象

      源庫對象框中,選中待同步的對象,然后單擊向右將其移動至已選擇對象框。

      重要

      若待同步的表有依賴的序列(Sequence),且目標Schema中沒有同名的Sequence,您還需要在源庫對象框中選中該Sequence。

      已選擇對象

      本示例無需額外配置,保持默認即可。

    2. 單擊下一步高級配置,進行高級參數配置。

      本示例無需進行修改,保持默認的配置。

    3. 單擊下一步數據校驗,進行數據校驗任務配置。

      本示例不使用數據校驗功能,保持默認的配置。

  7. 單擊頁面下方的下一步保存任務并預檢查

  8. 預檢查通過率顯示為100%時,單擊下一步購買。

  9. 購買實例。

    1. 購買頁面,選擇數據同步實例的計費方式、鏈路規格,詳細說明請參見下表。

      本示例無需進行修改,保持默認的配置。

    2. 勾選《數據傳輸(按量付費)服務條款》。

    3. 單擊購買并啟動,并在彈出的確認對話框,單擊確定

      您可在數據同步界面查看具體任務進度。

附錄

注意事項

類型

說明

源庫限制

  • 待同步的表需具備主鍵或唯一約束,且字段具有唯一性,否則可能會導致目標數據庫中出現重復數據。

    說明

    若接收數據的目標表不是通過DTS創建(同步類型未選中庫表結構同步),則需確保該表與源庫中待同步的表具備相同的主鍵或非空唯一約束,否則可能會導致目標數據庫中出現重復數據。

  • 若同步對象為表級別,且需進行編輯(如表列名映射),單次同步任務的表數量超過5000時,建議您拆分待同步的表,分批配置多個任務,或者配置整庫的同步任務,否則任務提交后可能會顯示請求報錯。

  • WAL日志:

    • 需開啟,即設置wal_level參數的值為logical。

    • 如為增量同步任務,DTS要求源數據庫的WAL日志保存24小時以上,如為全量同步和增量同步任務,DTS要求源數據庫的WAL日志至少保留7天以上(您可在全量同步完成后將WAL日志保存時間設置為24小時以上),否則DTS可能因無法獲取WAL日志而導致任務失敗,極端情況下甚至可能會導致數據不一致或丟失。由于您所設置的WAL日志保存時間低于DTS要求的時間進而導致的問題,不在DTS的SLA保障范圍內。

  • 如自建PostgreSQL進行主備切換,會導致同步失敗。

  • 需要確保max_wal_senders和max_replication_slots的參數值,均大于當前數據庫復制槽已使用數與需要以該自建PostgreSQL為源創建的DTS實例數的總和。

  • 若源庫有長事務,且實例包含增量同步任務,則可能會導致源庫長事務提交前的預寫日志WAL(Write-Ahead Logging)無法清理而堆積,從而造成源庫磁盤空間不足。

  • 當源實例為Google Cloud Platform Cloud SQL for PostgreSQL時,源庫的數據庫賬號需填入具有cloudsqlsuperuser權限的賬號。在選擇同步對象時需選擇此賬號有權限管理的對象,或者給此賬號添加目標對象的Owner權限。

    說明

    具有cloudsqlsuperuser權限的賬號,無法管理Owner為其他cloudsqlsuperuser權限賬號的數據。

  • 在庫表結構同步和全量同步階段,請勿執行庫或表結構變更的DDL操作,否則會導致數據同步任務失敗。

其他限制

  • 單個數據同步任務只能同步一個數據庫,如需同步多個數據庫,您需要為每個數據庫配置數據同步任務。

  • 同步期間,如果同步對象的選擇粒度為Schema,在待同步的Schema中創建了新的表或使用RENAME命令重建了待同步的表,您需要在對該表寫入數據前執行ALTER TABLE schema.table REPLICA IDENTITY FULL;命令,以保障該表數據同步的一致性。執行該命令期間,建議您不要有鎖表操作,否則會導致表鎖死。

    說明
    • 將上述命令中的schematable替換成真實的Schema名和表名。

    • 建議您在業務低峰期進行操作。

  • DTS的校驗對象為數據內容,暫不支持Sequence等元數據的校驗,您需要自行校驗。

  • 由于業務切換到目標端后,新寫入的Sequence不會按照源庫的Sequence最大值作為初始值去遞增,您需要在業務切換前,更新目標庫的Sequence值。更多信息,請參見更新目標庫的Sequence值

  • DTS會在源庫中創建以下臨時表,用于獲取增量數據的DDL、增量表的結構、心跳信息等。在同步期間,請勿刪除源庫中的臨時表,否則會導致DTS任務異常。臨時表會在DTS實例釋放后自動刪除。

    public.dts_pg_class、public.dts_pg_attribute、public.dts_pg_typepublic.dts_pg_enum、public.dts_postgres_heartbeat、public.dts_ddl_command、public.dts_args_session。

  • 為保障同步延遲時間展示的準確性,DTS會在源庫中新增一個名為dts_postgres_heartbeat的心跳表。

  • 同步期間,DTS會在源庫中創建前綴為dts_sync_的replication slot用于復制數據。通過該replication slot,DTS可以獲取源庫15分鐘內的增量日志。

    說明

    當釋放同步任務或同步失敗時,DTS會主動清理該replication slot;如果自建PostgreSQL發生了主備切換,則需要您登錄備庫來手動清理。

    Amazon slot查詢信息

  • 執行數據同步前需評估源庫和目標庫的性能,同時建議業務低峰期執行數據同步。否則全量數據初始化時將占用源庫和目標庫一定的讀寫資源,可能會導致數據庫的負載上升。

  • 全量初始化會并發執行INSERT操作,導致目標數據庫的表產生碎片,因此全量初始化完成后目標實例的表空間比源實例的表空間大。

  • 對于表級別的數據同步,如果除DTS以外的數據沒有寫入目標庫,您可以使用數據管理DMS(Data Management)來執行在線DDL變更,請參見不鎖表結構變更

  • 在DTS同步期間,不允許有除DTS外的數據寫入目標庫,否則會導致源庫與目標庫數據不一致。例如,有除DTS外的數據寫入目標庫時,使用DMS執行在線DDL變更,可能引起目標庫數據丟失。

  • 若為全量同步或增量同步任務,且源數據庫中要同步的表包含外鍵、觸發器、事件觸發器,如果目標庫賬號為高權限賬號或者super權限賬號,全量或增量同步時DTS會以Session級別暫時將session_replication_role的參數值設置為replica;如果目標庫賬號沒有該權限,您需要手動將目標數據庫中session_replication_role的參數值設置為replica。在此期間(全量同步或增量同步過程中session_replication_role的參數值為replica),若源庫存在級聯更新、刪除操作,則可能會導致數據不一致。在DTS同步任務釋放后,您可以將session_replication_role的參數值改回origin。

  • 若實例運行失敗,DTS技術支持人員將在8小時內嘗試恢復該實例。在恢復失敗實例的過程中,可能會對該實例進行重啟、調整參數等操作。

    說明

    在調整參數時,僅會修改實例的參數,不會對數據庫中的參數進行修改。可能修改的參數,包括但不限于修改實例參數中的參數。

費用說明

同步類型鏈路配置費用
庫表結構同步和全量數據同步不收費。
增量數據同步收費,詳情請參見計費概述

增量同步支持的SQL操作

操作類型

SQL操作語句

DML

INSERT、UPDATE、DELETE

DDL

  • 僅2020年10月01日后創建的數據同步任務,支持同步DDL操作。

    重要
  • 源自建PostgreSQL數據庫賬號為高權限賬號,且小版本大于或等于20210228時,同步任務支持如下DDL:

    • CREATE TABLE、DROP TABLE

    • ALTER TABLE(包括RENAME TABLE、ADD COLUMN、ADD COLUMN DEFAULT、ALTER COLUMN TYPE、DROP COLUMN、ADD CONSTRAINT、ADD CONSTRAINT CHECK、ALTER COLUMN DROP DEFAULT)

    • TRUNCATE TABLE(源庫PostgreSQL為PostgreSQL 11及以上版本)

    • CREATE INDEX ON TABLE

    重要
    • 不支持同步DDL中包含的附加信息,如CASCADE或RESTRICT等。

    • 不支持同步使用SET session_replication_role = replica命令的會話中的DDL。

    • 不支持同步通過調用FUNCTION等方式執行的DDL。

    • 若源庫單次提交的多條SQL中同時包含DML和DDL,則該DDL不會被同步。

    • 若源庫單次提交的多條SQL中包含非同步對象的DDL,則該DDL不會被同步。