Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> kopia bezpieczeństwa
raf2001
post
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

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


Czy jest jakaś prosta metoda zrobienia kopii bezpieczeństwa całej bazy danych(lub danych tylko tabel)?


--------------------
Go to the top of the page
+Quote Post
wojto
post
Post #2





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 29.06.2003
Skąd: Warszawa

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


a nie slyszales o phpMyAdmin questionmark.gif


--------------------
Go to the top of the page
+Quote Post
maciu
post
Post #3





Grupa: Zarejestrowani
Postów: 238
Pomógł: 1
Dołączył: 27.08.2003

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


najprostsza metoda to użycie PhpMyAdmin
Go to the top of the page
+Quote Post
q
post
Post #4





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 4.04.2003
Skąd: Częstochowa/Wrocław

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


polecenie systemowe:

pojedyncza tabela:
Kod
mysqldump -u nazawa_uzytkownika --password=haslo nazwa_bazy > nazwa_pliku.sql


cala baza:
Kod
mysqldump -u nazawa_uzytkownika --password=haslo --all-databases > nazwa_pliku.sql
Go to the top of the page
+Quote Post
raf2001
post
Post #5





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

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


1. to że phpmyadmin to ma to ja od dawna wiem, ale mi chodzi z poziomu skryptu żeby to zrobić. (bez użycia phpmyadmina)
2. @q: jak to użyć w skrypcie. musi bć to skryptowo zrobione.
Update


--------------------
Go to the top of the page
+Quote Post
q
post
Post #6





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 4.04.2003
Skąd: Częstochowa/Wrocław

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


1. rozwiazanie [manual:5efdad68f4]exec[/manual:5efdad68f4] lub [manual:5efdad68f4]system[/manual:5efdad68f4] z poleceniami tymi, co podalem
2. rozwiazanie - backup do innej tabeli MySQL (mozna nawet w innej bazie) na tym samym serwerze, czyli taka sama struktura a backup przez zapytanie

[sql:1:5efdad68f4]INSERT INTO `stara_baza`.`tabela`
SELECT *
FROM `nowa_baza`.`tabela`[/sql:1:5efdad68f4]

innych pomyslow w tym momencie nie mam :|
Go to the top of the page
+Quote Post
raf2001
post
Post #7





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

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


wole robić backup do pliku, ponieważ jest to owiele bezpieczniejsze. ALe mam mały problem, zrobiłem takie coś:
[php:1:93568a241c]
<?
system('mysqldump -u krasnal --password=krasnal --all-krasnal > krasnal.sql');
?>
[/php:1:93568a241c]
i niebackup'uje, tworzy plik ale plik ten jest pusty(pracuje na krasnalku, więc dane są prawidłowe - domyślne). Co mam począc


--------------------
Go to the top of the page
+Quote Post
spenalzo
post
Post #8





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Może tak:
[php:1:6483a22f7e]
<?
exec('mysqldump -u krasnal -phaslo -D baza > krasnal.sql');
?>
[/php:1:6483a22f7e]


--------------------

Go to the top of the page
+Quote Post
raf2001
post
Post #9





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

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


dziwne ale nawet to :
[php:1:362e69839b]<?php
exec('mysqldump -u krasnal -p krasnal -D krasnal > krasnal.sql');

?>[/php:1:362e69839b]
niedziała, tworzy pusty plik. co może być tutaj przyczyną


--------------------
Go to the top of the page
+Quote Post
spenalzo
post
Post #10





Grupa: Zarejestrowani
Postów: 2 064
Pomógł: 1
Dołączył: 22.01.2003
Skąd: Poznań

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


Czy podałeś poprawne dane?


--------------------

Go to the top of the page
+Quote Post
MaKARON
post
Post #11





Grupa: Zarejestrowani
Postów: 114
Pomógł: 1
Dołączył: 17.07.2003

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


Jeżeli chodzi o backup, to raczej zrezygnuj z php i wrzuc sobie to do CRONa... dodatkowo dobrze jest blokować dostęp do bazy wtedy - szybciej działa zrzut - ważne przy duuużej bazie.
Go to the top of the page
+Quote Post
raf2001
post
Post #12





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

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


dane sa prawidlowe, baze mam na krasnalku, więc dane są krasnal, krasnal i baza nazywa się krasnal. a chodzi mi o skryptowy backup (i to bardzo), tak żebym mógl se przez strone wejśc i zrobić backup. I tylko tyle


--------------------
Go to the top of the page
+Quote Post
q
post
Post #13





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 4.04.2003
Skąd: Częstochowa/Wrocław

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


jezeli chcesz polozyc jakis szczegolny nacisk na skryptowy backup, bez mysqldump,[manual:b9b78e4303]exec[/manual:b9b78e4303] i [manual:b9b78e4303]system[/manual:b9b78e4303], to jest tez opcja przez samo zapytanie MySQL

