分库备份的意义是什么 ?
有时一个企业的数据库里面有多个库,例如(www,bbs,cms),但是出问题时可能是某一个库,如果在备份时候把所有的库备份成一个数据文件的话,恢复数据就比较麻烦。
分库分表的缺点:文件多,碎
1,备份一个完整全备,再做一个分库分表的备份
2,脚本批量服务多个SQL文件
3,数据量太大不合适以上方法
#以下是完整的分库,分表的备份脚本和思路
分库:
1)编程思想
<code> </code>
<code>mysqldump -uroot -p db1 >db1.sql</code>
<code>mysqldump -uroot -p db2 >db2.sql</code>
2)拿到库名,列表
<code>mysql -uroot -p123456 -e </code><code>"show databases"</code><code>|</code>
<code> </code><code>grep</code> <code>-Evi </code><code>"database|information_schema|performance_schema"</code> <code>|</code>
<code> </code><code>sed</code> <code>-r 's</code><code>#^([a-z].*$)#mysqldump -uroot -p123456 --events -B \1 |</code>
<code> </code><code>gzip</code> <code>></code><code>/root/back/</code><code>\1.sql.gz</code><code>#g'|sh</code>
3)循环db,dump
<code>#!/bin/bash</code>
<code>#Date</code>
<code>#by</code>
<code>#Desc</code>
<code>MYUSER=root</code>
<code>MYPASSWD=123456</code>
<code>BACKDIR=</code><code>"/root/back"</code>
<code>MYHOST=</code><code>'127.0.0.1'</code>
<code>MYCMD=</code><code>"mysql -u$MYUSER -p$MYPASSWD -h$MYHOST"</code>
<code>MYDUMP=</code><code>"mysqldump -u$MYUSER -p$MYPASSWD -h$MYHOST -x -E -B -F -R "</code>
<code>DBLIST=`$MYCMD -e </code><code>"show databases;"</code><code>|</code><code>grep</code> <code>-Evi </code><code>"database|_schema|mysql"</code><code>`</code>
<code>[ ! -d $BACKDIR ] && </code><code>mkdir</code> <code>$BACKDIR</code>
<code>for</code> <code>dbname </code><code>in</code> <code>$DBLIST </code>
<code>do</code>
<code> </code><code>$MYDUMP $dbname|</code><code>gzip</code> <code>> $BACKDIR/${dbname}_$(</code><code>date</code> <code>+%F).sql.gz </code>
<code>done</code>
分表:
<code>MYDUMP=</code><code>"mysqldump -u$MYUSER -p$MYPASSWD -h$MYHOST -x "</code>
<code>do</code>
<code> </code><code>TLIST=`$MYCMD -e </code><code>"show tables from $dbname;"</code> <code>|</code><code>sed</code> <code>1d`</code>
<code> </code><code>for</code> <code>tname </code><code>in</code> <code>$TLIST</code>
<code> </code><code>do</code>
<code> </code><code>mkdir</code> <code>-p $BACKDIR/$dbname</code>
<code> </code><code>$MYDUMP $dbname $tname|</code><code>gzip</code> <code>> $BACKDIR/${dbname}/${dbname}_${tname}_$(</code><code>date</code> <code>+%F).sql.gz </code>
<code> </code><code>done</code>
<code></code>
本文转自crazy_charles 51CTO博客,原文链接:http://blog.51cto.com/douya/1788002,如需转载请自行联系原作者