Utwórz kopię zapasową serwera MySQL

13

Jaki jest najlepszy sposób na wykonanie kopii zapasowej serwera MySQL? Chciałbym metody, która nie wymaga wyłączania serwera. Czy jest coś takiego jak niezbędna kopia zapasowa InnoDB , czy mogę po prostu użyć narzędzi do tworzenia kopii zapasowych zawartych w narzędziach MySQL Administrator. Jakie zalety oferuje jedna nad drugą?

Kibee
źródło

Odpowiedzi:

12

Używamy mysqldump, który działa podczas działania MySQL. Zaczęliśmy używać mysqldump, ponieważ był najłatwiejszy do skonfigurowania, gdy nasze potrzeby były małe i wydawało się, że spełnia te potrzeby. Nasze bazy danych wzrosły od tego czasu, ale nie przerośliśmy jeszcze mysqldump. To, czy będzie Ci odpowiadać, będzie zależeć od wielkości twoich baz danych, ich zwykłego obciążenia operacyjnego i prawdopodobnie szeregu innych rzeczy.

TimB
źródło
mysqldump jest świetny. W przeciwieństwie do zrzutów binarnych niektórych innych RDMS, domyślnie pliki generowane przez mysqldump są plikami tekstowymi z pełnoprawnymi poleceniami sql - głównie instrukcji CREATE TABLE i INSERT dla wierszy. Jako proste pliki tekstowe można je łatwo modyfikować, kompresować lub szyfrować.
nedm
3
mysqldump psuje się, gdy masz duże bazy danych i / lub polegasz na MyISAM. Mamy około 400G baz danych z wieloma indeksami, które należy odbudować podczas importowania zrzutu, aby odzyskiwanie z kopii zapasowej trwało kilka dni. Migawka LVM zapewnia znacznie lepszy czas odzyskiwania po przerośnięciu mysqldump.
Nils-Anders Nøttseter
4

spójrz na xtrabackup z Percona - to interesująca alternatywa open source dla mysqlhotcopy dla baz danych innodb.

możesz przeczytać więcej na ten temat tutaj

pQd
źródło
3

mysqldump może być używany, ale nie gwarantuje spójnego zestawu danych, chyba że zablokujesz wszystkie tabele na czas zrzutu. Spowoduje to przejście bazy danych w tryb tylko do odczytu , ale zapewni spójność zrzutu.

Możesz zablokować tabele za pomocą polecenia:

FLUSH TABLES WITH READ LOCK;

Po zakończeniu możesz zwolnić blokadę za pomocą:

UNLOCK TABLES;
Brent
źródło
7
mysqldump - jedna transakcja zapewni spójną migawkę
Dave Cheney
5
- pojedyncza transakcja działa tylko wtedy, gdy wszystkie tabele mają format InnoDB. Tabele MyISAM nie obsługują transakcji.
Nils-Anders Nøttseter
2

Skonfiguruj replikację MySQL . Jako bonus otrzymujesz serwer do wykonywania ciężkich zadań raportowania i mysqldump bez wpływu na główny db bazy danych.

Dave Cheney
źródło
Pamiętaj, że replikacja może być opóźniona, więc niekoniecznie musi być tworzona kopia zapasowa twojego wzorca.
2
Replikacja nie jest kopią zapasową. Jeśli przypadkowo usuniesz coś w Master, Slave usunie to również. Slave dobrze jest jednak używać na mysqldump, ponieważ nie wpłynie to na twój serwer produkcyjny (jak wspomniał Dave).
Martijn Heemels,
0

Najłatwiej jest po prostu użyć polecenia mysqldump .

WerkkreW
źródło
0

Jest też narzędzie o nazwie mysqlhotcopy, na które spojrzałem od razu i pomyślałem, że jest bardzo obiecujące - jednak nigdy go nie użyłem.

Brent
źródło