This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
|
mysql_backup_simple [2014/09/01 20:40] kyxap created |
mysql_backup_simple [2015/04/04 10:39] (current) kyxap |
||
|---|---|---|---|
| Line 6: | Line 6: | ||
| # CLI args: none | # CLI args: none | ||
| - | set -e # exit on error | + | #exit on error |
| + | set -e | ||
| LANG=C | LANG=C | ||
| Line 17: | Line 18: | ||
| DAYS=7 | DAYS=7 | ||
| - | DB="production development" | + | DB="all" |
| OPTS="--order-by-primary --add-drop-database" | OPTS="--order-by-primary --add-drop-database" | ||
| ######################### | ######################### | ||
| - | print_error() | + | print_error() { echo "$@"; write_log "[ERROR] $@"; exit 1; } |
| - | { | + | print_info() { echo "$@"; write_log "[INFO] $@"; } |
| - | echo "$@" | + | write_log() { echo "`date -R -u` $@" >> $LOG; } |
| - | write_log "[ERROR] $@" | + | |
| - | exit 1 | + | |
| - | } | + | |
| - | + | ||
| - | print_info() | + | |
| - | { | + | |
| - | echo "$@" | + | |
| - | write_log "[INFO] $@" | + | |
| - | } | + | |
| - | + | ||
| - | write_log() | + | |
| - | { | + | |
| - | echo "`date -R -u` $@" >> $LOG | + | |
| - | } | + | |
| ########################## | ########################## | ||
| Line 52: | Line 39: | ||
| fi | fi | ||
| - | # check binary | + | # check binaries |
| [[ -f `which mysqldump 2>/dev/null` ]] && MYSQLDUMP=mysqldump || print_error "No mysqldump binary found in $PATH" | [[ -f `which mysqldump 2>/dev/null` ]] && MYSQLDUMP=mysqldump || print_error "No mysqldump binary found in $PATH" | ||
| + | [[ -f `which mysql 2>/dev/null` ]] && MYSQL=mysql || print_error "No mysql binary found in $PATH" | ||
| + | |||
| + | # validate $DB and skip default dbs | ||
| + | [[ $DB == all ]] && DB=$(mysql -e 'show databases' | tail -n +2 | grep -v -E "^(information_schema|performance_schema)$") | ||
| # create dumps | # create dumps | ||
| for db in $DB | for db in $DB | ||
| do | do | ||
| + | # is db exist? | ||
| + | if ! EXISTS=$($MYSQL -s -N -e "show databases" | tail -n +2 | grep -x $db) | ||
| + | then | ||
| + | print_info "No such database: $db" | ||
| + | break | ||
| + | fi | ||
| + | |||
| DUMP_FILE=$DUMP_DIR/$DATE/$db.sql.gz | DUMP_FILE=$DUMP_DIR/$DATE/$db.sql.gz | ||
| # is dump exist? | # is dump exist? | ||
| Line 66: | Line 64: | ||
| # mkdir | # mkdir | ||
| mkdir -p $DUMP_DIR/$DATE | mkdir -p $DUMP_DIR/$DATE | ||
| + | |||
| + | # add --events to mysql db | ||
| + | [[ $db == mysql ]] && OPTS+=" --events" | ||
| # dump | # dump | ||
| Line 81: | Line 82: | ||
| # rm | # rm | ||
| - | [[ -d $dir ]] && rm -r "$dir" || print_error "Can't remove $dir: dir not exists" | + | [[ -d $dir ]] && rm -r "$dir" || print_error "Can't remove $dir" |
| done | done | ||
| fi | fi | ||
| + | |||
| </code> | </code> | ||