Aktualizacja MySQL 5.5 do MySQL 5.6 na Ubuntu 14.04 LTS


17

Zainstalowałem LAMPĘ za pomocą następujących poleceń:

sudo apt-get update
sudo apt-get install apache2 apache2-suexec mysql-server php5-mysql
sudo mysql_secure_installation
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
sudo apt-get install phpmyadmin

To było prawie rok temu. Teraz w PHPMyAdmin widzę:

Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.5.43-0ubuntu0.14.04.1 - (Ubuntu)
Protocol version: 10
Web server
Apache/2.4.7 (Ubuntu)
Database client version: libmysql - 5.5.43
PHP extension: mysqli Documentation

Wersja MySQL to 5.5.43-0ubuntu0.14.04.1 . W jaki sposób można bezpiecznie zainstalować i używać mysql 5.6.4+ jak muszę korzystać FULLTEXTz INNODB. Widzę pakiety w repozytorium Ubuntu, ale naprawdę powinienem unikać wszelkich konfliktów lub problemów z instalacją.

Dziękuję za wszelką pomoc.

Odpowiedzi:


22

Jak mogę bezpiecznie bezpiecznie zainstalować

To zawsze będzie trudne.

Zanim cokolwiek zrobisz, przeczytaj stronę kompatybilności 5.5 / 5.6 . Pamiętaj 1 dużą różnicę między 2:

Począwszy od MySQL 5.6.6, kilka parametrów serwera MySQL ma wartości domyślne, które różnią się od poprzednich wersji. Motywacją dla tych zmian jest zapewnienie lepszej wydajności po wyjęciu z pudełka i ograniczenie konieczności ręcznej zmiany ustawień przez administratora bazy danych. Zmiany te mogą ulec zmianie w przyszłych wydaniach w miarę uzyskiwania informacji zwrotnych.

Jedną z dużych zmian jest to, że 5.5 używa 1 dużego pliku jako dziennika transakcji, a 5.6 używa kilku:

Dlatego, jeśli aktualizujesz istniejącą instalację MySQL, nie zmieniłeś już wartości tych parametrów z ich poprzednich wartości domyślnych, a problemem jest kompatybilność wsteczna, możesz jawnie ustawić te parametry na ich poprzednie wartości domyślne. Na przykład umieść te linie w pliku opcji serwera:

 [mysqld] 
 innodb_file_per_table=0 
 innodb_checksum_algorithm=INNODB
 binlog_checksum=NONE

Jeśli używasz replikacji, zwróć uwagę na tę część łącza:

Aby zaktualizować serwery używane do replikacji, najpierw zaktualizuj slave, a następnie master. Replikacja między urządzeniem nadrzędnym a jego urządzeniami podrzędnymi powinna działać, pod warunkiem że wszystkie używają tej samej wartości wartość_ jawnego_default_do_czasu:

Zlikwiduj niewolników, zaktualizuj je, skonfiguruj za pomocą pożądanej wartości wartość_ jawnego_default_do_czasu i przywróć.

Slave rozpoznaje po formacie dzienników binarnych otrzymanych od wzorca, że ​​wzorzec jest starszy (przed wprowadzeniem jawnego_defaults_for_timestamp) i że operacje na kolumnach TIMESTAMP pochodzących od wzorca używają starego zachowania TIMESTAMP.

Zlikwiduj wzorzec, zaktualizuj go i skonfiguruj przy użyciu tej samej jawnej_defaults_for_testestamp wartości użytej w urządzeniach slave i przywróć go ponownie.

Jeśli jest to serwer produkcyjny, radziłbym najpierw spróbować tego na maszynie testującej. Mieliśmy dość trudne przejście z wersji 5.5 do 5.6 i zdecydowaliśmy się zainstalować kolejną maszynę, która została zainstalowana z wersją 5.6 i użyć mysldump do tworzenia kopii zapasowych i ładowania ich do naszych baz danych na tym komputerze. Pamiętaj jednak, że zajmie to dużo czasu, jeśli masz dużą bazę danych (ze względu na odtwarzanie plików transakcji innodb).

Ogólna metoda:

  • użyj mysqldump do tworzenia kopii zapasowych bazy danych (użytkowników, struktury ścieżki i danych tabeli) oraz pliku konfiguracyjnego (prawdopodobnie /etc/mysql/my.cnf)
  • Usuń 5.5. Po usunięciu 5.5 sprawdź, czy pliki transakcji innodb zniknęły (ibdata1, ib_logfile0 i ib_logfile1). Ponieważ 5.6 korzysta z lepszej wersji transakcji, zakładam, że również z tego skorzystasz ...
  • Zainstaluj 5.6
  • Zmień nowy plik konfiguracyjny i dodaj to, co zmieniłeś dla wersji 5.5 (zapoznaj się z powyższym linkiem i sprawdź, czy którakolwiek ze zmian stała się nieprawidłowa).
  • Prześlij kopię zapasową do 5.6 (najpierw użytkownicy). Pamiętaj, że może to zająć trochę czasu, ponieważ odtworzy nowe pliki transakcji.

W poleceniach (po utworzeniu kopii zapasowej):

sudo apt-get remove mysql-server
sudo apt-get autoremove
sudo apt-get install mysql-client-5.6 mysql-client-core-5.6
sudo apt-get install mysql-server-5.6

2
Dla twojej informacji, najpierw zrobiłem kopię zapasową, a następnie pomyślnie zainstalowałem ją za pomocą tego polecenia:sudo apt-get remove mysql-server;sudo apt-get autoremove;sudo apt-get install mysql-client-5.6 mysql-client-core-5.6;sudo apt-get install mysql-server-5.6
YahyaE

2
Wygląda dobrze tak: D Gratz! Tam go edytowałem ;-)
Rinzwind

Czy ta procedura usuwa bazy danych na tym serwerze?
Please_Dont_Bully_Me_SO_Lords

@EASI Nie, ale pytanie jest ... złe. Podczas aktualizacji mysql musisz utworzyć kopię zapasową i przywrócić ją, aby skanować mysql w poszukiwaniu przestarzałych funkcji / parametrów / opcji / ustawień.
Rinzwind
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.