exa 0 Zgłoś post Napisano Grudzień 28, 2008 no to chciałbym zapytać czy jest jakiś sposób na robienie kopii "przyrostowej" baz danych ? nie Tak. Replikacja bazy danych jest w pewnym sensie kopią przyrostową, tyle, że musi być skonfigurowana na przynajmniej dwóch maszynach. Zawsze też można kopiować też logi binarne. Nie ukrywam, że niektóre wasze wypowiedzi zmieniły mój "światopogląd", choć trochę się dziwie (ale znowu nie podważam), bo już kilka razy przywracałem tak bazę i nie miałem problemów... Miałeś szczęście. Nie wiem co w tym dziwnego, wyobraź sobie, że robisz rsynciem kopię z /var/lib/mysql przy włączonym serwerze MySQL. Bazy powiedzmy mają po kilkaset MB. W momencie, kiedy rusza rsync mysql zaczyna zapisywać zmiany do pliku. I co wtedy? Nie można kopiować /var/lib/mysql przy włączonym serwerze MySQL. W ten sposób możecie sobie kopiować logi binarne. log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 max_binlog_size = 50M Jeżeli ktoś ma 2 maszyny to niech zainteresuje się zagadnieniem replikacji bazy danych. Jest to stosunkowo łatwa operacja, przez google można znaleźć sporo tutoriali, w manualu jest opisany cały scenariusz przykładowej replikacji (też do wygooglowania). Udostępnij ten post Link to postu Udostępnij na innych stronach
is_wm 287 Zgłoś post Napisano Grudzień 28, 2008 Po prostu wywalasz opcje autoryzacji, bo client i tak Cię połączy według danych ~/.my.cnf. Wielkie dzięki, działa W momencie, kiedy rusza rsync mysql zaczyna zapisywać zmiany do pliku. I co wtedy? Rsync wywala błąd? Coś na wzór "file has vanished". Udostępnij ten post Link to postu Udostępnij na innych stronach
BlueMan 69 Zgłoś post Napisano Grudzień 28, 2008 Miałeś szczęście. Nie wiem co w tym dziwnego, wyobraź sobie, że robisz rsynciem kopię z /var/lib/mysql przy włączonym serwerze MySQL. Bazy powiedzmy mają po kilkaset MB. W momencie, kiedy rusza rsync mysql zaczyna zapisywać zmiany do pliku. I co wtedy? Nie można kopiować /var/lib/mysql przy włączonym serwerze MySQL. W ten sposób możecie sobie kopiować logi binarne. Czyli w moim przypadku: rsync $OPTIONS "$OPTIONSE" /var/lib/mysql/ $SERVER:$DEST/mysql_source/ także najpierw powinienem zastopować serwer mysql, zrobić ten rync, a potem go uruchomić? Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość patrick Zgłoś post Napisano Grudzień 28, 2008 by dajny były spójne tak, ciężko to zrobić jeżeli mysql wykonuje odczyt/zapis. Udostępnij ten post Link to postu Udostępnij na innych stronach
is_wm 287 Zgłoś post Napisano Grudzień 28, 2008 No i właśnie... mysqldump: Got error: 1146: Table 'cybe..._sklep.cennikCategoriesMap' doesn't exist when using LOCK TABLES Na tym skrypt kończy działanie - dalsze bazy nie są dumpowane. Dlatego zacząłem robic rsync zamiast dumpa Edit: czy opcja --force ma tutaj takie zastosowanie, że pójdzie dalej mimo błędów? Udostępnij ten post Link to postu Udostępnij na innych stronach
Gość patrick Zgłoś post Napisano Grudzień 28, 2008 --skip-lock-tables ? Udostępnij ten post Link to postu Udostępnij na innych stronach
is_wm 287 Zgłoś post Napisano Grudzień 28, 2008 -- force działa (dump idzie dalej mimo błędów) Udostępnij ten post Link to postu Udostępnij na innych stronach
Art_ 0 Zgłoś post Napisano Grudzień 28, 2008 to chciałbym jeszcze zapytać .. po 1. czy jeśli ustawię replikację to co się stanie jesli na serwerze "master" zmieni się struktura tabel ? tj. np. replikuje wszystkie bazy na serwerze, w pewnym momencie kasuje jedną baze, bądź jedna tabele, co wtedy się dzieje na drugim serwerze ? po 2. "Zawsze też można kopiować też logi binarne." w jaki sposób ? tj.. jak to zautomatyzować aby nic się nie zgubiło i nie trzeba było kopiować niepotrzebnych danych ? Udostępnij ten post Link to postu Udostępnij na innych stronach
exa 0 Zgłoś post Napisano Grudzień 28, 2008 po 1. czy jeśli ustawię replikację to co się stanie jesli na serwerze "master" zmieni się struktura tabel ?tj. np. replikuje wszystkie bazy na serwerze, w pewnym momencie kasuje jedną baze, bądź jedna tabele, co wtedy się dzieje na drugim serwerze ? Replikacja polega nie na kopiowaniu plików bazy danych a na wykonywaniu na zreplikowanym serwerze tych samych poleceń SQL. Jeżeli na serwerze master wykonasz ALTER TABLE i zmodyfikujesz strukturę tabeli albo ją usuniesz ta sama komenda wykona się na wszystkich serwerach slave. po 2. "Zawsze też można kopiować też logi binarne." w jaki sposób ? tj.. jak to zautomatyzować aby nic się nie zgubiło i nie trzeba było kopiować niepotrzebnych danych ? Dlaczego tak można? Bo log binarny to zwykły plik dopisywany zawsze na końcu - jeżeli będzie zapisywany podczas odczytu w najgorszym wypadku nie zostanie skopiowana ostatnia instrukcja (zostanie gdzieś "urwana"). Żeby kopiować bezpieczne log binarny trzeba poczytać na jakiej zasadzie jest "zwijany" po przekroczeniu ustalonego limitu. Właśnie zerknąłem do /var/log/mysql i mysql-bin.000001 jest sprzed ponad miesiąca, a sama maszyna stoi już ponad rok, więc jak widać numerowanie plików jest w jakiś sposób "resetowany" (.000001 to najstarszy plik). Nigdy tego nie stosowałem, ale pomysł na kopiowanie logów binarnych jest do wykonania. Kopiować można rsynciem a na maszynie docelowej jakiś proces może dodawać dane z kolejnych logów binarnych do bazy danych (jest taki program w paczce z mysql - mysqlbinlog?). Chociaż z drugiej strony mógłby być problem z oznaczaniem ostatniej wykonanej instrukcji z logu, żeby przy kolejnym cyklu jej nie powtórzyć. Generalnie to lepiej użyć replikacji Udostępnij ten post Link to postu Udostępnij na innych stronach