Baza danych ma rozmiar 500 GB. Tabele w bazie danych A zawierają zarówno tabele MyISAM, jak i INNODB. Tabele MyISAM to tabele główne, a tabele Innodb to główne tabele transakcji.
Tworzenie kopii zapasowych i przywracanie przy użyciu zrzutu mysql zajmuje dużo czasu lub dni.
- max_allowed_packet = 1G
- Foreign_key_checks = 0
- auto_commit = wyłączone
Odpowiedzi:
Ale link zaleca również XtraBackup z Percona, który jest szybszy, nie blokuje już używanych tabel i nie ma czasu na przywrócenie. W przypadku 500 GB danych wolę, aby Percona XtraBackup była szybka i wydajna, chyba że chcesz je przekonwertować na model plik_pliku_pert_błędu, jeśli nie byłby to istniejący serwer DB. Poniższy link wyjaśnia, jak postępować.
http://www.percona.com/doc/percona-xtrabackup/innobackupex/creating_a_backup_ibk.html
źródło
Sprawdź mydumper. Jest o wiele szybszy niż mysqldump: Nowa wersja mydumper 0.6.1 oferuje funkcje wydajności i użyteczności
Możesz pobrać stąd: https://github.com/maxbube/mydumper
źródło
Wydaje mi się, że pytanie dotyczy tego, jak szybciej przywracać z plików zrzutu pamięci podręcznej mysqldump, a nie innego rozwiązania do tworzenia kopii zapasowych.
Jednym ze sposobów, w jaki można to zrobić, jest utworzenie grup tabel w schemacie i utworzenie osobnego użytkownika DB dla każdej grupy oraz użycie uprawnień MySQL, aby nie zezwalać na wstawianie tabel przy użyciu wszystkich użytkowników DB oprócz jednego.
Jest to sprawdzona, szybka, prawie równoległa technika, ale nie w 100% pewna, ile czasu zajmie przywrócenie z 500G. Ale imho, potrzebujesz czegoś równoległego. Zobacz poniższy link dla przykładu.
Szybkie, równoległe przywracanie ze zrzutów SQL (mysqldump) dla MySQL
źródło
Wypróbuj następujące rozwiązania z innobackupex:
Możesz zmienić równoległy numer procesu, jak chcesz. Ponieważ wspomniałeś, że masz tabele myisam, parametr „rsync” pomoże przyspieszyć ich tworzenie.
źródło