SubQuery 開發者指南丨在本地運行 SubQuery

本指南將介紹如何在基礎設施上運行本地 SubQuery 節點,其中包括索引器和查詢服務的使用。不用擔心在運行自己的 SubQuery 基礎架構中所出現的問題。

SubQuery 向社區免費提供管理的託管服務。按照我們所發佈的指南查看您如何將項目部署到 SubQuery 項目。

使用 Docker

另一個解決方案是運行一個 Docker Container,由 docker-compose.yml 文件定義。對於一個剛剛初始化的新項目,你不需要在這裏做任何改動。

在項目目錄下運行以下命令:

    docker-compose pull && docker-compose up

第一次下載所需軟件包可能需要一些時間 (@subql/node, @subql/quiry, and Postgress) ,但很快你就會看到一個運行中的 SubQuery 節點。

運行 Indexer

需求:

Postgres 數據庫 (版本 12 或更高). 當 <0>SubQuery node 爲區塊鏈建立索引時,提取的數據將會存儲在外部數據庫實例中。

SubQuery 節點需要一個加載的過程,它能夠從 SubQuery 項目中提取基於子區塊鏈的數據,並將其保存到 Postgres 數據庫。

安裝:

    # NPMnpm install -g @subql/node

請注意我們不推薦使用 yarn global ,因爲它的依賴管理性能不佳,可能導致在運行中出現錯誤。

安裝完畢後,您可以使用以下命令來啓動節點:

    subql-node 

輸入命令:

以下命令將幫助您完成 SubQuery 的節點配置並建立索引。要了解更多信息,您可以運行 –help。

指向本地項目路徑:

    subql-node -f your-project-path

使用字典:

使用完整的鏈詞庫可以在測試期間或在您的第一個索引期間大大加快 SubQuery 項目的處理速度。在特定情況下,我們可以看到索引性能提高了 10 倍。

完整的鏈詞庫預先索引特定鏈中所有事件和外觀的位置,並允許您的節點服務在索引時跳到相關位置,而不是檢查每個區塊。

您可以在 project.yaml 文件中添加字典端點(請參見 Manifest File:

https://crowdin.com/backend/create/manifest.md),或在運行時使用以下命令指定它:

    subql-node --network-dictionary=https://api.subquery.network/sq/subquery/dictionary-polkadot

閱讀更多關於 SubQuery 詞典的工作原理:

https://crowdin.com/backend/tutorials_examples/dictionary.md

連接數據庫:

    export DB_USER=postgresexport DB_PASS=postgresexport DB_DATABASE=postgresexport DB_HOST=localhostexport DB_PORT=5432subql-node -f your-project-path

由於您的 Postgres 數據庫的配置(例如不同的數據庫密碼),還請確保索引器(subql/node)和查詢服務(subql/query)都可以與其建立連接。

指定一個配置文件:

    subql-node -c your-project-config.yml

這將把查詢節點指向一個配置文件,該文件可以是 YAML 或 JSON 格式。看看下面的例子。

    subquery: ../../../../subql-example/extrinsicssubqueryName: extrinsicsbatchSize:100localMode:true

如何更改區塊鏈批處理大小:

    *
    subql-node -f your-project-path --batch-size 200  
    Result:[IndexerManager] fetch block [203, 402][IndexerManager] fetch block [403, 602]

當索引器首次在鏈上運行時,獲取單個區塊將大大降低性能。增加批量處理的規模以調整獲取的區塊數量,這將會減少整個處理時間。默認的批處理大小爲 100。

在本地模式下運行:

    subql-node -f your-project-path --local

出於調試的目的,用戶可以在本地模式下運行該節點。切換到本地模式將在默認模式 public 中創建 Postgres 表。

如果未使用本地模式,則使用初始的 Postgres 模式,並將創建初始的 subquery_和與其相對應的項目表。

檢查節點運行狀況:

有兩個端口可用來檢查和監視所運行的 SubQuery 節點的健康狀況。

  • 返回普通 200 響應的健康檢查端口

  • Metadata 端口,其中包括您正在運行的 SubQuery 節點的額外分析

將其附加到您的 SubQuery 節點的基本 URL。例如:http://localhost:3000/meta 將會返回:

    {    \"currentProcessingHeight\": 1000699,    \"currentProcessingTimestamp\": 1631517883547,    \"targetHeight\": 6807295,    \"bestHeight\": 6807298,    \"indexerNodeVersion\": \"0.19.1\",    \"lastProcessedHeight\": 1000699,    \"lastProcessedTimestamp\": 1631517883555,    \"uptime\": 41.151789063,    \"polkadotSdkVersion\": \"5.4.1\",    \"apiConnected\": true,    \"injectedApiConnected\": true,    \"usingDictionary\": false,    \"chain\": \"Polkadot\",    \"specName\": \"polkadot\",    \"genesisHash\": \"0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3\",    \"blockTime\": 6000}

http://localhost:3000/health 如果成功,將返回 HTTP 200。

如果索引器出現錯誤,將返回 500 錯誤。這通常可以在節點啓動時看到。

    {    \"status\": 500,    \"error\": \"Indexer is not healthy\"}

如果使用了錯誤的 URL,將返回 404 not found 錯誤。

    *
    {\"statusCode\": 404,\"message\": \"Cannot GET /healthy\",\"error\": \"Not Found\"}

調試您的項目:

使用 node inspector 來運行以下命令。

```  * 
node --inspect-brk  -f
例如:
node --inspect-brk /usr/local/bin/subql-node -f ~/Code/subQuery/projects/subql-helloworld/Debugger listening on ws://127.0.0.1:9229/56156753-c07d-4bbe-af2d-2c7ff4bcc5adFor help, see: https://nodejs.org/en/docs/inspectorDebugger attached.
然後打開 Chrome 開發工具,進入 Source>Filesystem,將項目添加到工作區並開始調試。查看更多信息如何調試 SubQuery 項目:  
https://doc.subquery.network/tutorials_examples/debug-projects/

**運行 Query 服務**







### 

安裝:
# NPMnpm install -g @subql/query
請注意我們不推薦使用 yarn global ,因爲它的依賴管理性能不佳,可能導致在運行中出現錯誤。




### 

運行 Query 服務:
export DB_HOST=localhostsubql-query --name  --playground
確保項目名稱與你初始化項目時的項目名稱相同。另外,檢查環境變量是否正確。




在成功運行 subql-query 服務後,打開你的瀏覽器,前往 http://localhost:3000。你應該看到資源管理器中顯示了一個 GraphQL 操場,以及準備查詢的模式。

Website:

https://www.subquery.network/

Discord 中文羣:

https://discord.gg/SZsgE3M7

Telegram 中文羣:

t.me/subquerychina

Mixin 中文羣:

https://subquery.mixinbots.com/join

SubQuery 開發者指南丨在本地運行 SubQuery

往期精彩

SubQuery 開發者指南丨在本地運行 SubQuery

《SubQuery 開發者指南丨映射(Mapping)》

《SubQuery 開發者指南丨 GraphQL 架構(GraphQL Schema)》

《SubQuery 丨開發者快速入門指南》

《SubQuery 丨 Hello world 入門簡介》

《SubQuery 開發者指南丨 Hello World Explained》

《SubQuery 開發者指南丨 Hello World (由 SubQuery 託管)》

《SubQuery 開發者指南丨安裝 SubQuery》

《SubQuery 開發者指南丨創建一個 SubQuery 項目》

《SubQuery 開發者指南丨清單文件(Manifest File)》

SubQuery 開發者指南丨在本地運行 SubQuery