将所有mysql数据库备份到单独文件夹的简单脚本

时间:2018-04-15 23:23:50

标签: mysql bash

您好我有10个数据库,每个数据库有3个同名用户的表

我试图通过数据库名称将每个数据库转储到一个单独的文件夹,并在该目录中包含所有转储的表。

所以我开始使用这个示例代码。

mysql -uroot -p -e 'show databases' | while read dbname; do mysqldump -uroot -p -T/backup/$dbname/ --fields-terminated-by="|" "$dbname" > "$dbname".txt; done

然后我收到了这个错误。

mysqldump: Can't create/write to file '/home/database/users.sql' (Errcode: 2 - No such file or directory)

我对bash脚本没有太多技巧 请帮帮我!!

我的第二个剧本

#!/bin/bash

echo "MySQL backup"
mysql -u root -pPwd -e "show databases" \
    | grep -Ev 'Database|information_schema' \
    | while read dbname;
do
  echo "Dumping $dbname"
  mysqldump -u root -pPwd --fields-terminated-by="|" $dbname > /var/lib/mysql-files/$dbname/ > "$dbname".txt; done
done

1 个答案:

答案 0 :(得分:0)

您指定了存储转储的文件夹,但是不要在脚本中创建它们,因此,在mysqldump命令之前添加mkdir:

do
  echo "Dumping $dbname"
  mkdir -p /var/lib/mysql-files/${dbname} 
  mysqldump ... > /var/lib/mysql-files/${dbname}/${dbname}.sql
done