> 数据库 > MySQL >

mysqldump命令备份时如何排除某些表

在mysql中用mysqldump命令备份数据时,如果排除掉某些不想要的表的方法。

测试用的数据库为restdb来举例吧,备份时要求排除掉 snmp_query_graph_rrd_sv表和 rra表。

首先,把需要备份的表列出来:
 

 

mysql -u root restdb -e "show tables;" | awk '!/rra/&&!/snmp_query_graph_rrd_sv/'

[root@nodec 02]# mysql -u root restdb -e "show tables;" | awk '!/rra/&&!/snmp_query_graph_rrd_sv/'
Tables_in_restdb
cdef
cdef_items
colors
.....
 

那两个表没了,可是Tables_in_restdb还在,没关系,加上即可:
 

mysql -u root restdb -e "show tables;" | awk '!/Tables_in_restdb/&&!/rra/&&!/snmp_query_graph_rrd_sv/'

现在变量有了,下面开始写备份脚本了。
方法1,
 

#!/bin/bash
i=`mysql -u root restdb -e "show tables;" | awk '!/Tables_in_restdb/&&!/rra/&&!/snmp_query_graph_rrd_sv/'`
mysqldump -u root restdb $i >> ufo.sql

方法2,使用for循环
 

#!/bin/bash
i=`mysql -u root restdb -e "show tables;" | awk '!/Tables_in_restdb/&&!/rra/&&!/snmp_query_graph_rrd_sv/'`
for k in $i
    do mysqldump -u root restdb $k >> ufo.sql
done

保存为back_mysql.sh,加上+x可执行权限即可运行了。
有兴趣的朋友,新自动手执行下:./back_mysql.sh。


(责任编辑:IT)