[sql:1:b9b78e4303]
SELECT * INTO OUTFILE "/tmp/result.text" FROM nazwa_tabeli
[/sql:1:b9b78e4303]

taki plik nie wyglada jak standardowy plik mysqldump , ale jako wyswietlone kolejne wiersze z zapytania, kolejne komorki tabeli oddzielone sa znakami tabulacji, wiec spokojnie, w razie potrzeby przywrocenia bazy, da sie cos z tym zrobic lub przez zapytanie SQL (czytaj w linku)

http://www.mysql.com/doc/en/SELECT.html
http://www.mysql.com/doc/en/LOAD_DATA.html
Go to the top of the page
+Quote Post
ave
post
Post #14





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


lepiej
[sql:1:1f9dcea538]SELECT * INTO OUTFILE "c:a.text" FIELDS TERMINATED BY ',' FROM tablica[/sql:1:1f9dcea538]

a wgrywanie tego
[sql:1:1f9dcea538]LOAD DATA INFILE 'c:a.text' INTO TABLE tablica FIELDS TERMINATED BY ',' [/sql:1:1f9dcea538]
Go to the top of the page
+Quote Post
raf2001
post
Post #15





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

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


mysle, żę to by było najlepsze rozwiązanie, ael po stworzeniu skryptu
[php:1:d0efc397b3]<?php
$sql_num = mysql_query("SELECT * INTO OUTFILE "c:a.text" FIELDS TERMINATED BY ','
FROM krasnal");
$num = mysql_num_rows($sql_num);
?>[/php:1:d0efc397b3]
wypisuje mi błąd:
Parse error: parse error, unexpected T_STRING in c:usrapachehttpdhtmlrprojectindex.php on line 6
jak to poprawić. Akurat 6 linijka to wypada zapytnanie.


--------------------
Go to the top of the page
+Quote Post
ave
post
Post #16





Grupa: Zarejestrowani
Postów: 117
Pomógł: 2
Dołączył: 29.01.2004
Skąd: Rz-ów

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


[php:1:35ba8c5af9]<?php
mysql_query("SELECT * INTO OUTFILE 'c:a.text' FIELDS TERMINATED BY ','
FROM krasnal");
?>[/php:1:35ba8c5af9]
Go to the top of the page
+Quote Post
raf2001
post
Post #17





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 14.06.2002
Skąd: Żyrardów

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


tak wtedy była malutka pomylka :oops: . Ale teraz pisze tak
[php:1:213cf3fd28]<?php
$db1 = mysql_pconnect ('localhost', 'krasnal', 'krasnal');
mysql_select_db('krasnal', $db1);
mysql_query ("SELECT * INTO OUTFILE 'a.sql' FIELDS TERMINATED BY ',' FROM test");
echo mysql_error();
?>[/php:1:213cf3fd28]
to mi wypisuje:
Access denied for user: 'krasnal@localhost' (Using password: TAK)
Fatal error: Nesting level too deep - recursive dependency? in Unknown on line 0

Jak mam zrobić, aby pobrać do backup'u te bazy/baze.
przy pomocy mojego kodu lączenia z bazą:
[php:1:213cf3fd28]<?php
function db_connect() {
global $dbhost, $dbusername, $dbuserpassword, $default_dbname, $MYSQL_ERRNO, $MYSQL_ERROR;
if(!($lacze = @mysql_connect($dbhost, $dbusername, $dbuserpassword))) {
$MYSQL_ERRNO = '0';
$MYSQL_ERROR = "Nie udało się nawiązać połączenia z $dbhost.";
return 0;
} elseif (empty($dbname) && !mysql_select_db($default_dbname)) {
$MYSQL_ERRNO = mysql_errno();
$MYSQL_ERROR = mysql_error();
return 0;
} else {
return $lacze;
}
}
?>[/php:1:213cf3fd28]
Jak to zrobić?questionmark.gif? rolleyes.gif
Update


--------------------
Go to the top of the page
+Quote Post
MoD
post
Post #18





Grupa: Zarejestrowani
Postów: 193
Pomógł: 0
Dołączył: 14.09.2003
Skąd: Brodnica (koło Torunia)

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


Ja proponuje mój skrypcik, który wykonuje kopię podanej tabeli.

backup.php
  1. <?php
  2.  
  3. function copytable ( $host, $login, $password, $database, $table, $file_name, $orderby )
  4. {
  5. mysql_connect ( $host, $login, $password ); //Łączymy się z bazą danych
  6. mysql_select_db ( $database ); //Wybieramy baże danych
  7.  
  8. $date = date ( &#092;"jS F Y  g:i:s a\" ); //Ustalamy datę; Domyślnie jest w formacie angielskim.
  9.  
  10. if ( !$sql = mysql_query ( &#092;"SELECT * FROM `\" . $table . \"` ORDER BY `\" . $orderby . \"` ASC;\" ) )
  11. {
  12. return 0; //Jeśli nie ma tabeli zwraca błąd
  13. }
  14.  
  15. $records_num = mysql_num_rows ( $sql ); //Zliczamy rekordy
  16.  
  17. $file = fopen ( $file_name, &#092;"a+\" ); //Robimy pliczek lub dopisujemy do istniejącego
  18.  
  19. $head = &#092;"nnnn\";
  20. $head .= &#092;"##########################################################n\";
  21. $head .= &#092;"#n\";
  22. $head .= &#092;"# Backup data for table `\" . $table . \"`n\";
  23. $head .= &#092;"# Number of records: \" . $records_num . \"n\";
  24. $head .= &#092;"# Date of generate file: \" . $date . \"n\";
  25. $head .= &#092;"#n\";
  26. $head .= &#092;"##########################################################nnn\"; //Tu został ustawiony nagłówek pliku, MySQL potraktuje to jak komentarz
  27.  
  28. fputs ( $file, $head ); //Wrzucamy nagłówek do pliku
  29.  
  30. while ($sql_result = mysql_fetch_array( $sql, MYSQL_NUM ) ) //Pętelka która pozwala na odczytanie danych
  31. {
  32. $count = count ( $sql_result ); //Zliczamy pola tabeli
  33. $sql_for_write = &#092;"INSERT INTO '\" . $table . \"' VALUES(\" ;
  34. $i = 1 ;
  35. $sql_for_write .= &#092;"'\" . $sql_result[0] . \"'\";
  36. while ( $i < $count ) //Pętla odpowiedzialna za utworzenie zapytania
  37. {
  38. $sql_for_write .= &#092;", '\" . $sql_result[$i] . \"'\" ;
  39. $i++;
  40. }
  41. $sql_for_write .= &#092;");n\" ;
  42. fputs ( $file, $sql_for_write ); //Zapytanie zostaje zapisane do pliku.
  43. unset ( $sql_for_write ); //Czyścimy zmienną, żeby nie zajmowała pamięci. Zostanie ona później znowu wykorzy
  44. tana.
  45. }
  46.  
  47. fclose ( $file ); //Zamykamy plik
  48.  
  49. return 1 ; //Funkcja została poprawnie wykonana.
  50. }
  51.  
  52.  
  53.  
  54. ?>


Wykorzystanie:
  1. <?php
  2.  
  3. $host = &#092;"localhost\" ;
  4. $login = &#092;"root\" ;
  5. $password = &#092;"\" ;
  6. $database = &#092;"baza\" ;
  7. $table = &#092;"tabela\" ;
  8. $file_name = &#092;"backup.sql\" ;
  9. $orderby = &#092;"id\" ; //Tu zostały ustawione parametry funkcji; w zmienną \"orderby\" wpisujemy klucz, według którego bedzą sortowane wyniki.
  10.  
  11. require_once ( &#092;"backup.php\" ); //Dołączamy naszą funkcję
  12.  
  13. $result = copytable ( $host, $login, $password, $database, $table, $file_name, $orderby ); //Ustawiamy zmienną, aby sprawdzić czy wywołanie się powiodło.
  14.  
  15. if ( $result = 0 ) //Jeśli nie
  16. {
  17. print &#092;"Wystąpił błąd!\"; //Wyświetlamy komunikat
  18. }
  19. else //W przeciwnym wypadku
  20. {
  21. print &#092;"Kopia została wykonana!\"; //Powiadamiamy o wykonaniu zadania.
  22. }
  23.  
  24. ?>

Napewno działa, sprawdzałem smile.gif i to na każdym serwerze.


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #19





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

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


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\appserv\www\gotowe\bkp2.php on line 15

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in c:\appserv\www\gotowe\bkp2.php on line 30
Kopia została wykonana!



:/



line 15: $records_num = mysql_num_rows ( $sql ); //Zliczamy rekordy


line 30: while ($sql_result = mysql_fetch_array( $sql, MYSQL_NUM ) ) //Pętelka która pozwala na odczytanie danych


a jak potem wczytac te dane?


--------------------
Go to the top of the page
+Quote Post
MoD
post
Post #20





Grupa: Zarejestrowani
Postów: 193
Pomógł: 0
Dołączył: 14.09.2003
Skąd: Brodnica (koło Torunia)

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


Pytanie: podałeś dobre informacje do zmiennych?

Wczytuje się je bardzo prosto: musisz wywołać plik z PhpMyAdmin.


--------------------
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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 Aktualny czas: 20.08.2025 - 05:26