你好,我有 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
最佳答案
您指定了文件夹来存储转储,但没有在脚本中创建它们,因此,在 mysqldump 命令之前添加 mkdir:
do
echo "Dumping $dbname"
mkdir -p /var/lib/mysql-files/${dbname}
mysqldump ... > /var/lib/mysql-files/${dbname}/${dbname}.sql
done
关于mysql - 一个简单的脚本,用于将所有 mysql 数据库备份到单独的文件夹中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847742/