【问题标题】:How to restart the fabric composer without losing the existing data?如何在不丢失现有数据的情况下重新启动 Fabric Composer?
【发布时间】:2019-11-28 17:06:56
【问题描述】:

我在本地尝试过“carauction-network”示例。但是当我使用“startFabric.sh”文件启动网络时,它正在删除 Couch DB 并再次创建 Couch DB,因为这些旧数据正在丢失。请建议我们如何在不清理数据的情况下启动结构服务器。

【问题讨论】:

  • 使用 docker-compose start 的解决方案不会启动链码容器。看起来您仍然需要在重新启动后重新安装并重新实例化您的网络

标签: hyperledger-composer


【解决方案1】:

fabric-dev-servers(以前的 fabric-tools)下的startFabric.sh 不仅仅是启动 Fabric - 它删除现有的 Fabric 容器并从 Docker 映像重新创建新的容器。这样做的影响是您会从 Fabric 中丢失所有数据和业务网络。除了 PeerAdmin@hlfv1 之外的所有商务网卡现在都没有用了。

如果您想在创建 Fabric 后停止和启动 Fabric,请按照以下命令保留您的业务网络和数据:

  • 切换到docker-compose.yml文件所在的目录(例如/home/<user>/fabric-tools/fabric-scripts/hlfv1/composer
  • 运行 docker-compose stop 以顶部结构容器
  • 运行docker-compose start 以从上次中断的地方重新开始。

在使用 docker-compose 命令之前必须位于正确的文件夹中。

版本更新

使用 Composer v0.20.x(适用于 Fabric 1.2),文件夹的名称/版本已更改:

/home/<user>/fabric-dev-servers/fabric-scripts/hlfv12/composer

使用 Composer v0.19.x(旧版本,用于 Fabric v1.1),文件夹名称/版本已更改:

/home/<user>/fabric-dev-servers/fabric-scripts/hlfv11/composer

【讨论】:

  • 我们是否使用此解决方案保留我们的场景? (我的意思是我们什么时候可以执行 startFabric.sh)?
【解决方案2】:

在 fabric-dev-server/fabric-scripts/hlfv11 中编辑 startFabric.sh,如下所示

#!/bin/bash

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Exit on first error, print all commands.
set -e

Usage() {
    echo ""
    echo "Usage: ./startFabric.sh [-d || --dev]"
    echo ""
    echo "Options:"
    echo -e "\t-d or --dev: (Optional) enable fabric development mode"
    echo ""
    echo "Example: ./startFabric.sh"
    echo ""
    exit 1
}

Parse_Arguments() {
    while [ $# -gt 0 ]; do
        case $1 in
            --help)
                HELPINFO=true
                ;;
            --dev | -d)
                FABRIC_DEV_MODE=true
                ;;
        esac
        shift
    done
}

Parse_Arguments $@

if [ "${HELPINFO}" == "true" ]; then
    Usage
fi

#Detect architecture
ARCH=`uname -m`

# Grab the current directory
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

if [ "${FABRIC_DEV_MODE}" == "true" ]; then
    DOCKER_FILE="${DIR}"/composer/docker-compose-dev.yml
else
    DOCKER_FILE="${DIR}"/composer/docker-compose.yml
fi

ARCH=$ARCH docker-compose -f "${DOCKER_FILE}" stop
ARCH=$ARCH docker-compose -f "${DOCKER_FILE}" up -d

# wait for Hyperledger Fabric to start
# incase of errors when running later commands, issue export FABRIC_START_TIMEOUT=<larger number>
echo "sleeping for ${FABRIC_START_TIMEOUT} seconds to wait for fabric to complete start up"
sleep ${FABRIC_START_TIMEOUT}

# Create the channel
#docker exec peer0.org1.example.com peer channel create -o orderer.example.com:7050 -c composerchannel -f /etc/hyperledger/configtx/composer-channel.tx

# Join peer0.org1.example.com to the channel.
#docker exec -e "CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp" peer0.org1.example.com peer channel join -b composerchannel.block

if [ "${FABRIC_DEV_MODE}" == "true" ]; then
    echo "Fabric Network started in chaincode development mode"
fi

【讨论】:

    【解决方案3】:

    要扩展 R Thatcher 的解决方案,如果您可以访问 bash shell,则可以将此脚本放在您的 fabric-dev-server 文件夹中。它将按照上述步骤重新启动网络,而不会丢失您的数据。只需 cd 进入正确的目录并运行 docker-compose stop 和 docker-compose start。重新启动后也可以正常运行以恢复网络。

    #!/bin/bash
    cd ./fabric-scripts/hlfv1/composer
    docker-compose stop
    docker-compose start
    

    看起来微不足道,并没有给讨论增加太多内容,但可以节省时间。

    【讨论】:

      猜你喜欢
      • 2021-09-21
      • 2019-06-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2017-04-25
      • 2021-02-11
      • 2021-09-03
      • 2023-01-11
      相关资源
      最近更新 更多