2013年8月17日星期六

mysqldump 排除mysql db 和information_schema


由于重建从库的时候,刚开始我们可能不需要导出mysql表和information_schema 表,如果是三两个库的话,那还好,
现实情况是我的有些库里面的database 有几百个,之前有想到的做法是先都dump 出来后,再吧这几个库内容删掉。
 
这是从网上google 来的一个脚本:
 
MYUSERNAME=kris
MYPASSWORD=myPassword
MYHOST=database-server.mydomain.com

# Databases to exclude
DBEXCLUDE=db_name_i_dont_want

MYSQL=$(mysql -N -u${USER} -p${PASS} -h${HOST} <<<"SHOW DATABASES" | grep -v ${DBEXCLUDE} | grep -v mysql | grep -v information_schema | grep -v test | tr "\n" " ")

mysqldump -v -u${USER} -p${PASS} -h${HOST} --databases  --skip-lock-tables ${MYSQL} > DB-DUMP.sql
 
改进:
MYSQL=$(mysql -N  --socket=/diska/mysqldata/mysql.sock  <<<"SHOW DATABASES" | grep -v mysql | grep -v information_schema | grep -v test |sed -e "s/^/&'/g" -e "s/$/&'/g" | tr "\n" " ")
 
我们平时也不用这么麻烦用脚本来吧,先试试看看mysql 的命令:
 
[root@kankan ~]# MYSQL=$(mysql <<<"SHOW DATABASES" | grep -v mysql | grep -v information_schema | grep -v test | tr "\n" " ")
[root@kankan ~]# echo $MYSQL
Database app_adv_statistics_20110825 backup c2c c2c2012 game
[root@kankan ~]#
 
这里MYSQL 变量多了一个Database,也记得要把这个拿掉哦
 
 

没有评论:

发表评论