:用Galera搭建Manticore Search高可用集群)
多主復制實戰(zhàn)用Galera搭建Manticore Search高可用集群【免費下載鏈接】manticoresearchOpen-source search database for full-text, vector, and hybrid search with real-time indexing and SQL.項目地址: https://gitcode.com/gh_mirrors/ma/manticoresearchManticore Search 是一款開源搜索數(shù)據(jù)庫支持全文、向量與混合搜索并內(nèi)置了基于 Galera 庫的多主復制能力。借助它你可以用幾行 SQL 就把多臺服務器組成一個高可用集群任意節(jié)點都能讀和寫數(shù)據(jù)幾乎同步節(jié)點故障還能自動剔除和恢復。本文帶你從零理解到落地完整走通 Manticore Search 高可用集群的搭建與運維。為什么選 Galera 多主復制很多搜索引擎的集群其實只是分片或主從復制寫流量被限制在單一主節(jié)點上。而 Manticore Search 的復制方案由 Galera 庫 驅動帶來幾個對生產(chǎn)環(huán)境至關重要的特性 真正的多主隨時可對集群中任意節(jié)點寫入無需選主幾乎同步復制無從屬延遲節(jié)點崩潰后不丟數(shù)據(jù)熱備份節(jié)點切換零停機因為根本沒有故障轉移到主這一步自動節(jié)點配置新節(jié)點加入時自動拉取數(shù)據(jù)無需手動備份恢復自動剔除不可靠節(jié)點并支持基于認證的復制。 復制支持 Linux 和 macOS覆蓋percolate、rt和distributed表Windows 原生版本暫不支持可通過 WSL 使用。完整機制見官方中文手冊設置復制。開工前3 個必配的配置項在配置文件的searchd段落中確認以下三項否則復制無法啟用data_dir— 數(shù)據(jù)目錄純內(nèi)存模式不支持復制listen— 必須有一個帶replication類型的端口范圍監(jiān)聽器供集群節(jié)點間通信server_id可選— 為每個節(jié)點設置唯一值保證集群表 Auto ID 不沖突。searchd { listen 9312 listen 192.168.1.101:9360-9370:replication data_dir /var/lib/manticore/ }如果開啟了身份驗證還要給參與復制的用戶授予replication權限如GRANT replication ON posts TO repl_user細節(jié)參見 設置復制。五分鐘上手4 步搭建高可用集群假設你已有一個名為pq_title的實時表三臺機器node-a、node-b、node-c都裝好了 Manticore Search。第 1 步在 node-a 上創(chuàng)建集群CREATE CLUSTER posts第 2 步把本地表加入集群ALTER CLUSTER posts ADD pq_title第 3 步讓其余節(jié)點加入在 node-b、node-c 上分別執(zhí)行指向任意一個已建集群的節(jié)點即可JOIN CLUSTER posts AT node-a:9312新節(jié)點加入時會自動進行狀態(tài)傳輸SST——由現(xiàn)有節(jié)點提供完整數(shù)據(jù)副本無需你手動備份。傳輸過程中可通過cluster_posts_sst_total變量查看 0 到 100 的進度說明見 復制集群狀態(tài)。第 4 步用集群名:表名的方式寫入INSERT INTO posts:pq_title VALUES ( 3, test me )這一行會在 node-a 上執(zhí)行但數(shù)據(jù)會幾乎同步地出現(xiàn)在所有節(jié)點上。讀取則更靈活——SELECT * FROM pq_title直接查本地表即可任何節(jié)點返回的結果都一致。創(chuàng)建、加入集群的完整語法參見創(chuàng)建復制集群、加入復制集群。監(jiān)控集群健康一條 SHOW STATUS 就夠高可用集群最怕帶病運行。執(zhí)行SHOW STATUS可以查看所有集群狀態(tài)變量重點盯住這幾個變量健康值含義cluster_posts_statusprimary集群仲裁存在可正常讀寫cluster_posts_node_statesynced本節(jié)點已完成同步cluster_posts_size3當前在群節(jié)點數(shù)cluster_posts_nodes_view—本節(jié)點實際看到的集群成員此外還能看到 SST 進度、conf_id成員變更次數(shù)、last_error等。變量清單的完整解釋在 復制集群狀態(tài) 一節(jié)配合儀表盤可以構建完整的集群監(jiān)控面板。節(jié)點故障了怎么辦恢復手冊多主復制的精髓在于把集群當作一個邏輯系統(tǒng)。按故障場景對號入座即可場景 1單節(jié)點崩潰存活節(jié)點會短暫保留舊成員列表隨后自動剔除故障節(jié)點并重算法定人數(shù)集群繼續(xù)可寫。故障節(jié)點重啟后自動重新加入——若錯過了的事務還在其他節(jié)點的復制緩存里走輕量的增量傳輸IST追趕否則走重量級的快照傳輸SST全量拉取。場景 2所有節(jié)點干凈關閉如機房維護每個節(jié)點關閉時會把復制狀態(tài)寫入grastate.dat其中seqno事務序號和safe_to_bootstrap標志決定了誰應該先啟動。選seqno最大且safe_to_bootstrap: 1的節(jié)點通常是最后關閉的用特殊模式拉起它searchd --new-cluster其余節(jié)點再正常啟動自動重新加入。systemd 用戶可直接用manticore_new_cluster命令。場景 3所有節(jié)點崩潰grastate.dat的元數(shù)據(jù)已不可靠選擇數(shù)據(jù)最新的節(jié)點用searchd --new-cluster-force強制引導。場景 4仲裁丟失集群變成 non-primary 拒絕寫入在確認另一側確實離線后只在一側執(zhí)行SET CLUSTER posts GLOBAL pc.bootstrap 1?? 切記絕不能在腦裂的兩側都執(zhí)行該命令否則會形成兩個永不自動合并的獨立集群。這套恢復決策的完整推演值得精讀 集群恢復 與 重啟集群 兩篇官方文檔。實踐避坑清單一張表只屬于一個集群復制是按表劃域的規(guī)劃好表與集群的歸屬關系寫語句必須帶集群前綴漏寫posts:前綴會直接報錯這是新手最常見的坑端口范圍別交叉不同集群的replication監(jiān)聽器端口范圍不能重疊每個集群至少預留兩個端口節(jié)點數(shù)建議取奇數(shù)3 或 5 個節(jié)點的仲裁更穩(wěn)健偶數(shù)集群在分裂時兩側可能同時失去法定人數(shù)集群生命周期管理增刪節(jié)點用ALTER CLUSTER ... UPDATE nodes退出集群用EXIT CLUSTER參考 管理復制節(jié)點。寫在最后Manticore Search 用SQL Galera的組合把過去需要分片框架、自研中間件才能實現(xiàn)的多主高可用壓縮成了幾條CREATE CLUSTER/JOIN CLUSTER語句。對于需要實時寫入、又不想忍受復制延遲的搜索場景電商、日志、推薦召回這套方案值得直接落地。動手時建議從 3 節(jié)點起步配合SHOW STATUS養(yǎng)成日常巡檢習慣高可用集群便能長期穩(wěn)定運行 【免費下載鏈接】manticoresearchOpen-source search database for full-text, vector, and hybrid search with real-time indexing and SQL.項目地址: https://gitcode.com/gh_mirrors/ma/manticoresearch創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考