Hyperledger Fabric: 원장 백업 및 복원
피어의 원장을 백업/복구할 필요가 없습니다. 피어를 원장 없이 불러오고, 채널에 다시 가입하고, 블록 전송을 통해 원장 블록을 자동으로 수신할 수 있습니다. 즉, 일부 조직은 더 자립하기를 원하거나 동료 도입 또는 복구를 촉진하기를 원할 것이며 이는 원장을 백업 및 복원하여 달성할 수 있습니다.
피어와 관련된 모든 데이터는 fileSystemPath 옵션 아래의 core.yaml 에 지정된 파일 시스템 경로에 저장됩니다 . ledgersData는 'fileSystemPath'/ledgersData 경로에 저장됩니다. 원장 데이터 아래에는 7개의 폴더가 있습니다.
- chains - 블록과 인덱스를 저장합니다.
- pvtdataStore - 개인 데이터 저장
- ledgerProvider - ledgerID(일명 채널 이름)를 저장합니다.
- bookkeeper - 개인 데이터에 대한 만료 정보를 저장합니다.
- configHistory - 모든 체인코드의 모든 컬렉션 구성을 저장합니다.
- stateLeveldb - 모든 현재 상태를 저장합니다.
- historyLeveldb - 블록 저장소에 인덱스를 저장합니다.
원장 백업 이란 위에 나열된 디렉토리를 포함하는 ledgersData 폴더를 백업하는 것을 말합니다 . 그러나 다음 3개의 디렉토리만 백업하면 충분합니다.
- 쇠사슬
- pvtdata저장소
- 원장 제공자
위의 세 폴더를 사용하면 피어가 시작될 때 자동으로 bookkeeper, configHistory, stateLeveldb 및 historyLeveldb를 빌드합니다. stateLevelDB의 경우 마지막으로 커밋된 블록을 나타내는 저장점이 있습니다. stateLevelDB는 저장점 값이 현재 블록 높이와 같을 때 블록 저장소와 일치한다고 말할 수 있습니다. stateLevelDB가 비어 있으면 저장점이 현재 블록 높이와 일치하지 않고 결과적으로 기본 복구 프로세스가 시작되고 체인(예: blockstore) 및 pvtdataStore를 사용하여 bookkeeper, stateLevelDB, configHistory 및 historyLevelDB를 구성합니다.
백업 저장 용량이 충분히 크면 7개 폴더를 모두 복사하여 복원 작업을 더 빠르게 수행하는 것이 좋습니다. 문서의 나머지 부분에서는 7개 폴더를 모두 백업한다고 가정합니다. 원장 데이터의 백업은 두 가지 방법으로 수행할 수 있습니다.
- 오프라인 백업
- 온라인 백업
오프라인 백업
오프라인 백업은 원장 데이터를 백업하는 가장 안전하고 쉬운 옵션입니다. 피어는 다음을 실행하여 중지할 수 있습니다.
특정 블록을 커밋하는 동안 피어가 종료되면 내장 복구 프로세스가 일관성을 처리합니다.
피어가 중지되면 다음을 사용하여 ledgersData 폴더를 복사할 수 있습니다.
scp 와 rsync 는 모두 원장 데이터를 백업하는 데 사용할 수 있습니다. rsync는 압축, 델타 복사 또는 롤링 체크섬을 사용한 증분 백업과 같은 다양한 기능을 갖춘 백업에 널리 사용되는 도구입니다.
오프라인 백업의 한 가지 단점은 피어를 보증 및 커밋 작업에 사용할 수 없다는 것입니다. rsync를 사용하여 델타 복사를 수행하면 백업에 걸리는 시간을 줄일 수 있습니다. 또한 3개의 충분한 폴더만 백업해도 소요되는 시간을 합리적으로 줄일 수 있습니다.
- rsync -avz ledgersData/chains user@remoteServer :/backup/chains
- rsync -avz ledgersData/pvtdataStore user@remoteServer :/backup/pvtdataStore
- rsync -avz ledgersData/ledgerProvider user@remoteServer :/backup/ledgerProvider
온라인 백업
피어의 다운타임을 줄이기 위해 온라인 백업을 사용할 수 있습니다. 그러나 rsync를 사용하면 온라인 백업이 까다로울 수 있습니다. 온라인 백업 중에 피어가 계속 바이트를 ledgersData에 쓰기 때문에 rsync를 사용하여 수행한 백업이 일치하지 않을 수 있습니다. 예를 들어, rsync를 성공적으로 실행한 후 stateLeveldb 의 블록 높이가 체인, 즉 블록 저장소보다 높을 수 있는 백업으로 끝날 수 있습니다. pvtdataStore와 체인 간에 유사한 문제가 발생할 수 있습니다. 이러한 문제를 해결하기 위해서는 바람직하지 않은 원장 미들웨어를 변경해야 합니다. 또한 동일한 파일에 대한 동시 읽기 및 쓰기로 인해 rsync가 파일을 손상시키지 않는다는 보장도 없습니다.
사용자 공간 도구는 온라인 백업에 사용할 수 없으므로 커널 지원에 의존해야 합니다. 다음 기술을 사용하여 원장 데이터의 온라인 백업을 수행할 수 있습니다.
- DRBD - 분산 복제 블록 장치
- 디스크 스냅샷 및 백업
디스크 스냅샷이 작동하려면 전체 ledgersData가 전용 파티션에 있어야 합니다. 그런 다음 한 가지 방법을 사용하여 원장 데이터의 스냅샷을 만들고 rsync 도구를 사용하여 스냅샷을 백업에 복사할 수 있습니다. 백업이 수행되면 스냅샷을 삭제할 수 있습니다. LVM은 모든 파일 시스템에서 작동할 수 있습니다.
핫 백업의 경우 DRBD 기술을 사용할 수 있습니다.
오프라인 복원
오래된 ledgersData로 피어를 복원하려면 피어를 중지하고 기존 ledgersData를 제거하고 대신 백업된 ledgersData를 복사해야 합니다. ledgersData가 복사되면 피어를 시작해야 합니다.
Senthil Nathan's Blockchain"s Blog
A blog about blockchain and various platforms such as Hyperledger Fabric, Quorum, Ethereum, and Corda.
www.bchainledger.com
구글번역돌림...
수동으로도 백업을 하여도 되지만 피어를 참가함으로 원장을 옴기는 효과로도 이용이 가능하다고 하는...
(전통적인 백업하고는 좀 차이가...)
Rollback 이나 시점 복원 같은경우가 관건...
'Hyperledger Fabric' 카테고리의 다른 글
hyperledger Fable - test-network 시나리오 구동 (0) | 2021.09.02 |
---|---|
hyperledger 테스트 환경 사전 구축 진행 (0) | 2021.09.02 |
Ubuntu 셋팅 설치 (0) | 2021.09.02 |
하이퍼레저패브릭 구동 테스트 (셋팅준비) (0) | 2021.09.01 |