Fork of https://github.com/Mirocow/mysql_utils DIrty script for BAckup and REstore MYsql data for dev.
Go to file
Knah Tsaeb 4f3dcf663a Add config file
Merge backup_db.sh in backup.sh
Merge restore_db.sh in restore.sh
Update README
2019-02-21 12:33:09 +01:00
etc Add config file 2019-02-21 12:33:09 +01:00
.gitchangelog.rc Add changelog and config file for [gitchangelog](https://github.com/vaab/gitchangelog) 2019-02-21 12:26:29 +01:00
.gitchangelog.tpl Add changelog and config file for [gitchangelog](https://github.com/vaab/gitchangelog) 2019-02-21 12:26:29 +01:00
.gitignore Add gitignore 2019-02-21 11:49:49 +01:00
CHANGELOG.md Add config file 2019-02-21 12:33:09 +01:00
README.md Add config file 2019-02-21 12:33:09 +01:00
backup.sh Add config file 2019-02-21 12:33:09 +01:00
restore.sh Add config file 2019-02-21 12:33:09 +01:00

README.md

DiBaReMy for Arch or Other OS

DiBaReMy is a fork of mysql_utils by Mirocow.

Backup and Restore data from MySql/MariaDB tables.

Install

git clone https://forge.leslibres.org/Knah-Tsaeb/DiBaReMy.git
cd DiBaReMy

Configuration

Edit config for DiBaReMy.

cp etc/config.cfg.example etc/config.cfg
nano etc/config.cfg

Edit config for mySQL/MariaDb conection.

cp etc/mysql/debian.cnf.example etc/mysql/local.cnf
nano etc/mysql/local.cnf    

Backup all databases

sh backup.sh

Backup selected database

sh backup.sh -d=[database-name]

Restore for selected date

sh backups/[yyyy.mm.dd]/restore.sh

Restore selected DB

sh backups/[yyyy.mm.dd]/restore.sh -d=[database-name]

Automation backup with Cron

nano /etc/default/db_backup

START=yes

nano /etc/cron.daily/db_backup

#!/bin/sh

. /etc/default/db_backup

if [ "$START" = "yes" ]; then
	logger "Start databases backup system..."
	/bin/bash /root/scripts/mysql_utils/backup.sh --e="some_exclude_database some_else_db"
fi

Check work

# tail -f /var/log/syslog
    May 23 12:25:34 db1 logger: BACKUP:   ** Dump tecdoc.2013.ALI_COORD
    May 23 12:25:35 db1 logger: BACKUP:   ** set perm on tecdoc.2013/AL
    May 23 12:25:35 db1 logger: BACKUP:   ** bzip2 tecdoc.2013/ALI_COOR
    May 23 12:25:35 db1 logger: BACKUP:   ** Dump tecdoc.2013.ARTICLES
    May 23 12:25:43 db1 logger: BACKUP:   ** set perm on tecdoc.2013/AR
    May 23 12:25:43 db1 logger: BACKUP:   ** bzip2 tecdoc.2013/ARTICLES
    May 23 12:25:43 db1 logger: BACKUP:   ** Dump tecdoc.2013.ARTICLES_
    May 23 12:25:43 db1 logger: BACKUP:   ** set perm on tecdoc.2013/AR
    May 23 12:25:43 db1 logger: BACKUP:   ** bzip2 tecdoc.2013/ARTICLES
    May 23 12:25:43 db1 logger: BACKUP:   ** Dump tecdoc.2013.ARTICLE_C

Tested on

Arch Linux

Help

# bash backup.sh --help
usage: backup.sh options

This script backup all databases.

Usage: backup.sh <[options]>

Options:
   -d= | --database                     Database name
   -e= | --exclude=                     Exclude databases
   --exclude-tables=                    Exclude tables
   -c= | --compress=                    Compress with gzip or bzip2
   -v  | --verbose                      Add verbose into output
   -l  | --lifetime=                    Lifetime for dump files
   --config=                            Config file of Debian format
   --dir=                               Backup directory
   -h  | --help                         This text

Examples:
        backup.sh --verbose --compress=
        backup.sh --verbose --compress=gzip
        backup.sh --verbose --compress=bzip2
        backup.sh --verbose --compress= --exclude="mysql"
        backup.sh --verbose --compress= --exclude="mysql" --lifetime="3 day ago"
        backup.sh --verbose --config="/etc/mysql/debian.cnf" --exclude="mysql" --lifetime="1 day ago"
        backup.sh --verbose --dir="/var/backups/mysql" --config="/etc/mysql/debian.cnf" --exclude="mysql" --lifetime="1 day ago"
        backup.sh --verbose --dir="/home/backups/mysql" --exclude="mysql" --lifetime="1 day ago"
        backup.sh --verbose --dir="/home/backups/mysql" --exclude="mysql" --exclude-tables="tbl_template" --lifetime="1 day ago"