Aktualizacja bazy danych MySQL 5.0 oraz 5.1 do wersji 5.5

Opiszę aktualizację serwera bazy danych MySQL z wersji 5.0, 5.1 do wersji 5.5. Niestety przy aktualizacji mogą wystąpić problemy i niektóre tabele otrzymają przedrostek #mysql50# np. `#mysql50#tablename` i inne dziwy… Opiszę ttuaj najbardziej łopatologicnzie jak wykonać taka aktualizację na Windowsie, na linuxie należy postępować analogicznie. Poniższy opis jest dla tych osób, które nie korzystają z instalatora lecz może im być przydatny fragment dotyczący mysql_upgrade. Aktualizując z wersji 5.0 najpierw zaktualizuj do wersji 5.1

  1. Zrób backup aktualnego serwera MySQL i wszystkich plików (katalogi bin, data oraz share jak i plik my.ini)
  2. Ściągnij najnowsze pliki binarne serwera MySQL ze strony http://dev.mysql.com/downloads/mysql/ (zajmują około 130M)
  3. Wyłącz serwer MySQL, jeżeli jest to usługa to wyłącz usługę wpisz w Start < Uruchom:
    NET STOP MySQL

    lub też możesz ręcznie wyłączyć na liście w zarządzaniu usługami w Start &lt Uruchom wpisz:

    services.msc

    potem usuń starą usługę:

    "C:\mysql\bin\mysqld.exe" --remove

    jeśli serwer nie jest zainstalowany jako usułga to wyłącz poprzez mysqladmin.exe

    "C:\mysql\bin\mysqladmin.exe" -u root -phaslo shutdown

    (pamiętaj aby zastąpić -phaslo własnym hasłem np. jeśli hasło to 123 to -p123 – bez odstępu między -p a hasłem, jeżeli root nie ma hasła to możesz usunąć parametr -p)

  4. Po wyłączeniu serwera możesz podmienić stare pliki nowymi zachowująć stary katalog data
  5. Zainstaluj serwer jako usługę:
    "C:\mysql\bin\mysqld.exe" --install

    uruchom serwer jako usługę (Start < Uruchom):

    NET START MySQL

    lub po prostu uruchom serwer:

    "C:\mysql\bin\mysqld.exe"
  6. Uruchom mysql_upgrade:
    "C:\mysql\bin\mysql_upgrade.exe" -u root -phaslo

    Następnie ściągnij plik fill_help_tables-5.5.sql.zip MySQL Help Tables 5.5 ze strony http://dev.mysql.com/doc/index-other.html, wypakuj do katalogu bin i wgraj go komendą:

    "C:\mysql\bin\mysql.exe" -u root -phaslo mysql < fill_help_tables-5.5.sql

    Jeśli z jakichś względów nie może użyć mysql_upgrade przejdź do punktu niżej:

  7. Jeżeli nie możesz użyć mysql_upgrade możesz wykonać kolejno wszystkie podane niżej komendy (wykonuj je jedna po drugiej, pamiętaj o podaniu hasła), musisz także ściągnąć plik MySQL Help Tables 5.5 jak w punkcie wyżej. (Jeżeli mysql to starsza wersja 5.0 lub te pliki istnieją to po wykonaniu pierwszego polecenia z końcówką –auto-repair, przejdź do folderu share i skopiuj z niego dwa pliki mysql_system_tables_fix.sql oraz mysql_fix_privilege_tables.sql do folderu bin lecz mysql_system_tables_fix.sql nie jest potrzebne, uważaj żeby to nie był stary plik wymagany jest przy aktualizacji z 5.0 do 5.1

    zanim zaktualizujemy z 5.0 do 5.5 musimy przeprowadzić aktualizację do 5.1 za pomocą mysql_upgrade i wtedy zostanie wygenerowany plik: mysql_system_tables_fix.sql który wgrywamy poleceniem:

    "C:\mysql\bin\mysql.exe" -u root -phaslo --force mysql < mysql_fix_privilege_tables.sql

    )

    cd /d "C:\mysql\bin\"
    mysqlcheck.exe -u root -phaslo --all-databases --check-upgrade
    mysqlcheck.exe -u root -phaslo --all-databases --auto-repair
    mysql.exe -u root -phaslo mysql < fill_help_tables-5.5.sql
    mysqlcheck.exe -u root -phaslo --all-databases --check-upgrade
    mysqlcheck.exe -u root -phaslo --all-databases --fix-db-names
    mysqlcheck.exe -u root -phaslo --all-databases --fix-table-names
  8. Zrestartuj serwer, wszystko powinno działać. Jeśli coś jest nie tak poszukaj rozwiązania w manualu.