Eksport wszystkich baz z MySQL do plików SQL

Eksport wszystkich baz danych z MySQL.

<?php
header('Content-type: text/html; charset=utf-8');
class Config {
   public static $host = '127.0.0.1';
   public static $username = 'root';
   public static $password = '';
   public static $port = 3306;
}

if (!file_exists('dbdumps') || !is_dir('dbdumps'))
   mkdir('dbdumps', 0700);

$dsn = 'mysql:host=' . Config::$host . ';port=' . Config::$port;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');
$dbh = new PDO($dsn, Config::$username, Config::$password, $options);

$result = $dbh->query('SHOW DATABASES;');
if ($result !== false)
   foreach ($result->fetchAll() as $row) {
      $cmd = 'mysqldump -u ' . Config::$username . ' -p' . Config::$password
         . ' ' . $row['Database'] . ' > dbdumps/' . $row['Database'] . '.sql';
      system($cmd);
      $fileSize = filesize('dbdumps/' . $row['Database'] . '.sql');
      echo 'File ' . $row['Database'] . '.sql saved [' . $fileSize . ' bytes] .<br />';
   }

5 myśli na temat “Eksport wszystkich baz z MySQL do plików SQL

  1. zadziała na każdym hostingu (dedyk, vps, shared) bez safe mode?
    Do tego po co tworzyć klasę, jeśli jedynym jej celem jest trzymanie statycznych wartości? Nie lepiej po prostu tablica skoro reszta to zwykły strukturalny PHP? :>

    1. Nie testowałem na wszystkich hostingach więc nie gwarantuję, że wszędzie zadziała. Jeśli chcesz możesz zapisać na tablicy, mi się podobało w ten sposób 🙂

      1. To mogłeś z całości zrobić klasę gdzie do konstruktora przekazujesz config DB (ze ścieżką do mysqldump) i metoda backup gdzie przekazujesz ścieżką gdzie mają być zapisane 🙂
        Do tego metoda restore przyjmująca opcjonalnie nazwę DB, którą chcesz odtworzyć z backupa 😉
        Ogólnie muszę sobie coś takiego podpiąć pod crona, ale nigdy nie mam czasu 😛 Dziś znowu ręcznie coś przywracałem, bo się „przypadkiem” … „komuś” usunęło całe konto klienta …

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Wyloguj /  Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Wyloguj /  Zmień )

Zdjęcie na Facebooku

Komentujesz korzystając z konta Facebook. Wyloguj /  Zmień )

Połączenie z %s

Ta witryna wykorzystuje usługę Akismet aby zredukować ilość spamu. Dowiedz się w jaki sposób dane w twoich komentarzach są przetwarzane.