Martyn's random musings

Where I put my random musings - fedi follow @martyn@musings.martyn.berlin

So as the last post implied, I needed backups. Right now, ceph is fighting me, regularly and so I may need to recover my home cluster.

Well, I have a VPS from schnellno.de and there I also have k3s running (was kubeadm but k3s is so neat and great for the purposes I use, I've kinda standardised on it now).

Now I can use ceph in single-replica mode on that node, and create a CephObjectStore (not something I've played with before, but cool) to provide s3 compatible storage that isn't aws.

The benefits this brings are multiple :

  • I can use any backup system that targets s3 (e.g. velero)
  • I can use cyberduck as an s3 client on my windows laptop to explore the “buckets”
  • It's fronted by nginx-ingress with cert-manager, so the transfer is encrypted
  • It has authentication as a standard so it should be secure

So that's what I did, and installed velero, so now I have backups of my cluster, and can recreate it quickly. Unfortunately paying for storage online for the ~8Tib of spinny disks I have is not sensible, so I need to be a bit more clever when it comes to backing up the data.

I found https://github.com/ianneub/mysqldump-to-s3 on dockerhub and it's alright but it doesn't actually allow you to target s3-compatible storage, only s3. It's also based on ubuntu so it's a heavy container. And it doesn't have automated builds. So I forked it.

https://github.com/iMartyn/mysqldump-to-s3 and https://hub.docker.com/r/imartyn/mysqldumptos3 exist and are approximately half the size of the previous incarnation (alpine based).

I now have daily backups of this blog's database, my nextcloud database and the kubernetes objects. That's a very good start and I'm feeling happy about this.

So I tried twice to set this up and twice my hardware killed the database before I'd set up backups.

Hopefully I'll get there this time!