Jak mogę wykonać kopię zapasową baz danych zawierających wiele gigabajtów w MySQL? Punkty bonusowe za szybsze przywracanie

11

Mam bazę danych 4 GB w MySQL. Jak mogę to zrobić? Ponadto, czy istnieje sposób, aby przyspieszyć proces przywracania w przypadku, gdy muszę odzyskać?

Obecnie każdej nocy używam zadania crona, które wzywa mysqldumpdo zrzucenia wszystkiego i przechowuję 3 dni kopii zapasowych.

nicudotro
źródło

Odpowiedzi:

14

Mamy około 90 GB w MySQL, więc oto kilka sugestii:

  • Możesz wypróbować następujące połączenie: mysqldump -u USER -pPASS --single-transaction -Q --databases foo bar(Użyj dokumentów, aby sprawdzić, czy te przełączniki działają dla Ciebie).
  • Jeśli używasz tylko tabel MYISAM, kopiowanie bazy danych na inny dysk i tarowanie jej również może być alternatywą. Nie będzie to jednak działać z INNODB, ponieważ przechowuje dodatkowy plik. Musisz też to dokładnie przetestować.
  • Włącz dzienniki binarne i wykonaj ich kopię zapasową. (To chyba moja ulubiona!)
  • Skonfiguruj replikację i wykonaj kopię zapasową na jednym ze swoich urządzeń podrzędnych, a następnie pozwól mu dogonić resztę. Jest całkiem fajny, gdy działa, ale problemem jest to, że działa. Replikacja nie jest przyjemnością z MySQL. :(
  • Czy twój system plików obsługuje migawki? Jeśli tak, to jest to świetna okazja do ich wykorzystania.
  • Użyj komercyjnego rozwiązania, takiego jak Amanda .
Do
źródło
10

Najlepszym sposobem byłoby bez zakłócania normalnej pracy. W przypadku systemów o wysokiej niezawodności i odporności na uszkodzenia masz 2 bazy danych, które są zsynchronizowane, i tworzysz kopię zapasową pomocniczej. (np. ten artykuł howtoforge )

W przeciwnym razie przeczytaj instrukcję : użyj myseldump tak jak obecnie lub użyj skryptu mysqlhotcopy (użyj podobnie jak mysqldump) lub zatrzymaj DB i po prostu skopiuj pliki frm, MID, MYI (używając rsync).

Myślę, że mechanizm stop + kopiuj pliki jest najszybszy, jaki możesz uzyskać.

gbjbaanb
źródło
3

Jeśli niektóre z twoich baz danych są tylko do odczytu lub zmodyfikowane, rzadko wyróżniają je jako rzadsze cron.

JJ
źródło
2

Aby odpowiedzieć na twoje pytanie - opcja Extended_insert działa dla mnie dobrze. Jeśli masz wystarczającą ilość zasobów do odtworzenia, Extended_insert wstawi ogromne porcje danych w jednym zapytaniu, dzięki czemu przywracanie będzie szybsze.


źródło
1

Naprawdę powinieneś rozważyć Xtrabackup Percony

Skrypt opakowania „innobackupex” może obsługiwać MyISAM, ale w przypadku nieblokującej / online kopii zapasowej wszystkie tabele powinny mieć format InnoDB.

Twoje zdrowie

HTTP500
źródło