我使用mysqldump自动将所有数据库转储到文本文件中,并将此转储另存为备份.我使用–all-databases选项转储我的数据库,但是它也转储不需要的系统数据库(information_schema,PHPmyadmin等).
有没有一种方法可以使用MysqLdump转储我的所有数据库而无需在命令行上显式命名它们(这样,我不必在每次创建新数据库时都修改备份脚本),而忽略所有系统数据库?
最佳答案
您可以这样编写bash脚本.在转储数据库之前,它将检查数据库的名称.
#!/bin/sh
DATABASES="$(/lighttpd/local/bin/MysqL --user=user --password=pass -Bse 'show databases')"
for db in ${DATABASES[@]}
do
if [ $db == "information_schema" ]
then
continue
fi
echo ${db}-$(date +%m-%d-%y).sql.bz2 is being saved in /backup/MysqL
MysqLdump --user=user --password=pass $db --single-transaction -R | bzip2 -c > ${db}-$(date +%m-%d-%y).sql.bz2
done