Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak zrobić bacup MySQL`a?
TomASS
post 21.06.2004, 09:54:28
Post #1





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Jak zrobić backup bazy danych MySQL, chodzi mi o zapis tychże baz na serwerze w postaci jednego pliku na każdą tabelę, boądź wszystkich tabel do tego samego pliku. Może to być w formie INSTERTÓW..... lub plików tekstowych.....

Próbowałem już z BACKUP/RESTORE TABLE, ale nie mam uprawnień typu FILE (cPanel tego nie przydziela) próbowałem też zapisywać do pliku txt

  1. <?php
  2.  
  3. $row['pierwsze'].&#092;";\".$row['drugie'].\";\".$row['trzecie'].\"n\";
  4.  
  5. ?>

i później ja wczytuje to to końcowe "\n" w postaci kwadracika też importuje się do bazy danych :/ jak napisze \t\n (lub \r\n - nie pamiętam tongue.gif ) to też nic to nie daje - tylko dwa kwadraciki.


P.S. phpMyAdmin odpada

Już mi ręce opadają. Bardzo proszę o pomoc.

Ten post edytował TomASS 21.06.2004, 09:58:33


--------------------
Go to the top of the page
+Quote Post
kszychu
post 21.06.2004, 10:07:04
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

Ostrzeżenie: (0%)
-----


Masz dostęp do shella? Wypróbuj mysqldump.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
AcidBurnt
post 21.06.2004, 10:27:11
Post #3





Grupa: Zarejestrowani
Postów: 215
Pomógł: 1
Dołączył: 13.04.2003
Skąd: z ławki przed blokiem

Ostrzeżenie: (0%)
-----


mowisz cos co Cpanelu, z tego co wiem to tam jest taka opcje jak buckup bazy
Go to the top of the page
+Quote Post
TomASS
post 21.06.2004, 13:20:39
Post #4





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


nie nie mam dostępu do shella :/ chodzi mi o coś co "końcowy" użytkownik umiałby prosto zrobić, więc cPanel odpada


--------------------
Go to the top of the page
+Quote Post
party
post 21.06.2004, 13:31:06
Post #5





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 19.08.2003
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Możesz zawsze oddzielić \n od treści:
Cytat
jeden;dwa;trzy;\n


--------------------
Go to the top of the page
+Quote Post
TomASS
post 21.06.2004, 14:11:32
Post #6





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


że jak??


--------------------
Go to the top of the page
+Quote Post
Bakus
post 21.06.2004, 16:17:17
Post #7


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


  1. <?php
  2. function save_data($data)
  3. {
  4. fwrite($this->dump_file_handle, $data) or die(&#092;"fwrite\");
  5. }
  6.  
  7. function data(&$db, &$table)
  8. {
  9. $sql = mysql_query(&#092;"SELECT * FROM `$db`.`$table`\");
  10. $nf = mysql_num_fields($sql);
  11. $nr = mysql_num_rows($sql);
  12. for ($c=0;$c<$nr;$c++)
  13. {
  14. $this->save_data(&#092;"INSERT INTO `$db`.`$table` VALUES (\");
  15. $row = mysql_fetch_row($sql);
  16. for($d=0;$d<$nf;$d++)
  17. {
  18. $data = strval($row[$d]);
  19. if(is_null($row[$d]))
  20. {
  21. $this->save_data(&#092;"NULL\");
  22. }else{
  23. if(is_int($row[$d]))
  24. {
  25. $this->save_data(mysql_escape_string($data));
  26. }else{
  27. $this->save_data(&#092;"'\".mysql_escape_string($data).\"'\");
  28. }
  29. }
  30. if ($d < ($nf-1))
  31. {
  32. $this->save_data(&#092;", \");
  33. }
  34. }
  35. $this->save_data(&#092;");n\");
  36. }
  37. $this->save_data(&#092;"n\");
  38. }
  39.  
  40. function tables_structure(&$db)
  41. {
  42. while($wiersz = mysql_fetch_row($list))
  43. {
  44. $table = $wiersz[0];
  45. $this->save_data(&#092;"DROP TABLE IF EXISTS `$db`.`$table`;n\");
  46. $sql = mysql_query('SHOW CREATE TABLE ' . $table);
  47. $tmp = mysql_fetch_array($sql);
  48. $this->save_data(str_replace(&#092;"`$table`\", \"`$db`.`$table`\", $tmp[1]) . \";nn\");
  49. $this->data($db, $table);
  50. }
  51. }
  52.  
  53. function create_dump()
  54. {
  55. $sql = mysql_query(&#092;"SHOW DATABASES\");
  56. while($db = mysql_fetch_row($sql))
  57. {
  58. if($db[0] != &#092;"mysql\")
  59. {
  60. $this->save_data(&#092;"DROP DATABASE IF EXISTS `$db[0]`;n\");
  61. $this->save_data(&#092;"CREATE DATABASE `$db[0]`;nn\");
  62. $this->tables_structure($db[0]);
  63. }
  64. }
  65. }
  66. ?>
Przygotowałem klasę, która tworzy i przywraca backupy baz MySQL... By nie pokazywać całej klasy wyciąłem funkcje, które są niezbędne do zrobienia backupa...
Dla tej klasy tzeba obsłużyć jeszcze: otworzenie połącznia z bazą danych, otworzyć plik z dumpem i go zamknąć... ot i wszystko... jak spędzisz przy tym 1-2 godzinki, to wszystko stanie się jasne i przejrzste.
Dodam, że skrypt tworzy kopię wszystkich baz i tabel dostępnych dla daneo użytkownika. Jedynym wyjątkiem jest baza mysql, która nie powinna być w jaki kolwiek sposób ruszana...


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post
TomASS
post 21.06.2004, 18:17:20
Post #8





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

Ostrzeżenie: (0%)
-----


Cytat(Bakus @ 2004-06-21 17:17:17)
  1. <?php
  2.     function save_data($data)
  3.     {
  4.         fwrite($this->dump_file_handle, $data) or die(&#092;"fwrite\");
  5.     }
  6.  
  7.     function data(&$db, &$table)
  8.     {
  9.         $sql = mysql_query(&#092;"SELECT * FROM `$db`.`$table`\");
  10.         $nf = mysql_num_fields($sql);
  11.         $nr = mysql_num_rows($sql);
  12.         for ($c=0;$c<$nr;$c++)
  13.         {
  14.             $this->save_data(&#092;"INSERT INTO `$db`.`$table` VALUES (\");
  15.             $row = mysql_fetch_row($sql);
  16.             for($d=0;$d<$nf;$d++)
  17.             {
  18.                 $data = strval($row[$d]);
  19.                 if(is_null($row[$d]))
  20.                 {
  21.                     $this->save_data(&#092;"NULL\");
  22.                 }else{
  23.                     if(is_int($row[$d]))
  24.                     {
  25.                     $this->save_data(mysql_escape_string($data));
  26.                     }else{
  27.                     $this->save_data(&#092;"'\".mysql_escape_string($data).\"'\");
  28.                     }
  29.                 }
  30.                 if ($d < ($nf-1))
  31.                 {
  32.                     $this->save_data(&#092;", \");
  33.                 }
  34.             }
  35.             $this->save_data(&#092;");n\");
  36.         }
  37.         $this->save_data(&#092;"n\");
  38.     }
  39.  
  40.     function tables_structure(&$db)
  41.     {
  42.         while($wiersz = mysql_fetch_row($list))
  43.         {
  44.             $table = $wiersz[0];
  45.             $this->save_data(&#092;"DROP TABLE IF EXISTS `$db`.`$table`;n\");
  46.             $sql = mysql_query('SHOW CREATE TABLE ' . $table);
  47.             $tmp = mysql_fetch_array($sql);
  48.             $this->save_data(str_replace(&#092;"`$table`\", \"`$db`.`$table`\", $tmp[1]) . \";nn\");
  49.             $this->data($db, $table);
  50.         }
  51.     }
  52.  
  53.     function create_dump()
  54.     {
  55.         $sql = mysql_query(&#092;"SHOW DATABASES\");
  56.         while($db = mysql_fetch_row($sql))
  57.         {
  58.             if($db[0] != &#092;"mysql\")
  59.             {
  60.                 $this->save_data(&#092;"DROP DATABASE IF EXISTS `$db[0]`;n\");
  61.                 $this->save_data(&#092;"CREATE DATABASE `$db[0]`;nn\");
  62.                 $this->tables_structure($db[0]);
  63.             }
  64.         }
  65.     }
  66. ?>
Przygotowałem klasę, która tworzy i przywraca backupy baz MySQL... By nie pokazywać całej klasy wyciąłem funkcje, które są niezbędne do zrobienia backupa...
Dla tej klasy tzeba obsłużyć jeszcze: otworzenie połącznia z bazą danych, otworzyć plik z dumpem i go zamknąć... ot i wszystko... jak spędzisz przy tym 1-2 godzinki, to wszystko stanie się jasne i przejrzste.
Dodam, że skrypt tworzy kopię wszystkich baz i tabel dostępnych dla daneo użytkownika. Jedynym wyjątkiem jest baza mysql, która nie powinna być w jaki kolwiek sposób ruszana...

A dlaczego wyciełeś questionmark.gif winksmiley.jpg Nie mógłbyś mi na priwa zrzucić ? tongue.gif


--------------------
Go to the top of the page
+Quote Post
Bakus
post 21.06.2004, 23:39:34
Post #9


Administrator serwera


Grupa: Przyjaciele php.pl
Postów: 909
Pomógł: 0
Dołączył: 12.08.2003
Skąd: /var/www/wroclaw.php

Ostrzeżenie: (0%)
-----


Nie... bo nie wszystko jest przenośne (wiele jest dostosowane do moich wygórowanych potrzeb), a nie chce mi się z tym bawić...
Mogę jeszcze tylko dodać, że skrypt obsługuje 3 serwery naraz (główny i 2 z kopią)... a tyle chyba nie masz... winksmiley.jpg


--------------------
Powrót do przeszłości :)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:42