我们有个数据库用 mysqldump备份 后来备份的速度越来越慢,备份文件也越来越大。检查的时候发现有两个表非常大而且没有必要备份,所以决定备份这个库的时候排除他们两个。可是mysqldump可没有排除某个表这个选项,那么就用shell脚本来实现吧!
我这里就用cactidb来举例吧,我这里不备份 snmp_query_graph_rrd_sv表和 rra表,先把需要备份的表列出来,这样写
mysql -u root cactidb -e "show tables;" | awk ‘!/rra/&&!/snmp_query_graph_rrd_sv/‘
[[email protected] 02]# mysql -u root cactidb -e "show tables;" | awk ‘!/rra/&&!/snmp_query_graph_rrd_sv/‘
Tables_in_cactidb
cdef
cdef_items
colors
.....
那两个表没了,可是Tables_in_cactidb还在,没关系,加上就好了
mysql -u root cactidb -e "show tables;" | awk ‘!/Tables_in_cactidb/&&!/rra/&&!/snmp_query_graph_rrd_sv/‘
好了,现在变量有了,下面就是具体的备份了
写个脚本 sql.sh 内容如下
#!/bin/bash
i=`mysql -u root cactidb -e "show tables;" | awk ‘!/Tables_in_cactidb/&&!/rra/&&!/snmp_query_graph_rrd_sv/‘`
mysqldump -u root cactidb $i >> ufo.sql
还有一种方法 就是用for循环 如下
i=`mysql -u root cactidb -e "show tables;" | awk ‘!/Tables_in_cactidb/&&!/rra/&&!/snmp_query_graph_rrd_sv/‘`
for k in $i
do mysqldump -u root cactidb $k >> ufo.sql
done
好了,给个X 权限执行以下吧,别忘了最好加上绝对路径~~
是不是很简单 O(∩_∩)O~