[MySQL] Wykonanie kopii zapasowej z poziomu terminala

Narzędzie mysqldump pozwala na wykonanie kopii zapasowej bazy danych (niekoniecznie tej, znajdującej się na hoście lokalnym) z poziomu terminala. Schemat zapytania wygląda następująco:

mysqldump -h adres_serwera -u użytkownik_bazy -p hasło_użytkownika baza_danych > plik_wyjściowy.sql

Przykład

mysqldump -h localhost -u szmitas -p haslo123 ubuntu_pomoc > kopia.sql

Przywracanie z pliku:

mysql -h adres_serwera -u użytkownik_bazy -p hasło_użytkownika baza_danych < plik_wyjściowy.sql

Przykład:

mysql -h localhost -u szmitas -p haslo123 ubuntu_pomoc < kopia.sql
Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.
  • http://piotr.lemiesz.pl piotr

    aby nie trzeba było hasła wpisywać w konsoli wystarczy wpisać hasła w pliku ~/.mycnf
    w bloku
    [mysqldump]
    user = root
    password = xxx

  • Piecia

    Jeszcze lepsze jest narzędzie: automysqlbackup, właściwie skrypt nakładka na mysqldump

  • msx

    czemu moje hasło traktuje jako nazwę bazy?
    wpisuję tak: mysqldump -h localhost -u user -p ???? msx_home_db > /home/msx/Dropbox/msx_home_db
    i wywala: mysqldump: Got error: 1049: Unknown database ‚????’ when selecting the database

    • http://www.ubuntu-pomoc.org Łukasz Schmidtke

      Może hasło zawiera jakieś nieprawidłowe znaki, spróbuj wziąć je w cudzysłów.

      • msx

        Niestety nie, hasło ustawiłem chwilowo na admin i jest to samo :(
        Taka sama sytuacja występuje logując się do mysql
        msx@Ubustation:~$ mysql -u admin -p admin
        Enter password: (i tu znowu muszę wpisywać hasło)
        ERROR 1049 (42000): Unknown database ‚admin’.
        Natomiast jeśli wykonam to tak:
        msx@Ubustation:~$ mysqldump -u admin -p msx_home_db > /home/msx/Dropbox/msx_home_db.sql
        Enter password: (admin)
        Wtedy działa.

        • msx

          Rozwiązaniem mojego problemu jest usunięcie spacji po -p, czyli będzie wyglądało to tak: mysql -h localhost -u szmitas -phaslo_bez_spacji_po_-p ubuntu_pomoc < kopia.sql.
          W taki sposób działa również jako skrypt bash-a wykonywany przez crona.