jackz

jackz / Backup galera cluster

Last active 8 hours ago

Like 0

Puts a server into maintenance mode (maxscale), performs full backup, compresses and exits maintenance mode

jackz revised this gist 8 hours ago · 731a71d

1 file changed, 6 insertions, 5 deletions

backup_mariadb_cluster.sh
@@ -1,19 +1,20 @@
1 1 #!/bin/bash
2 + SERVER=server_hs2
3 + BACKUP_OUTPUT=/tmp/backups
2 4 set -e
3 5
4 6 echo enter maintenance mode
5 - maxctrl set server server_hs2 maintenance
7 + maxctrl set server "$SERVER" maintenance
6 8 mariadb -e "SET GLOBAL wsrep_desync = ON;"
7 9
8 10 backup_dir=$(mktemp -d)
9 - backup_output=/tmp/backups
10 11
11 12 mkdir "$backup_output" || true
12 13
13 14 cleanup () {
14 15 echo leaving maintenance mode
15 16 mariadb -e "SET GLOBAL wsrep_desync = OFF;"
16 - maxctrl clear server server_hs2 maintenance
17 + maxctrl clear server "$SERVER" maintenance
17 18 }
18 19 trap cleanup EXIT
19 20
@@ -21,10 +22,10 @@ echo running backup to "$backup_dir"
21 22 mariadb-backup --backup --target-dir="$backup_dir"
22 23
23 24 echo compressing
24 - cd "$backup_output"
25 + cd "$BACKUP_OUTPUT"
25 26 backup_file="dump-$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
26 27 tar czvf "$backup_file" "."
27 28
28 - echo backed up to "$backup_output/$backup_file"
29 + echo backed up to "$BACKUP_OUTPUT/$backup_file"
29 30
30 31 rm -r "$backup_dir"

jackz revised this gist 8 hours ago · b2d632d

1 file changed, 30 insertions

backup_mariadb_cluster.sh (file created)
@@ -0,0 +1,30 @@
1 + #!/bin/bash
2 + set -e
3 +
4 + echo enter maintenance mode
5 + maxctrl set server server_hs2 maintenance
6 + mariadb -e "SET GLOBAL wsrep_desync = ON;"
7 +
8 + backup_dir=$(mktemp -d)
9 + backup_output=/tmp/backups
10 +
11 + mkdir "$backup_output" || true
12 +
13 + cleanup () {
14 + echo leaving maintenance mode
15 + mariadb -e "SET GLOBAL wsrep_desync = OFF;"
16 + maxctrl clear server server_hs2 maintenance
17 + }
18 + trap cleanup EXIT
19 +
20 + echo running backup to "$backup_dir"
21 + mariadb-backup --backup --target-dir="$backup_dir"
22 +
23 + echo compressing
24 + cd "$backup_output"
25 + backup_file="dump-$(date +%Y-%m-%d_%H-%M-%S).tar.gz"
26 + tar czvf "$backup_file" "."
27 +
28 + echo backed up to "$backup_output/$backup_file"
29 +
30 + rm -r "$backup_dir"