新手教程 配置 EOS 同步主网数据到 mongoDB

Surou · 2018年09月17日 · 最后由 Surou 回复于 2018年11月22日 · 191 次阅读

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
plugin = eosio::mongo_db_plugin
//修改mongodb插件相关配置
mongodb-uri = mongodb://localhost:27017
mongodb-raw-blocks = false
mongodb-block-state = false
mongodb-store-act-via-txtraces = true
mongodb-cache-abis = true
mongodb-filter-on  = *
mongodb-filter-out = spammer::
mongodb-queue-size = 2048
abi-serializer-max-time-ms = 5000

参考:MongoDB Filtering and Optimizations

二. 安装配置并启动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+

共收到 4 条回复

這個方法同步到 58G MONGO 大小時,好像就慢了好多,然後 BLOCK 的同步數都是 100 100 的加。。。看來沒有 1-2 星期消化不了 11月以前的 BLOCKS.log

update: 可能要加上這些 https://github.com/EOSIO/eos/issues/5797

keithyau 回复

嗯,看到issue 应该有效,您可以先测试下,期待您测试的结果,帮助正在苦难中挣扎的小伙伴~

硬件問題。。。硬件沒有 15K IOPS 以上,沒法在合理時間中同步 現在在用 packet.net 在跑,要是能買到 vultr storage instance 最好

keithyau 回复

找到问题 就算成功一半了。。😂

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册