MariaDB backup: Difference between revisions

From Notes to self
Jump to navigation Jump to search
No edit summary
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
* <code>/usr/local/sbin/mysql-backup</code>
* <code>/usr/local/mysqlbackups/mysql-backup</code>
<pre>
<pre>
#!/bin/bash
#!/bin/bash


TS=$(date '+%Y%m%d')
cd /usr/local/mysqlbackups/
 
/usr/bin/mariabackup --user=root --backup --stream=xbstream \
/usr/bin/mariabackup --user=root --backup --stream=xbstream \
     | gzip > /usr/local/mysqlbackups/backup-$TS.xb.gz || exit 1
     | gzip > backup.xb.gz || exit 1


TS=$(date -d "10 days ago" '+%Y%m%d')
mv backup.xb.gz backup-$(date '+%Y-%m-%d_%H-%M').xb.gz
rm -f /usr/local/mysqlbackups/backup-$TS.xb.gz
 
\ls backup-*_*.xb.gz | head -n -10 | xargs -r rm
</pre>
</pre>


* root's crontab:
* <code>/etc/cron.hourly/mysql-backup</code>
<pre>
<pre>
# Run mysql backup at 4:00 every day
#!/bin/bash
0 4 * * * chronic /usr/local/sbin/mysql-backup
exec chronic /usr/local/mysqlbackups/mysql-backup
</pre>
</pre>


Line 21: Line 23:
:* <code># gunzip -c /usr/local/mysqlbackups/backup-XXXXXXXX.xb.gz | mbstream -x -C /root/backupdb</code>
:* <code># gunzip -c /usr/local/mysqlbackups/backup-XXXXXXXX.xb.gz | mbstream -x -C /root/backupdb</code>
:* <code># mariabackup --prepare --target-dir=/root/backupdb</code>
:* <code># mariabackup --prepare --target-dir=/root/backupdb</code>
:* <code># Ensure that the datadir (/var/lib/mysql) is empty</code>
:* Ensure that the datadir (<code>/var/lib/mysql</code>) is empty
:* <code># /etc/rc.d/rc.mysqld stop</code>
:* <code># /etc/rc.d/rc.mysqld stop</code>
:* <code># mariabackup --copy-back --target-dir=/root/backupdb</code>
:* <code># mariabackup --copy-back --target-dir=/root/backupdb</code>

Latest revision as of 17:21, 30 March 2023

  • /usr/local/mysqlbackups/mysql-backup
#!/bin/bash

cd /usr/local/mysqlbackups/

/usr/bin/mariabackup --user=root --backup --stream=xbstream \
    | gzip > backup.xb.gz || exit 1

mv backup.xb.gz backup-$(date '+%Y-%m-%d_%H-%M').xb.gz

\ls backup-*_*.xb.gz | head -n -10 | xargs -r rm
  • /etc/cron.hourly/mysql-backup
#!/bin/bash
exec chronic /usr/local/mysqlbackups/mysql-backup
  • To restore full backup:
  • # mkdir /root/backupdb
  • # gunzip -c /usr/local/mysqlbackups/backup-XXXXXXXX.xb.gz | mbstream -x -C /root/backupdb
  • # mariabackup --prepare --target-dir=/root/backupdb
  • Ensure that the datadir (/var/lib/mysql) is empty
  • # /etc/rc.d/rc.mysqld stop
  • # mariabackup --copy-back --target-dir=/root/backupdb
  • # chown -R mysql:mysql /var/lib/mysql
  • # /etc/rc.d/rc.mysqld start
  • To restore a single database, see here.