-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Difficulties using backup to skip initial sync #174
Comments
Moving a completed sync (even if not now current - i.e., a few weeks behind) to another machine works. I wasn't able to do as you are trying either. The old days of E-X had what we called the "foundry" which included completed backups of the DB as their process of creating the DB from genesis was rather time consuming. Fulcrum is ~4x faster than E-X in DB creation in my experiences (Ryzen5 3600, 32GB RAM, BitcoinD on HDD and Fulcrum/E-X on NVMe). |
Anyone know of a trustworthy and recent source of Fulcrum DB ? I may need to just try again to zip and send the DB -- possibly corruption occurred during transfer? |
I think there could be issues with different rocksdb versions. |
Nice call, Calin. There is indeed a mismatch in the rocksdb versions. On the weaker computer's fulcrum docker container I see:
while the machine where I completed the initial sync reports:
I'm going to try to remake the docker image to match the other system more closely and hopefully that will get the backup of the db to work as a drop-in. I see why the mismatch in rockdbs version occurred: the machine that complete the initial sync was installed fulcrum via arch linux pacman which brought in newest version of rocksdb as a dependency and then applied a small patch to the source code to work with v8 rocksdb. |
Yeah ... I really wish rocksdb maintained full backwards and forwards compatibility but it doesn't. :/. The compatibility is only backward not forward, AFAIK. I am pretty sure that if you do reproduce the same rocksdb setup as you proposed on the other machine, it should work ok. |
I synced a Fulcrum on my M1 Mac with these software versions:
which could NOT be loaded on Linux (same error as mentioned above):
I can use the database created on the Linux machine on my Mac though. |
Yeah that may be because going backwards on rocksdb versions doesn’t work :/ |
Same issue. Did initial sync on Windows machine and transferred data folder to linux machine. Any possibility of fixing this without resynch? From Windows box:
From Linux box:
Debug log:
|
Calin really can't do anything about it, he's just using rocksdb and does not have any influence how rockdb stores its database internally. Not sure if this works but it's probably worth a try: You could try running Fulcrum with a newer rocksdb version. You are using version 6 of rocksdb, Fulcrum comes with it pre-built. I more or less accidentally compiled Fulcrum against a version 8 of rocksdb on my Mac. I found Fulcrum with rockdsb v8 WAY more stable, I had a lot of issues with corrupted databases before, and that almost went away. Now I always compile my own version of Fulcrum to make sure it uses the right rocksdb (but I regularly make backups of the Fulcrum db!). Opening your v6 database with v8 MIGHT work. I have different versions of rocksdb running and I CAN use my Linux db (v8.7.0) on my Mac (v8.11.3). Not sure if it works the other way around, as this would be a downgrade of the db version. Linux:
Mac M1:
|
@martinneustein Thanks for your suggestion. However my scenario is slightly different.
|
Has anyone had any luck using a backup or better machine to complete the initial sync for a another machine?
I have a weaker machine with an HDD that was struggling to complete the initial sync (at around 400k blocks it slowed to a couple hundred to 1k addrs/s and 2-5 blocks/s). So I installed bitcoin core and latest (1.9.1) Fulcrum on a more powerful machine. It completed the initial sync and I stopped Fulcrum to transfer the db/ files over to the weaker machine. However, (after first seeing an error mentioning something about headers I realized I had 1.8.1 Fulcrum on the weaker machine. After installing 1.9.1 and dropping the db files into place I still see an error:
FATAL: Caught exception: Error opening meta database: Corruption: unknown checksum type 4 from footer of /home/fulcrum/.fulcrum/db/meta/002785.sst, while checking block at offset 959 size 32
Not sure what other info is relevant but the weaker machine is running Fulcrum in a docker container bulilt from debian:bullseye-slim image which downloads the 1.9.1 x86_64 release from github while the other machine that did the sync is not using docker and installed 1.9.1 via arch linux pacman.
Any help on how to properly do this kind drop in from machine A to machine B or any info on how I might go about diagnose what could be wrong would be appreciated.
Cheers
The text was updated successfully, but these errors were encountered: