Áttérés MySQL 5.0 verzióról 5.1 verzióra mentés/visszaállítás módszerrel

A MySQL 5.0 aktív támogatása 2009. december 31-én befejeződött és bekerült a kiterjesztett támogatási fázisba, majd 2012. január 9-én átkerült a fenntartási támogatás alá. Ezt azt jelenti, hogy nem lesznek új kiadások, nem készülnek hozzá új javítások és új frissítések, csak a már létező frissítések, javítások és riasztások lesznek elérhetők. Mostanra elkerülhetetlenné vált az áttérés a MySQL aktuális GA (Generally Available) verziójára, ami jelen pillanatban a MySQL 5.5.29 verzió.

logo-mysql-110x57A MySQL 5.5 referencia kézikönyv alapján az általános szabály az, hogy az egyik kiadási sorozatról az áttérést egy másikra lépésenként ajánlott végrehajtani, a közbenső sorozatok kihagyása nélkül.

Ahhoz, hogy áttérjen a MySQL 5.5 verziót megelőző kiadási sorozatról, térjen át sorban az egymás követő kiadási sorozatokra mindaddig, amíg el nem éri a  MySQL 5.5 verziót. Például, ha jelenleg a MySQL 5.0 verziót futtatja és át szeretne térni egy újabb újabb sorozatra, akkor előbb térjen át a MySQL 5.1 verzióra mielőtt áttérne az 5.5 verzióra, és így tovább.

Figyelmeztetés: Mindenféle áttérés megkezdése előtt készítsen adatmentést adatbázisairól, beleértve a mysql adatbázist is, amely tartalmazza az engedélyek tábláját. MySQL adatbázis mentési módszerek

Módszerek

Az áttérés végrehajtásának alapvetően két módja van: a bináris (in-place) és a mentés/visszaállítás (dump/restore).

  • A bináris módszer esetén az áttérés közben az adatbázisok fájljai érintetetlenek maradnak, ezeken az új verzióra való áttérés után le kell futtatni a mysql_upgrade programot.
  • A másik módszer a mentés/visszaállítás (dump/restore) eljárás. Ennek során az adatbázisokat exportálni kell az áttérés megkezdése előtt, majd az új verzióra való áttérés után vissza kell állítani az adatbázisokat. Ennél a módszernél is le kell futtatni a mysql_upgrade programot, hogy a MySQL specifikus adatbázisok (pl. felhasználó-nyilvántartás) frissítve legyenek.

Sajnos a személyes tapasztalok azt mutatják, hogy a MySQL 5.0 verzióról az 5.1-es verzióra való bináris módszer nem igazán megy zökkenőmentesen, ezért itt a második módszer kerül bemutatásra.

A bináris módszert a MySQL 5.1 verzióról az 5.5 verzióra való áttérésnél található meg.

Eljárás (dump/restore)

