Migrácia databázy z MySQL 4 na MySQL 5.7

Na túto migráciu stačí použiť rozhranie Webadmin. Postup je takýto:

1. Prihláste sa do Webadmina.

2. V sekcii Služby si zvoľte doménu, pri ktorej potrebujete vytvoriť databázu a kliknite na možnosť Databázy.

3. Pri MySQL4 databáze, ktorú chcete premigrovať, stlačte na tlačidlo Správa a následne Vytvoriť kópiu

4. Zobrazí sa upozornenie, že sa pre vytvorenie kópie musí najprv vytvoriť aktuálna záloha - toto je v poriadku, stačí kliknúť na Pokračovať 

5. Na novej obrazovke ako typ databázy zvoľte MySQL 5.7, zadajte ľubovoľné meno a heslo (tieto údaje budete používať pri následných prístupoch na novú databázu) a kliknite na tlačidlo Vytvoriť

Týmto spôsobom ste vytvorili kópiu MySQL 4 databázy na MySQL 5.7 serveroch a tým pádom, keď budeme rušiť podporu pre MySQL 4.0, Vaša databáza zostane zachovaná a bude funkčná. Preveriť, či je nová databáza v poriadku, viete tak že sa prihlásite na db57.websupport.sk s prihlasovacími údajmi tejto novej databázy - ak to nepojde, poprosím skúste 15 min a následne sa prihláste znovu. 

Následne bude ešte nevyhnutné upraviť webovú aplikáciu tak, aby namiesto pôvodnej databázy používala tú novú - na toto viete použiť návod Pripojenie databázy na webovú aplikáciu.

Čo sa týka známych problémov pri tomto type migrácie, môže vzniknúť situácia, kedy sa znaky obsahujúce diakritiku nezobrazujú korektne. Vtedy treba v kóde aplikácie ručne pridať kódovanie, takýmito spôsobmi:

Pôvodné pripojenie:

$connection = new PDO("mysql:host=mysql57.websupport.sk;port=3311;dbname=nazov_db", "nazov_db", "tu_vlozte_heslo");

Môžnosti pripojenia so zmeneným kódovaním:

$connection = new PDO("mysql:host=mysql57.websupport.sk;port=3311;dbname=nazov_db;charset=utf8", "nazov_db", "tu_vlozte_heslo", array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

$connection = 'mysql:unix_socket=/tmp/mysql57.sock;dbname='nazov_db';charset=utf8';

Vo väčšine prípadov stačí na pripojenie použiť druhú možnosť (pridať iba "charset=utf8" v riadku kde sa databáza pripája do aplikácie). Keby žiadne z týchto úprav nefungovali, alebo ak aplikácia namiesto PDO používa mysql_connect alebo mysql_pconnect, treba za tento connect pridať riadok:

mysql_query("SET NAMES 'utf8'");

v takom prípade to celé môže vyzerať napríklad takto:

$db = mysql_pconnect('localhost:/tmp/mysql57.sock','nazov_db','heslo');
          mysql_query("SET NAMES 'utf8'");
          mysql_select_db('nazov_db');

Keď budete vedieť, že Vám databáza funguje korektne a aplikácia tiež funguje s upravenými všetkými nastaveniami, môžete pôvodnú MySQL 4 databázu zmazať - tak, že vo webadmin rozhraní, podľa návodu zo začiatku textu, vykonáte kroky 1 a 2 a následne v kroku tri kliknete na Správa a Vymazať. Následne to stačí iba Potvrdiť. Neodporúčam toto však robiť až dovtedy, kým všetko nefunguje korektne.

V prípade, že vzniknú nejaké chyby pri migrácii MySQL 4 databáz iné ako tie s kódovaním, alebo že nová databáza pri migrácii vôbec nefunguje, odporúčam postup opakovať na viackrát, takým spôsobom, že podľa postupu popísaného na začiatku návodu najprv vytvoríte kópiu pôvodnej databázy typu MySQL 5.0 alebo MySQL 5.1 a potom z tejto novovytvorenej kópie vytvoríte, tiež podľa postupu na začiatku, kópiu typu MySQL 5.7. Takýmto vytváraním "kópie kópie" znemožníte výskyt problémov spôsobených prípadnou nekompatibilitou niektorých častí databázových serverov MySQL 4 a MySQL 5.7 a zvýšite pravdepodobnosť, že MySQL 5.7 kópia databázy bude fungovať korektne.