Mysqldump - робимо резервну копію бази даних - блог адміністратора linux

Для того щоб зберегти резервну копію бази даних MySql прийнято використовувати так звані дампи. Це текстовий файл містить структуру і вміст бази даних в форматі SQL запитів.

Отже, робимо дамп бази використовуючи консольний клієнт mysqldump, зайшовши на сервер по ssh. Знімати будемо дамп бази user_database з сервера mysql12.leaderhost.ru, логін для доступу до бази у нас user_admin і пароль 12345.

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

Наш дамп буде збережений в файл user_database.sql. Якщо Ви помилитеся в логіні або пароль то отримаєте помилку на подобі цієї:

mysqldump: Got error: 1045: Access denied for user 'user_admin'@'81.125.212.18' (using password: YES) when trying to connect

Якщо все нормально, то ніяких повідомлень не вдасться. Подивимося якого розміру вийшов дамп:

] $ Du -hs user_database.sql

Відновлюємо базу MySql з дампа

Вище описано як зробити дамп бази MySQL (резервну копію), далі опишемо необхідні дії для відновлення бази з дампа.

Отже, таже база і теже логіни / паролі, заходимо на сервер по Ssh і виконуємо в папці в якій лежить наш дамп. Наприклад дамп user_database.sql лежить в папці сайту hostingfaq.ru.

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

Помилки виникають при роботі з дампами

Не рідко, при відновленні бази з дампа, можна зіткнуться з такою помилкою:

# Тисячі шістьдесят дві - Duplicate entry 'N? -665' for key 1

Найчастіше, помилка виникає через те що кодування таблиці одна, а у даних інша. Що можна вдіяти? як правило в дампі бази змінити все покажчики кодування на одну. Наприклад, дані в дампі в кодуванні cp1251, а десь зустрічається покажчик на utf8:

ENGINE = MyISAM AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8;

ENGINE = MyISAM DEFAULT CHARSET = cp1251;

sed -i «s / utf8 / cp1251 /» user_database.sql

Після чого знову спробувати відновити базу з дампа. Незайвим буде примусово задати кодування ключем -default-character-set

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

Інша помилка може виникати в процесі створення дампа:

mysqldump: Got error: 1044: Access denied for user 'user_database' @ '%' to database 'user_database' when using LOCK TABLES

Обійти її та успішно виконати дамп допоможе ключ -skip-opt

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

Схожі статті