备份mysql所有数据库的每个表的shell脚本_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4010 | 回复: 0   主题: 备份mysql所有数据库的每个表的shell脚本        下一篇 
无止境
注册用户
等级:新兵
经验:64
发帖:74
精华:0
注册:2011-11-14
状态:离线
发送短消息息给无止境 加好友    发送短消息息给无止境 发消息
发表于: IP:您无权察看 2014-11-17 10:48:39 | [全部帖] [楼主帖] 楼主

使用use db_name;show tables 获得所有表。脚本针对MySQL5以上版本,mysql4以下未测试,mysqldump 参数可能有变。 备份表的路径:/backup_mysql/当天日期/数据名 这个目录中。 #!/bin/bash MYUSER=root MYPASS=123456 HOST=localhost BACKUPDIR=/backup_mysq

使用use db_name;show tables 获得所有表。脚本针对MySQL5以上版本,mysql4以下未测试,mysqldump 参数可能有变。
备份表的路径:/backup_mysql/当天日期/数据名 这个目录中。

#!/bin/bash
MYUSER="root"
MYPASS="123456"
HOST="localhost"
BACKUPDIR="/backup_mysql"
DATE=`date -I`
RETENTION=20
#MYSQLDATA="/var/lib/mysql"
[ ! -d $BACKUPDIR/$DATE ] && mkdir -p $BACKUPDIR/$DATE
DBS=`mysql -u$MYUSER -p$MYPASS -Bse "show databases"|grep -v "information_schema" |grep -v "test"`
for db_name in $DBS
  do
    mkdir -p $BACKUPDIR/$DATE/$db_name
    tables=`mysql -u$MYUSER -p$MYPASS -Bse "use $db_name;show tables"`
    for table_name in $tables
      do
    mysqldump -u$MYUSER -p$MYPASS -h$HOST --single-transaction --master-data=2 $db_name $table_name >$BACKUPDIR/$DATE/$db_name/$table_name.sql
    done
 done
cd $BACKUPDIR
tar zcf $DATE.tar.gz $DATE && rm -rf $BACKUPDIR/$DATE
find $BACKUPDIR  -type d -ctime +$RETENTION | xargs rm -rf


注:使用tar 打包绝对路径时,出现tar: Removing leading `/' from member names 警告 ,解决办法,增加-P 参数或者cd到打包目录(推荐);tar 不输出信息,去掉-v参数。
tar 的 P 参数解释: -P, --absolute-names       don't strip leading `/'s from file names

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论