Mysqldump, util - hack

Pentru a salva o copie de siguranță a bazei de date MySql, este obișnuit să se utilizeze așa-numitele halde. Acesta este un fișier text care conține structura și conținutul bazei de date în formatul de interogare SQL.

Deci, am dump bazei de date folosind clientul consola mysqldump, conectându-se la server prin ssh. Vom elimina dump-ul bazei de date user_database de la server mysql12.leaderhost.ru, login-ul pentru accesarea bazei de date este user_admin iar parola este 12345.

mysqldump -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database> user_database.sql

Depunerea noastră va fi salvată în user_database.sql. Dacă faceți o greșeală în numele de utilizator sau parola, veți primi o eroare privind asemănarea cu aceasta:

mysqldump: Am greșit: 1045: Accesul a fost refuzat pentru utilizatorul 'user_admin'@'91.195.124.30' (folosind parola: YES) când încercați să vă conectați

Dacă totul este normal, atunci nu vor fi date mesaje. Să vedem ce mărime s-a întors:

] $ du -hs user_database.sql

Restaurarea bazei de date MySql din dump

Mai sus descris cum să dumpăm baza de date MySQL (backup), apoi să descriem pașii necesari pentru restaurarea bazei de date din dump.

Deci, aceeași bază de date și aceleași login-uri / parole, vom merge la serverul de Ssh și vom executa în dosarul în care se află depozitul nostru. De exemplu, dumpul utilizatorului_database.sql este situat pe site-ul hostingfaq.com.

mysql -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database

Erori care apar atunci când lucrați cu haldele

Nu este ceva neobișnuit, atunci când restaurați o bază de date dintr-un depozit, este posibil să întâlniți o astfel de eroare:

# 1062 - Duplicați intrarea "N? -665" pentru cheia 1

Adesea, eroarea apare deoarece tabelul are o singură codificare, iar datele au altul. Ce se poate face? ca o regulă în memoria de bază de date, schimbați toți indicii de codare la unul. De exemplu, datele din dump în codarea cp1251, și undeva există un pointer la utf8:

MOTOR = MyISAM AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8;

ENGINE = MyISAM DEFAULT CHARSET = cp1251;

sed-i "s / utf8 / cp1251 /" user_database.sql

Apoi încercați din nou să restaurați baza de date din dump. Este inutilă forțarea codificării cu setul de caractere predefinit

mysql -default-character-set = cp1251 -hmysql12.leaderhost.ru -uuser_admin -p12345 user_database

O altă eroare poate apărea în timpul creării unei dumpări:

mysqldump: Ați avut eroare: 1044: Accesul a fost refuzat pentru utilizatorul 'user_database' @ '%' la baza de date 'user_database' atunci când se utilizează TABLURI LOCK

Utilizați comutatorul "skip-opt" pentru ao ocoli și a executa cu succes comanda

mysqldump -skip-opt -hmysql12.leaderhost.ru -uutilizator_admin -p12345 user_database> user_database.sql

Articole similare