Używam repliki odczytu AWS RDS. Ciągle ma problemy ze stołami silnika pamięci Magento. Do tworzenia kopii zapasowych i odczytu replik RDS uwielbia InnoDB. Czy mogę bezpiecznie zmienić wszystkie tabele na InnoDB?
Ponadto otrzymuję następujące ostrzeżenie z AWS:
Instancja DB magento-monin-prod-db zawiera tabele MyISAM, które nie zostały zmigrowane do InnoDB. Te tabele mogą mieć wpływ na twoją zdolność do przywracania punktu w czasie. Rozważ konwersję tych tabel do InnoDB. Proszę zapoznać się z http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Appendix.MySQL.CommonDBATasks.html#MySQL.CommonDBATasks.Tables
Możliwa odpowiedź
Nadal jestem zainteresowany opiniami. Dodam to jako odpowiedź, jeśli nie znajdę żadnych problemów w ciągu najbliższych 24 godzin. Dotychczasowe kroki, które podjąłem, wydają się być bezpieczne. Moją największą troską były tabele Magento Memory Engine (tabele kończące się na in_tmp) i wpływ, jaki może mieć na indeksowanie.
Oto co zrobiłem:
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE (ENGINE = 'Memory' OR ENGINE='MyIsam') AND TABLE_SCHEMA='magento_db'
- Dla mnie zwróciło to głównie tymczasowe tabele indeksu i tabele modułów magento, więc nie ma zbyt wielu krytycznych tabel rdzenia, o które należy się martwić, i mało tabel, które mogę łatwo wykonać inną tabelę zmian, jeśli coś trafi w wentylator.
Dla każdej zwróconej tabeli wykonałem:
Alter table {table-name} ENGINE=InnoDB;
Byłbym zdenerwowany, aby spróbować, jeśli żaden z twoich stołów nie jest InnoDB. Ale, jak powiedziałem wcześniej, w mojej instancji było tylko kilka podstawowych tabel, które wymagały modyfikacji.
Odpowiedzi:
Można zmienić typ danych na InnoDB, zakładając, że spełniony jest jeden z następujących warunków:
Osobiście polecam to zrobić za pomocą Magento DB Repair Tool, aby zminimalizować ryzyko, a także sprawdzić, czy nie występują inne odchylenia w konfiguracji DB lub problemy. InnoDB jest idealnym silnikiem, pomimo ograniczeń pełnotekstowych .
źródło
Afaik, nie powinieneś konwertować wszystkich tabel na InnoDB.
catalogsearch_fulltext
powinien pozostać MyISAM, ponieważ InnoDB nie obsługuje wyszukiwania pełnotekstowego, przynajmniej dopóki MySQL 5.6 (iirc).Jednak w przypadku wszystkich innych tabel powinno to być bezpieczne.
źródło
Właśnie zmieniłem domyślny silnik MySQL na InnoDB i większość moich tabel Magento w cudowny sposób przekształciło się w InnoDB (niektóre nadal są MyISAM, a niektóre Memory).
Pomyślałem, że podzielę się tym ...
źródło