Zamienię przekonwertować wszystkie tabele bazy danych 500 MB z MyISAM na InnoDB, aby zobaczyć, czy poprawi to ogólną wydajność zajętej witryny Drupal 6. Zastanawiam się, jaki jest najlepszy (tj. Najbezpieczniejszy / najłatwiejszy / najszybszy) sposób wykonania konwersji.
9
Odpowiedzi:
Jako MySQL DBA ufam, że MySQL wykona konwersję, ponieważ MySQL napisze dla mnie skrypt.
Z poziomu polecenia Linux uruchom tę kwerendę
Skrypt najpierw skonwertuje najmniejsze tabele. Ten skrypt pominął także wszystkie tabele MyISAM, które mają indeksy FULLTEXT.
Po obejrzeniu skryptu możesz po prostu uruchomić go w MySQL w następujący sposób:
lub jeśli chcesz zobaczyć czas każdej konwersji, zaloguj się do mysql i uruchom to:
Nie należy tego pomieszać, ponieważ podczas wykonywania konwersji dochodzi do pełnej blokady tabeli.
Po przekonwertowaniu wszystkich tabel musisz dostroić ustawienia MySQL do użycia InnoDB i przeskalować key_buffer.
Przeczytaj to, aby ustawić pulę buforów InnoDB: /dba/1/what-are-the-main-differences-between-innodb-and-myisam/2194#2194
Przeczytaj również: /drupal/1715/what-would-the-optimal-mysql-configuration-for-a-drupal-7-site-be/2367#2367
Spróbuj !!!
źródło
Jakiś czas temu napisałem dla niego drush.
Pracowałem dla mnie mniej więcej rok temu, nie jestem pewien, czy interfejs API drush zmienił się od tego czasu.
Możesz umieścić to w pliku convert.drush.inc, na przykład w folderze .drush, lub wykonać jakoś na swojej stronie, na przykład za pomocą devel execute block php. Jako skrypt drush, możesz nazwać to tak:
Ostrzeżenie : jeśli ktoś zrobi coś z bazą danych podczas działania tych poleceń, baza danych zostanie całkowicie pomieszana. Nie do odzyskania. Przed przejściem do tej czynności przejdź do trybu konserwacji i wykonaj kopię zapasową! I oczywiście najpierw wypróbuj stronę deweloperską / testową :)
źródło