Data-Stash数据备份操作

基本概念

Scalable存储模式

节点群组配置scalable存储模式后,将账本数据和状态数据分开存储,账本数据保存在nodeX/data/groupX/block/Scalable/blocksDB/目录下,状态数据保存在nodeX/data/groupX/block/Scalable/state目录下,其中账本数据可以被删除,状态数据不能被删除

Binlog日志

binlog文件记录了每个区块的每个交易对区块链状态的修改结果,存放在nodeX/data/groupX/BinaryLogs/目录下。每个binlog文件以其记录的首个区块内容进行命名,且按从小到大的顺序来记录区块,每个binlog文件128MB,由程序内部设定。binlog机制的作用在于:

  • 提供了区块维度的数据操作结果的记录;
  • 节点可通过binlog文件而非通过原有的拉取区块重放交易的方式来恢复数据;
  • binlog文件为“数据仓库”的快照构建提供数据来源。

操作流程

  • 节点配置
  1. 编辑节点目录下conf/group.1.ini
  2. 设置群组的ini配置文件中[storage].type=scalable来选择链的存储模式为scalable,以实现本节点数据冷热分离。
  3. 设置群组的ini配置文件中[storage].binary_log=true来启用生成binlog的配置,以使数据仓库组件的下载服务可以通过nginx代理下载binlog,解析后存储在数据仓库。
  4. 运行节点启动脚本./start.sh,启动节点

注:
由于数据仓库组件用于生成节点的全量备份,所以要求节点拥有包括第一个区块在内的完整 binlog 日志,故需要确保该节点加入 FISCO BCOS 网络前就开启 binlog 生成选项。如果节点已经在运行中,先停止该节点,并删除对应群组(以 group1 为例 ,删除节点目录下data/group1)的数据,作为一个新节点启动。

  • binlog 日志 nginx 代理配置
    节点的 binlog 日志存放在节点文件目录中,为了让外界能够访问这些 binlog ,现需要在节点所在服务器安装 nginx 并配置端口映射,这样外界即可根据该端口访问 binlog 。
server {
    listen       [端口号];
        server_name  [服务器地址];
        charset utf-8;
        location / {
            root   [binlog目录绝对路径];
            index  index.html index.htm;
            autoindex on;
            autoindex_exact_size on;
            autoindex_localtime on;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

配置完成,可以通过浏览器访问http://ip:端口号访问binlog日志

  • 数据仓库配置
  1. 拉取源码
git clone https://github.com/WeBankBlockchain/Data-Stash.git
# 也可以使用国内源
git clone https://gitee.com/WeBankBlockchain/Data-Stash.git
  1. 编译源码
cd Data-Stash
./gradlew clean bootJar
  1. 启动配置
    在启动之间还需要进行配置,主要包括:
  • binlog 获取端口
  • 数据库连接配置
    需要在dist/config/application.properties中进行配置,示例如下:
### 配置nginx服务的binlog地址,如果连接多个节点的话,使用逗号分隔
system.binlogAddress=http://www.example.com:5299/,http://www.example.com:5300/
### 数据库连接配置
#### 禁用分库分表
spring.shardingsphere.enabled=false
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/stash?autoReconnect=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2b8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driverClassName=com.mysql.jdbc.Driver
  1. 运行程序
chmod +x *sh
bash start.sh

注:
Data-Stash并不会自动创建数据库,所以需要预先建好数据库,默认情况下数据库名为stash。

posted @ 2022-07-17 11:39  java学习小白  阅读(184)  评论(0编辑  收藏  举报