Automatische backups maken van je database en logbestanden
Je draait algoritmische trades op een VPS, je Python-bots draaien 24/7, en je backtests draaien over historische data heen.
Dan wil je niet na een crash, een mislukte update of een kapotte SSD je database en logbestanden kwijt zijn. Backups zijn je veiligheidsnet: voor je handelslogica, voor je order- en positiegeschiedenis, en voor je audit-trails. Zonder backups sta je met lege handen, en dat is het laatste wat je wilt als de markt onverwachts beweegt.
Wat zijn automatische backups en waarom doen we dit?
Een backup is een kopie van je data die je kunt herstellen als het misgaat.
Automatisch betekent dat je geen handmatige stappen vergeet en dat er altijd een verse kopie klaarstaat. Bij trading-bots gaat het vaak om een database (bijvoorbeeld PostgreSQL voor trades en posities) en logbestanden (bot-logs, API-antwoorden, error-logs).
Die combinatie is goud: zonder logs weet je niet wat er misging, zonder database weet je niet wat er gebeurde. Je wilt backups omdat dingen misgaan op momenten dat het niet uitkomt. Een VPS reboott tijdens een order, een broker-API levert een 500-fout, je Python-script crasht na een onverwachte exception, of je SSD begeeft het. Een backup beschermt je tegen data-verlies, helpt bij forensisch onderzoek en ondersteunt je risicomanagement.
Je wilt kunnen herstellen naar een bekende goede staat. Stel je voor dat je bot na een update niet meer start omdat je database corrupt is.
Zonder backup moet je opnieuw beginnen, data reconstrueren uit spreadsheets of incomplete logs. Met een backup draai je een restore en ben je binnen een uur weer online. Dat is het verschil tussen een gemiste trade en een beheersbare situatie.
De kern: wat bewaar je en hoe werkt het?
Focus op twee dingen: je database en je logbestanden. Voor databases denk aan PostgreSQL of MySQL; voor logs aan bestanden in /var/log/ of een map als /home/user/bot-logs.
Je wilt een backup maken, versleutelen, opslaan op een andere plek, en regelmatig testen of restoren werkt. Simpel, maar wel met structuur. Een praktische aanpak is een cronjob die ’s nachts draait.
Voor PostgreSQL gebruik je pg_dump, voor MySQL mysqldump. Voor logs kopieer je de map en pack je alles in een tar.gz.
Je versleutelt het bestand met GPG, stuurt het naar een tweede VPS of S3-achtige opslag, en houdt een lokale kopie voor snel herstel. Geef elke backup een naam met datum en tijd, bijvoorbeeld database_2025-10-13_0300.sql.gz. Voorbeeld in ’t kort: pg_dump -U jeuser -d jebotdb | gzip > database_$(date +%Y-%m-%d_%H%M).sql.gz. Daarna gpg --encrypt --recipient je@email voor versleuteling.
Verstuur het bestand met rsync naar een tweede VPS of upload naar S3 met s3cmd. Doe dit voor je database en voor je logmap: tar -czf logs_$(date +%Y-%m-%d_%H%M).tar.gz /var/log/jebot.
Houd rekening met grootte: een bot die elke seconde logt, kan makkelijk 500 MB tot 2 GB per dag genereren, afhankelijk van je logging-niveau. Je wilt ook incremental backups voor grote datasets. Bij PostgreSQL kan je wal-archieven (Write-Ahead Logs) continueren doorsturen naar een backup-host.
Voor logs is rsync slim: het kopieert alleen wijzigingen, wat tijd en bandbreedte bespaart.
Plan de frequentie op basis van je risico: bij intensieve trading bots is een uursbackup voor logs logisch, terwijl een nachtelijke database-dump voor de meeste voldoende is. Testen is essentieel. Draai je bot daarom nooit op je eigen laptop; een backup die je nooit test, bestaat niet.
Herstel eens per maand je database op een test-VPS van €5/maand en controleer of je bot start en orders correct laden. Check of je logs leesbaar zijn en of je fouten kunt reconstrueren. Zonder test weet je pas bij een echte crash dat er iets mis is, en dat is precies wat je wilt voorkomen.
Varianten, modellen en prijsindicaties
Je hebt verschillende opties, afhankelijk van je budget en hoe kritisch je setup is. Kies een model dat bij je trading-strategie past: van simpel en goedkoop tot robuust en redundant.
Hieronder drie varianten met prijsindicaties voor kleine tot middelgrote bot-omgevingen. 1. Basis: lokale backups naar tweede VPS (€5–€15/maand)
Gebruik twee VPS’en: één voor je bots, één voor backup.
Op de backup-VPS zet je Samba of sshfs, of je gebruikt rsync over SSH.
Doe nachtelijke dumps en logsync. Voorbeeld: backup-VPS bij Hetzner of Contabo vanaf €5/maand (20–50 GB SSD). Opslag: 100 GB kost ongeveer €3–€5/maand extra. Voor versleuteling gebruik je GPG, voor monitoring een simpel cron-log en een Telegram-alert.
2. Cloudopslag: S3-achtig met lifecycle-regels (€2–€10/maand)
Bewaar backups in S3-compatible opslag (bijvoorbeeld AWS S3, Wasabi of Backblaze B2).
Wasabi kost rond €6/TB/maand zonder egress-kosten, Backblaze B2 rond €5/TB/maand. Voor 50 GB betaal je €0,30–€0,50/maand. Zet lifecycle-regels aan: na 30 dagen verplaats naar Glacier-achtige opslag (bijv.
Wasabi Immutable vanaf €5/TB/maand). Gebruik s3cmd of rclone voor uploads.
Voor extra veiligheid: bucket-versiebeheer en object-lock voor compliance. 3. Professioneel: redundant, encrypted, offsite (€20–€80/maand)
Combineer een backup-VPS (€5–€10), S3-opslag (€2–€10) en een externe locatie (een tweede cloudprovider of een NAS thuis).
Voeg monitoring toe met tools als Healthchecks.io (€2–€5/maand) of UptimeRobot (gratis/paid). Voor databases: gebruik Docker Compose om je database en bot samen te draaien met continuous archiving naar een tweede host, plus een dagelijkse volledige dump.
Voor logs: centralized logging met een lichtgewicht stack (bijv. Loki of Elasticsearch-light) op een aparte VPS van €10–€20/maand.
Totaalcomfort: €20–€80/maand, afhankelijk van opslagvolume en retentie. Retentie is een afweging. Voor backtests wil je 6–12 maanden historische data bewaren, voor logs vaak 30–90 dagen.
Voor compliance rond order- en transactie-logs kan een jaar of langer nodig zijn.
Zet heldere regels op: dagelijkse backups 7 dagen bewaren, wekelijks 4 weken, maandelijks 12 maanden. Dat houdt kosten beheersbaar en herstel snel. Prijsvoorbeeld voor een gemiddelde bot-setup: 50 GB database + 100 GB logs. Basis-VPS-backup: €10/maand. S3-opslag: €1–€2/maand. Monitoring: €3/maand. Totaal rond €15/maand. Voor professionele redundantie: €40–€80/maand. Je betaalt voor gemoedsrust en snel herstel, niet alleen voor opslag.
Praktische tips voor je trading-omgeving
- Gebruik naamconventies die je snel snapt: database_YYYY-MM-DD_HHMM.sql.gz en logs_YYYY-MM-DD_HHMM.tar.gz. Voeg bot-naam en VPS-ID toe, bijv. bot_alpha_db_2025-10-13_0300.sql.gz.
- Versleutel altijd. GPG met een eigen sleutel, of server-side encryption in S3. Bewaar je private key apart, bijvoorbeeld in een passwordmanager zoals Bitwarden of 1Password.
- Houd rekening met broker-API-limieten. Soms loggen bots te veel of onnodig. Stel een log-niveau in (bijv. INFO voor normaal, DEBUG voor troubleshooting) en roteer snel.
- Monitor je backups. Gebruik Healthchecks.io of een simpel cron-log met een Telegram- of Slack-webhook. Stuur een alert als een backup mislukt of te groot wordt.
- Test restores maandelijks. Herstel op een aparte test-VPS, controleer of je Python-bot start en of je backtests reproduceerbaar zijn. Noteer hersteltijd en eventuele hiaten.
- Bewaar configuratie apart. Sla API-keys, .env-bestanden en bot-configuratie op in een versleutelde vault, niet alleen in de database. Zo herstel je sneller.
- Denk aan latency en locatie. Backups op een andere VPS in dezelfde regio houden latency laag voor herstel. Voor offsite kies je een andere regio, maar test de restore-tijd.
- Automatiseer cleanup. Verwijder oude backups volgens je retentiebeleid, maar bewaar altijd een maandelijkse snapshot voor lange-termijn audits.
Backups zijn je risicomanagement voor data. Ze kosten weinig vergeleken met wat je verliest als je bot down is tijdens een volatiele markt.
Sluit af met een simpele routine: elke nacht een database-dump en log-archief, versleutelen, versturen naar een tweede plek, en een alert als het lukt of mislukt. Plan een maandelijkse hersteltest en houd je retentie scherp. Zo blijft je trading-infrastructuur betrouwbaar, ook bij onverwachte internetstoringen of stroomuitval, zonder dat je er dagelijks aan hoeft te denken.