Itt minden fontos lépést megtalálhat az áttérés megfelelő végrehajtásához.

  1. Az első és legfontosabb lépés a biztonsági mentés készítése az adatbázisokról, mégpedig oly módon, hogy az egyes adatbázisok külön sql fájlba kerüljenek.
    Fontos, hogy lementse a mysql adatbázist, mert ebben vannak a felhasználók és az engedélyek!
    Az adatmentés előtt állítsa le az összes alkalmazást, amely használja MySQL adatbázist.
  2. Ellenőrizni kell, hogy mely portok függnek az aktuálisan telepített mysql-client verziótól, ez a következő paranccsal tehető meg:
    # portupgrade -frn mysql-client

    Ez a parancs megpróbálja újrafordítani az összes olyan portot, amely függ a mysql-client porttól, mivel azonban az -n kapcsoló is meg lett adva, ezért nem lesz végrehajtva semmi (csak egy teszt fut le). A parancs eredményeként egy rövidebb-hosszabb listát fog kapni azokról a portokról, amelyekhez szükséges, hogy a mysql-client port helyesen működjön.

    ...
           + databases/mysql50-client (mysql-client-5.0.95 ->; mysql-client-5.0.95)
           + databases/mysql50-server (mysql-server-5.0.95 ->; mysql-server-5.0.95)
           + mail/dovecot (dovecot-1.2.17 ->; dovecot-1.2.17)
           + security/cyrus-sasl2 (cyrus-sasl-2.1.26_2 ->; cyrus-sasl-2.1.26_2)
           + mail/postfix28 (postfix-2.8.12_2,1 ->; postfix-2.8.12_2,1)
           + databases/p5-DBD-mysql (p5-DBD-mysql-4.021 ->; p5-DBD-mysql-4.021)
           + security/amavisd-new (amavisd-new-2.8.0_2,1 ->; amavisd-new-2.8.0_2,1)
           + mail/dovecot-sieve (dovecot-sieve-1.2+0.1.19 ->; dovecot-sieve-1.2+0.1.19)
           + databases/mysql50-scripts (mysql-scripts-5.0.95 ->; mysql-scripts-5.0.95)
           + mail/dovecot-managesieve (dovecot-managesieve-0.11.13 ->; dovecot-managesieve-0.11.13)
           + security/maia (maia-1.0.3.r1575_3 ->; maia-1.0.3.r1575_3)
    ...
  3. Mentse el a listát egy biztonságos helyre, mivel később szükség lesz még rá (a listáról eltávolíthatja a mysql-client, mysql-server és mysql-scripts portokat, mivel ezek egyébként is frissítve lesznek)
  4. Távolítsa el a mysql50-client, mysql50-server és mysql50-scripts portokat.
    # cd /usr/ports/databases/mysql50-client
    # make deinstall
    # cd /usr/ports/databases/mysql50-server
    # make deinstall
    # cd /usr/ports/databases/mysql50-scripts
    # make deinstall
  5. Mivel ez most nem a bináris (in-place) módszer, ezért mindent el kell távolítani a MySQL adatútvonaláról. Ez FreeBSD estén alapértelmezésben a /var/db/mysql útvonalon található. Mielőtt mindent kitörölne vagy áthelyezne innen, ellenőrizze, hogy rendelkezik-e érvényes és működő biztonsági mentéssel adatbázisairól!
    Fontos, hogy a MySQL konfigurációs fájljáról (/usr/local/etcl/my.cnf) is készítsen biztonsági mentést, mert a beállításokat át kell vinni majd az új verzió konfigurációs fájljába.
  6. Most telepítse a mysql51-server portot, ez automatikusan telepíteni fogja a mysql51-client portot is.
    # cd /usr/ports/databases/mysql51-server
    # make install clean

    Szükség esetén telepítse a mysql51-scripts portot is.

    # cd /usr/ports/databases/mysql51-scripts
    # make install clean
  7. Hozza létre a /usr/local/etc/my.cnf konfigurációs fájlt a megfelelő my-{small,medium,large,huge}.cnf fájlból a /usr/local/share/mysql útvonalról (a beállítások megváltoztak). Vigye át a szükséges beállításokat a régi konfigurációs fájlból az új konfigurációs fájlba.
    Állítsa be a /usr/local/etc/my.cnf fájl megfelelően:

    # chown mysql:mysql /usr/local/etc/my.cnf
    # chmod 644 /usr/local/etc/my.cnf
  8. Indítsa el a MySQL 5.1 adatbázis kiszolgálót.
    # /usr/local/etc/rc.d/mysql-server start

    Automatikusan létrejönnek az alapértelmezett adatbázisok (mysql, performance_schema, test) a /var/db/mysql útvonalon, valamint InnoDB esetén a naplófájlok.

  9. Most, hogy már telepítve van és fut a MySQL 5.1, de az összes érintett szoftver még az 5.0-ás klienst használja, ezért most még ne indítsa újra a szoftvereket. Most vegye elő a portok elmentett listáját, és fordítsa újra minden egyes elemét.
    Kezdje pl. a postfix és hozzá szükséges portokkal:

    # portupgrade -fO postfix
    # portupgrade -fO p5-DBD-mysql
    ...

    A portok frissítése után ellenőrizze le a portok adatbázisát a következő paranccsal, hogy minden rendben van-e.

    # pkgdb -F
  10. Most már csak az adatbázisokat kell visszaállítani. Elsőként a mysql adatbázist kell visszaállítani és lefuttatni rajta a frissítést. (A jelszó nem kell megadni, mert még nincs meghatározva.)
    # mysql -uroot mysql < mysql.sql
    # mysql_upgrade -uroot
    Looking for 'mysql' as: mysql
    Looking for 'mysqlcheck' as: mysqlcheck
    Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysql.sock'
    Running 'mysqlcheck' with connection arguments: '--port=3306' '--socket=/tmp/mysql.sock'
    mysql.columns_priv                                 OK
    mysql.db                                           OK
    mysql.event                                        OK
    mysql.func                                         OK
    mysql.general_log                                  OK
    mysql.help_category                                OK
    mysql.help_keyword                                 OK
    mysql.help_relation                                OK
    mysql.help_topic                                   OK
    mysql.host                                         OK
    mysql.ndb_binlog_index                             OK
    mysql.plugin                                       OK
    mysql.proc                                         OK
    mysql.procs_priv                                   OK
    mysql.proxies_priv                                 OK
    mysql.servers                                      OK
    mysql.slow_log                                     OK
    mysql.tables_priv                                  OK
    mysql.time_zone                                    OK
    mysql.time_zone_leap_second                        OK
    mysql.time_zone_name                               OK
    mysql.time_zone_transition                         OK
    mysql.time_zone_transition_type                    OK
    mysql.user                                         OK
    mysql.user_info                                    OK
    Running 'mysql_fix_privilege_tables'...
    OK
  11. Ezután érdemes újraindítani a mysql-server démont, hogy ellenőrizni lehessen, minden rendben van az adatbázisok visszaolvasása előtt.
    # /usr/local/etc/rc.d/mysql-server restart

    Eztán már csak a korábbi felhasználókkal és a hozzátartozó jelszavakkal lehet belépni.

  12. Ezután jöhet a többi adatbázisok visszaállítása a mentésből. Hajtsa végre az adatbázisok visszaolvasását egyesével.