上一篇我們通過 INFINI Gateway 進行了索引數據遷移,對索引遷移結果進行了初步且直觀的校驗--對比索引的文檔數是否一致。今天介紹個實實在在的數據比對方法,通過網關對比索引文檔的內容在兩個集群是否一致。話不多說,就拿上次遷移的兩個索引開整。
比對步驟
操作非常簡單,攏共分兩步:
- 準備網關配置
- 數據比對
比對實戰
1. 準備網關比對數據的配置
老樣子去 github 拿就完了,戳這里。下載完之后,稍作修改.
修改文件開頭的變量
1 env:2 LR_GATEWAY_HOST: 127.0.0.1:80013 LR_GATEWAY_API_HOST: 127.0.0.1:90004 ELASTICSEARCH_ENDPOINT: http://127.0.0.1:92005 ELASTICSEARCH_ENDPOINT2: http://127.0.0.1:92016 SUITES_NAME: index-docs-diff
修改集群資源相關的配置
36 elasticsearch:37 - name: source38 enabled: true39 endpoints:40 - $[[env.ELASTICSEARCH_ENDPOINT]]41 basic_auth:42 username: elastic43 password: goodgoodstudy4445 - name: target46 enabled: true47 endpoints:48 - $[[env.ELASTICSEARCH_ENDPOINT2]]49 basic_auth:50 username: admin51 password: 14da41c79ad2d744b90c
pipeline 部分修改要對比的索引名稱為 infinilabs 和 test1,是的一次對比兩個。
pipeline:- name: index_diff_serviceauto_start: truekeep_running: falseprocessor:- dag:mode: wait_allparallel:- dump_hash: #dump es1's docsort_document_fields: trueindices: "infinilabs,test1"scroll_time: "10m"elasticsearch: "source"
# query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2"
# fields: "doc_hash"output_queue: "source_docs"batch_size: 1000slice_size: 1
# hash_func: "xxhash64"- dump_hash: #dump es2's docindices: "infinilabs,test1"scroll_time: "10m"
# fields: "doc_hash"
# query_string: "_id:c8es70pu46lgfdgmja9g-1646117763293610802-2"batch_size: 1000slice_size: 1
# hash_func: "xxhash64"elasticsearch: "target"output_queue: "target_docs"
2. 執行數據比對
# 數據比對的配置文件名為 index-diff.yml
./gateway-mac-arm64 -config index-diff.yml
比對結果顯示, infinilabs 和 test1 兩個索引的數據在兩個集群一致。如果數據不一致會是什么情況呢?這個任務交給屏幕前的你了,有問題歡迎找我交流。