一. 修改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::sql_db_plugin
//修改mongodb插件相关配置
sql_db-uri = mysql://db=eos user=root host=127.0.0.1 password='pwd'
二. 安装配置并启动MySql
1. 安装MySql
2. 配置MySql接下来我们安装 soci。soci 是 C++ 连接 MySQL 的 Library。Ubuntu 可以快速安装,命令如下:sudo apt-get -y install libsoci-dev安装 mysql-clientsudo apt-get -y install mysql-client
sudo apt-get install libmysqlclient-dev
由于链上数据较大,比如1000W块左右的数据,离线压缩包大约14GB,同步到MySql大概需要200GB左右。所以需要将MySql数据单独磁盘存储。
修改MySql数据存储位置,/mnt/data为我这边挂载的存储盘
新建目录mkdir /mnt/data/MySql
并参考 Ubuntu16.04下修改MySQL数据的默认存储位置
配置Eos数据库进入mysqlmysql -p创建数据库CREATE DATABASE eos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;查看数据库mysql > show databases;
三. 下载主网离线数据包
参考 EOS 主网数据更新,离线数据包
因为使用离线包可以加快追上主网的进度,如果从零自己同步到主网进度,难以想象要多久...
假设已经将离线数据下载并解压到了 /mnt/data/data目录下。
四. 启动nodeos开始同步数据nodeos --data-dir /mnt/data/data --hard-replay-blockchain --replay-blockchain第一次运行 必须添加 --replay-blockchain参数,不然不会创建数据库表,参考下面代码
如果需要清空mysql数据库的话,添加--sql_db-block-start=0 --replay-blockchain
相关代码如下eos\plugins\sql_db_plugin\sql_db_plugin.cppvoid sql_db_plugin::plugin_initialize(const variables_map& options)
{
ilog("initialize");
try {
std::string uri_str = options.at(SQL_DB_URI_OPTION).as<:string>();
if (uri_str.empty())
{
wlog("db URI not specified => eosio::sql_db_plugin disabled.");
return;
}
ilog("connecting to ${u}", ("u", uri_str));
uint32_t block_num_start = options.at(BLOCK_START_OPTION).as();
auto db = std::make_unique(uri_str, block_num_start);
if (options.at(HARD_REPLAY_OPTION).as() ||
options.at(REPLAY_OPTION).as() ||
options.at(RESYNC_OPTION).as() ||
!db->is_started())
{
if (block_num_start == 0) {
ilog("Resync requested: wiping database");
if( options.at( RESYNC_OPTION ).as() ||
options.at( REPLAY_OPTION ).as()) {
ilog( "Resync requested: wiping database" );
db->wipe();
}
}
}
此时已开始,同步中
五. 服务器建议配置
内存:32GB
存储:1T+