Αυτοματο sql backup

Τεχνικές και μόνο Συζητήσεις για WEB hosting servers, Mail servers, DNS servers. Όχι αναζήτηση υπηρεσιών εδώ!

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
nackgr
Δημοσιεύσεις: 1444
Εγγραφή: 22 Ιαν 2006 20:02
Τοποθεσία: Αθηνα
Επικοινωνία:

Αυτοματο sql backup

Δημοσίευση από nackgr » 07 Φεβ 2013 13:01

Καλησπερα!

Εχω τον παρακατω κωδικα για να τραβαει gzip backups της mysql ολες της database και της στελνει σε ενα dir , οποτε το τρεχω μου ζηταει και τον κωδικο της mysql πως θα μπορουσα να το ρυθμισω να το θυματε (καπου στο command)

και να το settara me cron μετα να το κανει

τρεχω αυτο
./dumpdb.sh -u root -o /var/backup -z

η αν ξερετε καποιον αλλο τροπο για να το κανω

Κώδικας: Επιλογή όλων

#!/bin/bash
# Daniel Verner 
# CarrotPlant LLC
# 2011
# Backup each mysql databases into a different file, rather than one big file
# Optionally files can be gzipped (dbname.gz)
#
# Usage: dump_all_databases [ -u username -o output_dir -z ]
#		 
#	-u username to connect mysql server
#	-o [output_dir] optional the output directory where to put the files
#	-z gzip enabled
#
# Note: The script will prompt for a password, you cannot specify it as command line argument for security reasons
#
# based on the solution from: sonia 16-nov-05 (http://soniahamilton.wordpress.com/2005/11/16/backup-multiple-databases-into-separate-files/)


PROG_NAME=$(basename $0)
USER=""
PASSWORD=""
OUTPUTDIR=${PWD}
GZIP_ENABLED=0
GZIP=""

MYSQLDUMP="/usr/bin/mysqldump"
MYSQL="/usr/bin/mysql"

while getopts u:o:z OPTION
do
    case ${OPTION} in
        u) USER=${OPTARG};;
        o) OUTPUTDIR=${OPTARG};;
        z) GZIP_ENABLED=1;;
        ?) echo "Usage: ${PROG_NAME} [ -u username -o output_dir -z ]"
           exit 2;;
    esac
done

if [ "$USER" != '' ]; then

echo "Enter password for" $USER":"
oldmodes=`stty -g`
stty -echo
read PASSWORD
stty $oldmodes

fi

if [ ! -d "$OUTPUTDIR" ]; then
    mkdir -p $OUTPUTDIR
fi

# get a list of databases
databases=`$MYSQL --user=$USER --password=$PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema)"`

# dump each database in turn
for db in $databases; do
    echo $db
	if [ $GZIP_ENABLED == 1 ]; then
		$MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD --databases $db | gzip > "$OUTPUTDIR/$db.gz"
	else
	    $MYSQLDUMP --force --opt --user=$USER --password=$PASSWORD --databases $db > "$OUTPUTDIR/$db.sql"
   	fi    
done
αυταααααααααααα...
e-Byte.gr
Dafuq.gr

ploupas
Δημοσιεύσεις: 60
Εγγραφή: 04 Νοέμ 2011 20:47
Επικοινωνία:

Αυτοματο sql backup

Δημοσίευση από ploupas » 07 Φεβ 2013 17:47

sudo crontab -e και paste:

Κώδικας: Επιλογή όλων

45 4 * * * mysqldump -u root -p'mypass111!!!@@###$$$' --all-databases | gzip > /path2/backup/database.sql.gz
αλλά θα σου πρότεινα να κρατάς πάνω από ένα με gzip > /path2/backup/database$(date +%Y-%m-%d_%H:%M).sql.gz

τρέχει κάθε 4:45 το πρωί (ώρα server πάντα) και restoration από ένα αρχείο των επιμέρους database είναι simple, απλά σε μεγάλες βάσεις ίσως να μην έχεις την άνεση χώρου

τότε

Κώδικας: Επιλογή όλων

45 4 * * * /path/to/script.sh -u root -o /var/backup -z 

Το password το κοτσάρεις είτε απευθείας προς το τέλος
--password='mypassword'

ή γράφεις στην ~21 γραμμή
PASSWORD=""
better use single quotes ' ' το escape special chars
αλλά δεν βλέπω να το παίρνει από command κάπως, μάλλον είναι for future use reserved :P

ή τέλοσπάντων το προσθέτεις στην while getopts αν θες

*Ακόμα καλύτερα το στέλνεις σε mail και/ή το τραβάς rsync/scp σε άλλο μηχάνημα
Pretending to be an LNMP administrator on various nodes

gvre
Δημοσιεύσεις: 990
Εγγραφή: 14 Οκτ 2010 11:34
Τοποθεσία: Ηράκλειο Κρήτης
Επικοινωνία:

Αυτοματο sql backup

Δημοσίευση από gvre » 07 Φεβ 2013 20:42

Μπορείς να το αποθηκεύσεις στο αρχείο .my.cnf στο home σου.

Κώδικας: Επιλογή όλων

[client]
password = YOUR_PASSWORD

Απάντηση

Επιστροφή στο “Apache, IIS, DNS Servers”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης