配置EOS同步主網資料到mongoDB
阿新 • • 發佈:2019-01-11
EOS編譯安裝,請參考 編譯EOS主網EOS-Mainnet程式碼
一. 修改Config配置
先執行下nodeos
,將會自動建立~/.local/share/eosio/nodeos/config
目錄和config.ini
檔案。
修改config.ini
中如下內容
//新增 (2018-8-18 此時可用,如果有想分享的節點,請私聊我) p2p-peer-address = fullnode.eoslaomao.com:443 p2p-peer-address = mars.fnp2p.eosbixin.com:443 //修改 可忽略 agent-name = "BcSkill" //如果需要返回錯誤資訊,修改 verbose-http-errors = true //新增外掛支援 plugin = eosio::chain_plugin plugin = eosio::net_plugin //修改mongodb外掛相關配置 plugin = eosio::mongo_db_plugin mongodb-uri = mongodb://127.0.0.1:27017/EOS mongodb-filter-on = * #mongodb-filter-out = spammer:: mongodb-filter-out = eosio:onblock: mongodb-filter-out = gu2tembqgage:: mongodb-filter-out = blocktwitter:: mongodb-queue-size = 2048 abi-serializer-max-time-ms = 5000 mongodb-block-start = 1 mongodb-store-block-states = false mongodb-store-blocks = false mongodb-store-transactions = false mongodb-store-transaction-traces = true mongodb-store-action-traces = true read-mode = read-only
參考:MongoDB Filtering and Optimizations
參考:issues/5797
二. 安裝配置並啟動MongoDB
1. 安裝MongoDB
先安裝MongoDB 參考(Ubuntu 安裝 Mongodb 3+)
2. 配置MongoDB
進入到MongoDB bin 目錄,可以新增到環境變數,方便操作。
cd ~/opt/mongodb/bin
由於鏈上資料較大,比如1000W塊左右的資料,離線壓縮包大約14GB,同步到MongoDB大概需要200GB左右。所以需要將MongoDB資料單獨磁碟儲存。
修改MongoDB資料儲存位置,/mnt/data
為我這邊掛載的儲存盤
新建目錄mkdir /mnt/data/mongo/db
3. 啟動MongoDB
mongod --dbpath /mnt/data/mongo/db
這時MongoDB服務會預設監聽27017埠
三. 下載主網離線資料包
參考 EOS 主網資料更新,離線資料包
因為使用離線包可以加快追上主網的進度,如果從零自己同步到主網進度,難以想象要多久...
假設已經將離線資料下載並解壓到了 /mnt/data/data
目錄下。
四. 啟動nodeos開始同步資料
nodeos --data-dir /mnt/data/data --hard-replay-blockchain
如果需要清空mongo資料庫的話,新增--mongodb-wipe
相關程式碼如下
eos\plugins\mongo_db_plugin\mongo_db_plugin.cpp
void mongo_db_plugin::plugin_initialize(const variables_map& options)
{
try {
if( options.count( "mongodb-uri" )) {
ilog( "initializing mongo_db_plugin" );
my->configured = true;
if( options.at( "replay-blockchain" ).as<bool>() || options.at( "hard-replay-blockchain" ).as<bool>() || options.at( "delete-all-blocks" ).as<bool>() ) {
if( options.at( "mongodb-wipe" ).as<bool>()) {
ilog( "Wiping mongo database on startup" );
my->wipe_database_on_startup = true;
} else if( options.count( "mongodb-block-start" ) == 0 ) {
EOS_ASSERT( false, chain::plugin_config_exception, "--mongodb-wipe required with --replay-blockchain, --hard-replay-blockchain, or --delete-all-blocks"
" --mongodb-wipe will remove all EOS collections from mongodb." );
}
}
此時已開始,同步中
五. 伺服器建議配置
記憶體:32GB
儲存:1T+