Live projects database are always critical for Clients and Companies and if the development phase is still in progress than you need to take backup of database on daily basis for safety concerns. i came across with the same situation and for that i've created a simple script which will take backup of your database.
it will export table wise separate sql file rather than one big SQL file. you can also make zip file for all the tables with gzipped option (dbname.gz).
This script is created for MySQL database only and it;s been tested on Mac OS X and Ubuntu OS.
You need to set path for MySQLDump and MySQL in script file.
# 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
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
Run this script in Terminal :
sh ./dump_all_databases.sh [ -u username -o output_dir -z ]
Note : The script will prompt for a password, you cannot specify it as command line argument for security reasons.
References :
snowforg.net
MySQL
0 comments:
Post a Comment