Dla Jenna

 
Napisz nowy temat   Odpowiedz do tematu    Forum Błękitna Gildia Strona Główna -> Luźne tematy
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Emil
Błękitny
Błękitny


Dołączył: 06 Lip 2005
Posty: 2288
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Wrocław
Płeć: Facet

PostWysłany: Wto 23:30, 03 Lip 2007    Temat postu: Dla Jenna

ZANIM napiszesz w tym temacie następny post, przeczytaj dokładnie WSZYSTKO co poniżej napisałem.


Poniższy post podzielony jest na 2 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.

Jeśli przenosisz bazę danych pomiędzy serwerami, przeczytaj również temat w FAQ: Jak przenieść bazę forum z serwera na serwer.


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 Exclamation )
Dodanie opcji MYSQL40 zapobiega dopisywaniu
Kod:
DEFAULT CHARSET=latin1 AUTO_INCREMENT=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..." Exclamation )
* 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';

* 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"

3. 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.

4. 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.



Powyższy opis może nie działać, jeśli konfiguracja serwera SQL jest "egzotyczna". Wówczas takie sytuacje rozwiązuję indywidualnie.
EDIT: z związku z brakiem czasu, nie podejmę się przeniesienia forum - nie ma sesnu, abyś do mnie pisał(a), bo jest to moja ostateczna decyzja.

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 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.
Powrót do góry
Zobacz profil autora
Emil
Błękitny
Błękitny


Dołączył: 06 Lip 2005
Posty: 2288
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Wrocław
Płeć: Facet

PostWysłany: Wto 23:35, 03 Lip 2007    Temat postu:

Napisałem fajnego moda, który służy do zmiany kodowania bazy danych poprzez forum Smile Czyli nie musimy się babrać w bazie danych. Wystarczy skopiować do forum jeden plik, wybrać kodowanie i chwilkę poczekać Smile

Mod współpracuje tylko z wersją 1.12.5
Testowałem go na tym forum, przekonwertował w 1,5 godz.
Konwerter po prostu przelatuje przez wszystkie pola tekstowe we wszystkich tabelach i jeśli wykryje podane wejściowe kodowanie zmienia zawartość wpisu na podane kodowanie wyjściowe.
Na razie obsługuje formaty:
iso-8859-2
windows-1250
utf-8
ascii-iso-8859-2
ascii-windows-1250
Jeżeli ktoś ma jeszcze inne kodowanie bazy to musi zebrać zestaw polskich znaków w tym kodowaniu i w odpowiedniej kolejności wstawić je do jakiegoś klucza w tablicy $charset

Jak na twoim forum polskie znaki są wyświetlane nieprawidłowo to ten skrypt możesz użyć tylko wtedy jeśli nowo pisane posty mają już poprawne kodowanie !
Aby nowe posty miały poprawne kodowanie należy zmienić kodowanie wszystkich pól w tabelach które mają podane jakieś kodowanie (są to pola tekstowe) na początek można testować na samych treściach postów (ale po każdej zmianie trzeba napisać nowy post) w bazie tabela phpbb_posts_text i pole post_text jeżeli nie da sie zmienić nalezy napisać do admina! Forum ma kodowanie iso-8859-2 co odpowiada w bazie polom z kodowaniem latin2_general_ci

Jak ktoś przekonwertował poprawnie baze niech tu napisze.
Jak ktoś w bazie danych (nie na forum) ma zamiast polskich znaków znaki zapytania ? to niestety nic już nie zrobi, za późno.
Jak ktoś przekonwertuje baze i kodowanie nie będzie prawidłowe niech wrzuci kopię bazy danych bo inaczej z tą bazą może się już nic nie zrobić.
Plik z załącznika rozpakowujemy i wrzucamy do katalogu /scripts/ po czym na niego wchodzimy, wybieramy kodowanie i startujemy, na końcu jeżeli wynik jest pozytywny trzeba odbudować search.

Skrypt jest przeznaczony dla osób z podstawową wiedzą na temat technologi www oraz kodowania znaków.

Można to użyć w sytuacji gdy kiedyś mieliśmy problem z kodowaniem lecz nie robiliśmy nic a nowonapisane tematy miały już poprawne kodowanie. Skrypt przekonwertuje tylko dane, które są w innym (wybranym) kodowaniu.

Niestety problemy z kodowaniem baz danych są okropne i trzeba mnóstwo cierpliwości jak ktoś się na tym dobrze nie zna.

Mile widziana wypowiedź osoby która zna się na tym dobrze bo ja mam tylko podstawową wiedzę na ten temat.
Powrót do góry
Zobacz profil autora
Emil
Błękitny
Błękitny


Dołączył: 06 Lip 2005
Posty: 2288
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Wrocław
Płeć: Facet

PostWysłany: Śro 0:13, 04 Lip 2007    Temat postu:

Wszystko ręcznie wklepywane (phpMyAdmin -> Bazy danych -> "twoja_baza" -> SQL (zakładka)):

Mój przepis wygląda tak:
1) Wykonać zrzut bazy z poziomu Forum (plik bazy znajduje się w /db/db_backup/, system kodowania bazy Windows-1250)
2) W nowej bazie ustawić w phpMyAdmin:
- język: Polish (pl-utf-Cool
- system porównań dla połączenia MySQL: utf8_general_ci
3) Wklepać przez phpMyAdmin ze zrzutu bazy wszystkie CREATE TABLE do nowej bazy
4) Zmienić w phpMyAdmin (nowej bazy) wszystkie tabele na utf8_general_ci
5) Otworzyć zrzut bazy przez program EdHTML v5.0, zmienić system kodowania na ISO 8859-2 (Dokument -> System kodowania) i zapisać (pojawią się polskie znaki ę,ó,ą,ś,ł,ż,ź,ć,ń).
6) Teraz trzeba zmienić system kodowania zmodyfikowanej bazy z ISO 8859-2 na Unicode. W moim przypadku bazę edytowałem programem Programmer's Notepad 2 v0.6.1 (Find -> Replace -> Find watchZnajdź Replace withZamień z i kliknąć Replace All(Zamień wszystko)). Gdyż windowsowski notatnik jak i ten EdHTML nie odróżniał wielkich od małych liter. Czyli gdy dajesz żeby Ci zmienił np. znak Ł na &#321 (powinien być jeszcze średnik na końcu, ale po dodaniu ten kod zmienia się w Ł) to zmieniał wszystkie Ł i ł na &#321
7) Wklepać teraz wszystkie INSERT INTO do nowej bazy


Ale pomimo tego co zrobiłem mam pytanie. Czy podzielenie zrzutu bazy na dwie części daje coś w dbloaderze?

Pierwsza część od [CREATE TABLE phpbb_admin_notes] do pierwszego średnika przed [CREATE TABLE phpbb_posts_text_history].
Druga część od [CREATE TABLE phpbb_posts_text_history] i do samego końca.
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Błękitna Gildia Strona Główna -> Luźne tematy Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach


Bluetab template design by FF8Jake of FFD
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
Regulamin