KB: Brekz Hosting - BR09SQL001 replica op locatie herstellen¶
Deze procedure beschrijft hoe de MySQL Replica op server BR09SQL001 opnieuw wordt opgebouwd.
Serverinformatie¶
BR09SQL001 is een VPS die bij Brekz op locatie in Utrecht staat. De server wordt gebruikt voor de maatwerk applicatie genaamd PET.
Airtable server documentatie: BR09SQL001
VPN vereist
Toegang tot BR09SQL001 is uitsluitend mogelijk via een VPN verbinding.
De VPN inloggegevens zijn beschikbaar in 1Password: Kluis: flooris hosting · Item: Brekz - VPN
De Brekz VPN heeft WAN IP Whitelisting ingesteld. Verbinding is alleen mogelijk vanaf één van de volgende twee locaties:
- Kantoor internetverbinding
- Flooris Management VPN server
Relevante informatie¶
Github: brekz-group/brekz-fail-over-setup
Stap 1: Hetzner SSH verbinding inrichten¶
Eenmalige inrichting
Deze stap is slechts 1x nodig. Als de SSH verbinding reeds actief is, hoeft deze inrichting niet opnieuw uitgevoerd te worden.
SSH key-pair aanmaken¶
Genereer een SSH key-pair voor de user flooris op de server BR09SQL001.
| Server | BR09SQL001 |
| User | flooris |
| Private key pad | /home/flooris/.ssh/backup |
| Public key pad | /home/flooris/.ssh/backup.pub |
ssh-keygen
Gebruik het volgende pad wanneer gevraagd: /home/flooris/.ssh/backup
Gebruik geen passphrase.
Corrigeer daarna de bestandspermissies:
chmod 0700 /home/flooris/.ssh
chmod 0600 /home/flooris/.ssh/*
SSH host inrichten¶
Pas de SSH config file aan:
nano ~/.ssh/config
Voeg het volgende blok toe aan de SSH config:
Host backup
User u400407-sub5
HostName u400407.your-storagebox.de
IdentityFile /home/flooris/.ssh/backup
Port 23
Test de verbinding (authenticatie met wachtwoord):
ssh backup
Voeg de SSH public key toe aan de Hetzner Storage Box:
cat /home/flooris/.ssh/backup.pub | ssh -p23 u400407-sub5@u400407.your-storagebox.de install-ssh-key
Verwachte output:
u400407-sub5@u400407.your-storagebox.de's password:
Key No. 1 (ssh-ed25519 flooris@br09sql001) was installed in RFC4716 format
Key No. 1 (ssh-ed25519 flooris@br09sql001) was installed in OpenSSH format
Hetzner Storage Box inloggegevens
De inloggegevens van de Hetzner Storage Box zijn beschikbaar in 1Password onder de titel: Hetzner - Storage box BX11 Brekz (FTP) BX11 #384620
Stap 2: Meest recente back-up downloaden¶
Hetzner Storage Box beveiliging
Het is cruciaal dat de Hetzner Storage Box na het uitvoeren van deze procedure niet meer bereikbaar is van buitenaf (External reachability). Zet de externe toegang direct na het downloaden weer uit.
2a. Hetzner Storage Box bereikbaar maken van buitenaf¶
Ga naar de Hetzner Console en zet de externe toegang aan:
Hetzner Console – Storage Box subaccounts
- Klik op Edit bij sub-account:
u400407-sub5 - Enable (aanvinken):
External reachability - Sla op
2b. Back-up downloaden via rsync¶
Gebruik een screen sessie
Het wordt aangeraden deze procedure uit te voeren vanuit een screen sessie, zodat een verbroken verbinding het downloadproces niet onderbreekt.
Bepaal de datum van vandaag (formaat: YYYY-MM-DD) en voer de onderstaande commando's uit:
# flooris@br09sql001:~$
screen
cd /hdbackup/XTRABACKUP/
rsync -av --progress --partial --delete backup:2026-04-07 ./
Pas de datum aan
Vervang 2026-04-07 door de datum van vandaag.
Voorbeeld output:
receiving incremental file list
backup-progress.log
507,396 100% 4.99MB/s 0:00:00 (xfr#1, to-chk=19/21)
full-04-07-2026_00-45-01.xbstream
6,866,927,616 49% 3.60MB/s 0:31:32
...
2c. Hetzner Storage Box weer dichtzetten van buitenaf¶
Zet de externe toegang direct na het downloaden weer uit:
Hetzner Console – Storage Box subaccounts
- Klik op Edit bij sub-account:
u400407-sub5 - Disable (uitvinken):
External reachability - Sla op
Vergeet dit niet!
Laat de externe toegang nooit actief staan na het downloaden van de back-up.
Stap 3: Back-up extraheren en voorbereiden¶
Gebruik de bestaande screen sessie
Voer de onderstaande commando's uit in dezelfde screen sessie als bij stap 2.
3a. Back-up extraheren¶
Navigeer naar de gedownloade back-up en extraheer het .xbstream bestand:
cd /hdbackup/XTRABACKUP/2026-04-07
extract-mysql.sh *.xbstream
Pas de datum aan
Vervang 2026-04-07 door de datum van de gedownloade back-up.
Volg de voortgang via het logbestand:
tail -f extract-progress.log
3b. Back-up voorbereiden¶
Nadat de extractie is voltooid, bereid de back-up voor:
cd restore
prepare-mysql.sh
Volg de voortgang via het logbestand:
tail -f prepare-progress.log
Stap 4: MySQL data herstellen¶
4a. MySQL stoppen en data directory leegmaken¶
sudo systemctl stop mysql
cd /var/mysql/
sudo rm -rf data
sudo mkdir data
sudo chown -R mysql:mysql data
sudo find /var/mysql/data -type d -exec chmod 750 {} \;
4b. Back-up terugzetten met XtraBackup¶
sudo xtrabackup --copy-back --target-dir=/hdbackup/XTRABACKUP/2026-04-07/restore/full-04-07-2026_00-45-01
Pas het pad aan
Vervang de datum en mapnaam door de werkelijke waarden van de gedownloade back-up.
4c. Bestandspermissies herstellen en MySQL starten¶
sudo chown -R mysql:mysql /var/mysql/data
sudo find /var/mysql/data -type d -exec chmod 750 {} \;
sudo systemctl start mysql
4d. Binlog positie opzoeken¶
Lees de binlog positie uit de herstelde back-up. Deze informatie is nodig voor het instellen van de replicatie in de volgende stap:
cd /hdbackup/XTRABACKUP/2026-04-07/restore/full-04-07-2026_00-45-01
cat xtrabackup_binlog_info
De output bevat het binlog bestand en de positie die je in stap 5 nodig hebt.
Stap 5: MySQL replicatie opnieuw inrichten¶
Verbind met de MySQL server en stel de replicatie in met de waarden uit xtrabackup_binlog_info:
CHANGE MASTER TO
MASTER_HOST='176.9.2.189',
MASTER_PORT=3306,
MASTER_USER='XXXXXXXXXXXXXXXXXXX',
MASTER_PASSWORD='XXXXXXXXXXXXXXXXXXX',
MASTER_LOG_FILE='mysql-bin.0XXXXXX',
MASTER_LOG_POS=XXX;
Replicatie credentials
De MASTER_USER en MASTER_PASSWORD zijn beschikbaar in 1Password.
Binlog waarden invullen
Vervang MASTER_LOG_FILE en MASTER_LOG_POS door de werkelijke waarden uit het xtrabackup_binlog_info bestand (stap 4d).