欢迎拍砖,详细内容如下: # mysql 数据文件路径 mysql_data_path=/usr/local/mysql/data/ # 备份目录 mysql_dump_path=***/db/ # 备份用户名 mysql_account=mysql_backup # 备份密码 mysql_password=mysql_backup mysqldump_opts=mysqldump -u$mysql_account -p$mysql_password --single-transaction # 压缩命令 bzip2 -k 保留源文件 tar_opts=bzip2 # 单个数据库进行备份 function backdb(){ fullpath=$1 #遍历目录 for dbname in $(/bin/ls $fullpath) do # check is database filetype=`/usr/bin/file $fullpath$dbname | /bin/awk '{fs=:} {printf $2}'` # 文件夹的类型为directory if [ directory == $filetype ]; then # start dump if [ $dbname == mysql ] / || [ $dbname == test ] / || [ $dbname == information_schema ] / || [ $dbname == performance_schema ]; then echo ------------->$dbname not need dump!! else echo $dbname dumpname=$mysql_dump_path/$dbname_$datestr $mysqldump_opts $dbname > $dumpname.sql # 压缩备份档 $tar_opts $backup_name.sql fi else printf '%s is not database ######## /n' $dbname fi done } # 每个数据表单独备份 function backdbtb(){ fullpath=$1 #遍历目录 for fname in $(/usr/bin/find $fullpath -name *.ibd) do dbpath=`echo $fname | /bin/awk 'begin {fs='$fullpath'} {printf $2}'` # get database name dbname=`echo $dbpath | /bin/awk 'begin {fs=/} {printf $1}'` # get table name tbname=`echo $dbpath | /bin/awk 'begin {fs=/} {printf $2}'` # start dump if [ $dbname == mysql ]/ || [ $dbname == test ] / || [ $dbname == information_schema ] / || [ $dbname == performance_schema ]; then echo ------------->$dbname not need dump!! else echo $dbname $tbname dumpname=$mysql_dump_path/$dbname_$tbname_$datestr $mysqldump_opts $dbname $tbname > $dumpname.sql # 压缩备份档 $tar_opts $dumpname.sql fi done } 作者 babaoqi bitscn.com
