From 04fd4e4960f31e76e87c616ba5ef790e6197c540 Mon Sep 17 00:00:00 2001 From: Mirocow Date: Thu, 29 Aug 2013 22:31:35 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A1=D0=BA=D1=80=D0=B8=D0=BF=D1=82=20=D0=B2?= =?UTF-8?q?=D0=BE=D1=81=D1=81=D1=82=D0=B0=D0=BD=D0=B0=D0=B2=D0=BB=D0=B8?= =?UTF-8?q?=D0=B2=D0=B0=D0=B5=D1=82=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86?= =?UTF-8?q?=D1=83=20=D0=B2=20=D0=BF=D0=B0=D0=BF=D0=BA=D0=B5=20=D0=B2=20?= =?UTF-8?q?=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D0=BE=D0=B9=20=D0=B1=D1=8B=D0=BB?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=BF=D1=83=D1=89=D0=B5=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- restore_table.sh | 100 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 restore_table.sh diff --git a/restore_table.sh b/restore_table.sh new file mode 100644 index 0000000..1062c3f --- /dev/null +++ b/restore_table.sh @@ -0,0 +1,100 @@ +#!/bin/sh + +# === CONFIG === +DIR_PWD=$(pwd) +BIN_DEPS='bunzip2 bzip2 mysql' +MYCNF='/etc/mysql/debian.cnf' +DATABASES_TABLE_CHECK=1 + +f_log() +{ + echo "RESTORE: $@" +} + +restore() +{ + PATH=$@ + + f_log "Check path $PATH" + + BDD=${PATH##*/} + + if [ $BDD ]; then + + f_log "Found backup files $PATH" + + if [ -f $PATH/__create.sql ]; then + f_log "Create database $BDD" + /usr/bin/mysql --defaults-extra-file=$MYCNF < $PATH/__create.sql 2>/dev/null + fi + + tables=$(/bin/ls -1 $PATH | /bin/grep -v __ | /usr/bin/awk -F. '{print $1}' | /usr/bin/sort | /usr/bin/uniq) + + log "Create tables in $BDD" + for TABLE in $tables; do + f_log "Create table: $BDD/$TABLE" + /usr/bin/mysql --defaults-extra-file=$MYCNF $BDD -e "SET foreign_key_checks = 0; + DROP TABLE IF EXISTS $TABLE; + SOURCE $PATH/$TABLE.sql; + SET foreign_key_checks = 1;" + done + + f_log "Import data into $BDD" + for TABLE in $tables; do + f_log "Import data into $BDD/$TABLE" + if [ -f "$PATH/$TABLE.txt.bz2" ]; then + f_log "< $TABLE" + if [ -f "$PATH/$TABLE.txt" ]; then + f_log "rm $PATH/$TABLE.txt" + /bin/rm $PATH/$TABLE.txt + fi + /bin/bunzip2 $PATH/$TABLE.txt.bz2 + fi + + if [ -f "$PATH/$TABLE.txt" ]; then + f_log "+ $TABLE" + /usr/bin/mysql --defaults-extra-file=$MYCNF $BDD -e "SET foreign_key_checks = 0; + LOAD DATA INFILE '$PATH/$TABLE.txt' + INTO TABLE $TABLE; + SET foreign_key_checks = 1;" + + if [ ! -f "$PATH/$TABLE.txt.bz2" ]; then + f_log "> $TABLE" + /bin/bzip2 $PATH/$TABLE.txt + fi + fi + if [ $DATABASES_TABLE_CHECK ]; then + # Check INNODB table + if [ -f "$PATH/$TABLE.ibd" ]; then + if [ ! $(innochecksum $PATH/$TABLE.ibd) ]; then + f_log "$TABLE [OK]" + else + f_log "$TABLE [ERR]" + fi + fi + fi + done + + if [ -f "$PATH/__routines.sql" ]; then + f_log "Import routines into $BDD" + /usr/bin/mysql --defaults-extra-file=$MYCNF $BDD < $PATH/__routines.sql 2>/dev/null + fi + + if [ -f "$PATH/__views.sql" ]; then + f_log "Import views into $BDD" + /usr/bin/mysql --defaults-extra-file=$MYCNF $BDD < $PATH/__views.sql 2>/dev/null + fi + + f_log "Flush privileges;" + /usr/bin/mysql --defaults-extra-file=$MYCNF -e "flush privileges;" + + f_log "** END **" + + else + + f_log "Database not found" + + fi +} + +restore $DIR_PWD