将所有 plesk MySQL 数据库备份到单独的文件中

将所有 plesk MySQL 数据库备份到单独的文件中

嗨,

因为我是 shell 脚本的新手,所以我需要帮助。我目前将所有数据库备份到一个文件中,这使得恢复非常困难。第二个问题是,由于 Plesk 错误,我的 MySQL 密码不起作用,我从“/etc/psa/.psa.shadow”获取密码。这是我用来将所有数据库备份到一个文件中的代码。

mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` --all-databases | bzip2 -c > /root/21.10.2013.sql.bz2

我在网上找到了一些脚本,可以将每个数据库备份到单独的文件中,但我不知道如何让它们适用于我的情况。这是一个示例脚本:

for db in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $db | gzip > "/backups/mysqldump-$(hostname)-$db-$(date +%Y-%m-%d-%H.%M.%S).gz"; done

有人能帮助我让上述脚本适合我的情况吗?要求:

  1. 使用 plesk 密码位置将每个数据库备份到单独的文件。

答案1

尝试这个:

对于 $(mysql -e'显示数据库'-s --skip-column-names) 中的 db;执行 mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` $db | bzip2 -c > "/root/$(date +%d-%m-%Y).sql.bz2";完成

答案2

因此,为了将 PLESK 的每个数据库备份到单独的文件并跳过一些文件,我找到/制作了代码:

for db in $(mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e 'show databases' -s --skip-column-names); do
if [[ "$db" != *schema* && "$db" != *phpmyadmin* && "$db" != "event" && "$db" != "psa" && "$db" != "mysql" ]]; then
mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` $db | bzip2 -c > /root/backup/mysql/$db.sql.bz2
fi
done

请随意改进此代码。

答案3

尝试:

for db in $(mysql -uadmin -p`cat /etc/psa/.psa.shadow` -e 'show databases' -s --skip-column-names); do mysqldump -uadmin -p`cat /etc/psa/.psa.shadow` --skip-lock-tables $db | gzip > "/var/www/mysql/mysqldump-$(hostname)-$db-$(date +%Y-%m-%d-%H.%M.%S).gz"; done

这在 Plesk 服务器中使用效果很好:: 根据要求测试使用路径。

相关内容