pocketbase icon indicating copy to clipboard operation
pocketbase copied to clipboard

Backup restore doesn't work with network mounted storage directory

Open cddqssc opened this issue 1 year ago • 10 comments

ENV: ubuntu22.04(x86) v0.22.6

Restore an automatically backed-up file: image

Error: image

The specific setup is that I mounted an SMB device to /pb_data/storage.(https://github.com/pocketbase/pocketbase/discussions/4631) image

cddqssc avatar Mar 27 '24 12:03 cddqssc

image

It seems the error is unable to rename or mv the mounted network volume.

cddqssc avatar Mar 27 '24 13:03 cddqssc

The error is most likely caused because on backup restore we replace the entire existing pb_data with the content from the backup, which I guess would fail in your case with the custom network mount. The backup restore functionality just wasn't designed with this use case in mind.

For now I'm not planning working on it as I already have enough on my hands but I may consider handling it after the refactoring as there are plans to optimize the backup generation to minimize the write lock time.

ganigeorgiev avatar Mar 27 '24 13:03 ganigeorgiev

Side-note: if you are planning to store a lot of files keep in mind that the current PocketBase backup functionality generates a complete snapshot archive everytime of your pb_data, aka. it is not partial/incremental and could be slow if you are expecting your storage directory to grow several GBs. For those cases I recommend searching for a different and more efficient backup/restore strategy.

ganigeorgiev avatar Mar 27 '24 13:03 ganigeorgiev

Thank you for the great work you've done; I fully understand your busyness. My current solution involves first stopping the PocketBase service on the server Then unzipping the backup file, manually replacing the relevant db files, and copying the contents of the storage folder from the backup to the storage directory on the target machine. image So far, no anomalies have been detected. However, I'm not sure if this approach is 'compliant,' or if there are any oversights?

cddqssc avatar Mar 27 '24 13:03 cddqssc

Side-note: if you are planning to store a lot of files keep in mind that the current PocketBase backup functionality generates a complete snapshot archive everytime of your pb_data, aka. it is not partial/incremental and could be slow if you are expecting your storage directory to grow several GBs. For those cases I recommend searching for a different and more efficient backup/restore strategy.

I plan to use the backup method mentioned in https://github.com/pocketbase/pocketbase/discussions/4254.

cddqssc avatar Mar 27 '24 13:03 cddqssc

My current solution involves first stopping the PocketBase service on the server Then unzipping the backup file, manually replacing the relevant db files, and copying the contents of the storage folder from the backup to the storage directory on the target machine.

Yes, this should work.

ganigeorgiev avatar Mar 27 '24 13:03 ganigeorgiev

I do real time backups locally and to as many places as I want using:

https://github.com/maxpert/marmot-pocketbase-flyio

I need to add NATS KV, so that files are also real time copied too

gedw99 avatar May 05 '24 02:05 gedw99

Hey, are you aware of SQLite’s warnings re: network file usage?

https://sqlite.org/useovernet.html

michaellenaghan avatar Jun 15 '24 10:06 michaellenaghan

Adding to that: Pocketbase uses WAL mode, and WAL mode requires that all processes using a database be on the same host:

https://www.sqlite.org/wal.html

I don’t think you’re violating that requirement, but if your database is on a network file system it’s something to be aware of.

michaellenaghan avatar Jun 15 '24 10:06 michaellenaghan

@michaellenaghan The above issue has no relation to the WAL mode or the database at all. The network mount is only for the uploaded files (aka. pb_data/storage).

ganigeorgiev avatar Jun 15 '24 11:06 ganigeorgiev