Wykonaj kopię zapasową wszystkich baz danych MySQL Plesk do pojedynczych plików

0

Hy,

Ponieważ jestem nowy w skryptowaniu powłoki, potrzebuję pomocy. Obecnie wykonuję kopię zapasową wszystkich moich baz danych w jednym pliku, co utrudnia przywracanie. Drugi problem polegający na tym, że moje hasło MySQL nie działa z powodu błędu Plesk i otrzymuję hasło z „/etc/psa/.psa.shadow”. Oto kod, którego używam do tworzenia kopii zapasowych wszystkich moich baz danych w jednym pliku.

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

Znalazłem w Internecie skrypty, które wykonują kopie zapasowe każdej bazy danych do poszczególnych plików, ale nie wiem, jak sprawić, by działały w mojej sytuacji. Oto przykładowy skrypt:

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

Czy ktoś może mi pomóc, aby powyższy skrypt działał w mojej sytuacji? Wymagania:

  1. Wykonaj kopię zapasową każdej bazy danych do osobnego pliku, używając lokalizacji hasła plesk.
Michael
źródło

Odpowiedzi:

0

Spróbuj tego:

dla db w $ (mysql -e 'show database' -s --skip-column-names); do mysqldump -uadmin -p`cat / etc / psa / .psa.shadow` $ db | bzip2 -c> "/ root / $ (date +% d-% m-% Y) .sql.bz2"; gotowy

cybernard
źródło
BŁĄD 1045 (28000): Odmowa dostępu dla użytkownika „root” @ „localhost” (przy użyciu hasła: NIE). Dose nie działa ... I myślę, że nazwa folderu wyjściowego jest niepoprawna, powinna brzmieć „/ root / $ db - $ (data +% d-% m-% Y) .sql.bz2”
Michael
0

Aby wykonać kopię zapasową każdej bazy danych PLESK do pojedynczych plików i pominąć niektóre pliki, które znalazłem / utworzyłem kod:

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

Ulepsz ten kod.

Michael
źródło
0

Próbować:

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

działa to świetnie, jak w serwerze Plesk :: Testowana ścieżka użytkowania zgodnie z wymaganiami.

mobithegrt5
źródło