MySQL分库分表备份脚本

shell struggling 1141次浏览 1个评论

此脚本主要是使用两个for循环把每个库的每个表列出来,然后使用mysqldump进行备份。


#!/bin/bash

cat << dump
***********************************************
		mysql分库分表备份脚本
***********************************************
dump

user=root
host=127.0.0.1
passwd=123

socket=/var/lib/mysql/mysql.sock

db_bak_dir=/mysql_bak

dump_log=/tmp/mysql_dump.log

[ -e /etc/init.d/functions ] && . /etc/init.d/functions || exit

for dbname in `mysql -u$user -h$host -p$passwd -S $socket -e "show databases"|sed '1,2d'`
  do 
	echo -e "\033[32m----------正在备份数据库 ${dbname}---------- \033[0m"
	for tablename in `mysql -u$user -p$passwd -S $socket -e "show tables from $dbname;"|sed '1d'`
	   do
		mkdir -p $db_bak_dir/$(date +%F)/$dbname
		mysqldump -u$user -p$passwd --lock-all-tables ${dbname} ${tablename} | gzip > /$db_bak_dir/$(date +%F)/${dbname}/${dbname}_${tablename}_$(date +%F).sql.gz >> $dump_log
		[ $? -eq 0 ] && action " 备份 ${dbname}.${tablename} " /bin/true || action "备份 ${dbname}.${tablename} " /bin/false

	done
	echo -e "\033[32m----------数据库 ${dbname} 备份完成---------- \033[0m"
done

执行结果如下所示:

QQ图片20160227170426


DevOps-田飞雨 》》转载请注明源地址
喜欢 (3)or分享 (0)
发表我的评论
取消评论
*

表情 贴图 加粗 链接 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(1)个小伙伴在吐槽
  1. 挺清晰的签到成功!签到时间:2016-04-17 11:36:37,每日打卡,生活更精彩哦~
    ll1045672016-04-17 11:39 回复