Archive

Archive for the ‘MySQL’ Category

mySQL backup script

November 16th, 2009 No comments

This backup is listed on the mySQL site somewhere. Backs up a DB broken down into individual tables. Great if you have large data sets. This one also purges the files after 7 days ( does leave the directories behind though )

#setup
suffix=`date +%Y%m%d`
dest=/mirror/mysql/SQL01
cmd='/usr/bin/mysqldump'

databases=(`echo 'show databases;' | mysql -h SQL01 -u root | grep -v ^Database$`)

for d in "${databases[@]}"; do
if [[ $d != 'tmp' && $d != 'test' ]]
then
echo "DATABASE ${d}"
s="use ${d}; show tables;"
tables=(`echo ${s} | mysql -h SQL01 -u root | grep -v '^Tables_in_'`)
for t in "${tables[@]}"; do
if [[ $t != 'tbl_parameter' && $t != 'tbl_session' ]]
then
echo " TABLE ${t}"
path="${dest}/${suffix}/${d}"
mkdir -p ${path}
${cmd} --user=root --host SQL01 --quick --add-drop-table --all ${d} ${t} | bzip2 -c > ${path}/${t}.sql.bz2
fi
done
fi
done

# delete old dumps (retain 5 days)
find ${dest} -mtime +10 -exec rm {} \;

find /mirror -depth -type d -empty -print0 |xargs -0 rmdir

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]
Categories: MySQL Tags:

Select random date

October 30th, 2009 No comments

I use this for insert records into a queue. To avoid overload one day, just split the records up over a number of days ….

now() + INTERVAL rand()*2 day + INTERVAL 2 hour

[Slashdot] [Digg] [Reddit] [del.icio.us] [Facebook] [Technorati] [Google] [StumbleUpon]
Categories: MySQL Tags: