Loading:


Backup Export bazy MySQL / krzaczki zamiast polskich liter

ZANIM napiszesz w tym temacie następny post, przeczytaj dokładnie WSZYSTKO co poniżej napisałem.
Poniższy post podzielony jest na 3 działy.
1. Opisuję jak (w możliwie najbezpieczniejszy i najmniej problemowy) sposób wykonywać backup bazy.
2. Jak prawidłowo przywrócić wykonany wcześniej backup.
3. Jakie poprawki wprowadzić do modułu kopii zapasowej, aby w 100% odtworzyć bazę.


  1. Jak prawidłowo wykonać kopię bazy:
    1. Przy użyciu wbudowanej w forum funkcji backupu (znajdującej się w PA -> SQL -> Kopia zapasowa) * Gdzie należy opcji szukać - już podałem. Wykonanie backupu sprowadza się do kliknięcia "Wykonaj kopię teraz" (polecam odznaczyć "Kopiuj zawartość tabel search") * Plik z backupem został umieszczony w katalogu /db/db_backup/
    2. Przy użyciu phpMyAdmin (opis w oparciu o phpMyAdmin 2.6.4) * Zakładam, że każdy ma dostęp do phpMyAdmina (instalacji i konfiguracji tego programu nie mam zamiaru opisywać!) * Uruchamiamy phpMyAdmina * W oknie po lewej stronie wybieramy naszą bazę (którą chcemy zabezpieczyć). Dla przykładu konkretnego niech nazywa się ona Gość. UWAGA: niektórzy administratorzy zabraniają zmiany bazy danych i jest Twoja baza otwierana automatycznie! * W prawym oknie pojawia się (na samej górze) Eksport * Zaznaczamy wszystkie tabele * Wybieramy następujące "Opcje SQL":

        Obejmij eksport transakcją Dodaj DROP TABLE Dodaj IF NOT EXISTS Kompatybilność eksportu SQL: MYSQL40 (najważniejsza opcja!) Zapisz jako plik
  2. Jak prawidłowo odtworzyć kopię bazy
    1. Przy pomocy phpMyAdmina (kopię wykonaliśmy również z phpMyAdmina i zaznaczyliśmy kompatybilność eksportu MYSQL40 :!: ) Dodanie opcji MYSQL40 zapobiega dopisywaniu


Kod:
DEFAULT CHARSET=latin1 AUTO_INCREMENT=1

    1. * Wybieramy w phpMyAdminie naszą bazę. * Na górze wybieramy SQL (interesuje nas na stronie tylko ramka: "lub Lokalizacja pliku tekstowego") * Klikamy "Przeglądaj" i wskazujemy nasz plik z kopią * Najważniejsze: z rozwijanej listy: "Zestaw znaków dla pliku" wybieramy binary* Klikamy "Wykonaj" UWAGA: jeśli otworzy Ci się biała strona, to oznacza iż plik z bazą jest za duży. Co zrobić w takim wypadku opisuje inny temat w FAQ.

    2. Przy pomocy phpMyAdmina (kopię wykonaliśmy również z phpMyAdmina i NIE zaznaczyliśmy kompatybilność eksportu MYSQL40 i/lub w zrobionym zrzucie bazy mamy ciąg "DEFAULT CHARSET..." :!: ) * Wchodzimy do phpMyAdmina * Na pierwszej stronie powinniśmy mieć coś w stylu: "System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)" Z innymi kodowaniami się nie spotkałem i ich nie będę opisywał. Jednak jeśli takie występuje, to należy najprawdopodobniej to samo wpisać w poleceniach SET poniżej (wyróżnione kolorkiem) * Edytujemy nasz plik .sql z kopią bazy. * Na samym początku pliku dopisujemy:

Cytat:
SET NAMES 'utf8'; SET CHARACTER SET 'utf8'; SET SESSION collation_connection = 'latin1_general_ci';

    1. * Zapisujemy plik * Wybieramy w phpMyAdminie naszą bazę. * Na górze wybieramy SQL (interesuje nas na stronie tylko ramka: "lub Lokalizacja pliku tekstowego") * Klikamy "Przeglądaj" i wskazujemy nasz plik z kopią * Na rozwijanej liście może zostać dowolna wartość (np: utf8) * Klikamy "Wykonaj"

    2. Przy pomocy DBLoadera (kopia została wykonana przy użyciu wbudowanej w forum "Kopii zapasowej") * Kopiujemy plik z backupem na nowe forum do katalogu głównego forum. * Wchodzimy do DumpLoadera (http://twojeforum/dbloader/dbloader.php) * Wybieramy "Wczytaj bazę danych" * Przed wybraniem pliku (o ile mamy już cokolwiek na forum) proponuję usunąć wszystkie tabele prefix_* (unikniemy w ten sposób błędów, iż nie można utworzyć tabeli, a ponieważ tabele będą już zawierały dane, stąd może dojść do zdublowania informacji).

      Na wszelki wypadek możesz wykonać aktualną kopię. * No to zaczynamy: "Rozpocznij wgrywanie" * Czekamy... i sprawdzamy czy wszystko ok jest z forum (przy tej metodzie nie spotkałem się aby wykonany i wgrany dump nie działał bądź były z nim jakieś problemy z kodowaniem polskich liter) * UWAGA: w szczególnych przypadkach kopia ta może odtworzyć się z błędami (w efekcie nie będziemy mieli odtworzonych kilku tabel) - sprawdźmy to w zakładce "Sprawdzenie bazy" w dbloaderze. Jeśli tak, wykonaj punkt poniższy wykorzystując do przywrócenia phpMyAdmina.

    3. Przy pomocy phpMyAdmina (kopia została wykonana przy użyciu wbudowanej w forum "Kopii zapasowej") (opis w oparciu o phpMyAdmin 2.8.x i 2.9.x)WARUNEK konieczny do prawidłowego odtworzenia polskich znaków: • W starej bazie, w widoku struktury tabel widoczny był napis: "Metoda porównywania napisów" i wartość: "latin1_swedish_ci" * Wybieramy w phpMyAdminie naszą bazę. * Na górze w ramce po prawej stronie wybieramy Import (interesuje nas na stronie tylko ramka: "Plik do importu") * Klikamy "Przeglądaj" i wskazujemy nasz plik z kopią * Najważniejsze: z rozwijanej listy: "Zestaw znaków dla pliku" wybieramy ISO-8859-1 * Przypomnę, że nie ruszamy zawartości pozostałych ramek - mają one zostać domyślne * Klikamy "Wykonaj" UWAGA: jeśli otworzy Ci się biała strona, to oznacza iż plik z bazą jest za duży. Co zrobić w takim wypadku opisuje inny temat w FAQ.

  1. Jakie poprawki wprowadzić do modułu kopii zapasowej, aby w 100% odtworzyć bazę (dot. tylko phpBB by Przemo w wersji 1.12.5) Co prawda temat ten został już przeze mnie opisany w dziale "Mod. Gotowe [ 1.12.5 ]" i temacie Ilość przechowywanych kopii, ale jest on na tyle ważny i związany z tematem, że postanowiłem go powielić.

    1. Problem objawia się przy odtwarzaniu bazy przy pomocy dumploadera. Najczęściej pasek postępu z kilkunastu (kilkudziesięciu) procent (w zależności od rozmiaru bazy danych), od razu przeskakuje do 100% i stwierdza, że baza została odzyskana prawidłowo. Niestety, ale w efekcie błędu, nie zostają odzyskane tabele phpbb_posts_text oraz następne. Następuje również błędne informowanie o "sukcesie" operacji. Dodatkowo zostały usunięte następujące błędy i niedogodności:
    2. usunięte zostały 4 błędy przy wykonywaniu backupu (w tym związany z (nie)usuwaniem starych kopii),
    3. wykonywanie kopii (jeśli serwer obsługuje kompresję gzip), powinno znacznie mniej obciążać serwer oraz potrzebna jest kilkanaście razy mniejsza ilość wolnego miejsca na serwerze do wykonania kopii,
    4. ręczne wykonanie kopii zapasowej z poziomu PA tworzy dodatkową kopię (to, co jest wpisane jako ilość maksymalna kopii + 1) - uznałem, że administrator jeśli wykonuje kopię ręcznie, to nie powinno to kasować poprzednich kopii. Plik z poprawkami (2 pliki) dostępny jest w temacie Ilość przechowywanych kopii. Podkreślę jednak, że jest to poprawka do modułu wykonującego kopie zapasowe. Oznacza to, że kopie wykonane po zastosowaniu poprawki powinny się prawidłowo odtworzyć.

Powyższy opis (punkty 1 i 2) może nie działać, jeśli konfiguracja serwera SQL jest "egzotyczna". INFORMACJA od autora: Straciłem kilka godzin na uporządkowanie tego tematu. Zostawiłem tylko wiadomości, które pomogły lub jest bardzo prawdopodobne, iż mogą pomóc. I taki charakter tego tematu chciałbym zachować. A jeśli znalazłeś inny sposób aby z sukcesem przenieść bazę w przypadku problemów z kodowaniem, opisz tutaj go dokładnie. PROSZĘ nie pisać tutaj wiadomości typu: mam "krzaczki", kto mi przeniesie bazę itp. Do takich pytań jest specjalny temat w dziale Ogólnym: Dyskusja nt. braku polskich liter na forum. Dziękuję za zrozumienie. //Historia edycji: 08-10-2006: dodany opis odtworzenia bazy w phpMyAdmine (jeśli kopia wykonana została przez forum). 08-10-2006: uporządkowanie treści i pogrupowanie podtematów, aby struktura była bardziej przejrzysta. 16-11-2007: dodanie opisu poprawki dla modułu kopii zapasowej (pkt. 3)



Napisz Artyku³

Listing

niema




Dodano przez: sheppard Ranga: Poziom 4 Punktów: 99
Komentarze użytkowników
    • Tre¶æ komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2024 v.1.5 | design: diviXdesign & rainbowcolors