Дамп бази даних - блог кодера
Сьогодні хочу розповісти про дампи баз даних. Самого колись дане словосполучення лякало, хоча страшного в ньому в общем-то нічого немає. Отже перший, і головне питання: що таке дамп бази даних. Відповідь на нього несподівано простий - дамп бази даних це файл з її вмістом, що дозволяє відновити бд з "нуля". Тобто це всього лише її копія. Так чому ж дамп бази даних так і не назвати "копія бд"? Суть в тому, що дамп сам по собі базою даних не є, він лише дозволяє її відтворити. Справа в тому, що база даних може зберігатися в різних файлах в залежності від версії СУБД, від типу операційної системи і інших чинників. Тобто знайти в системі всі файли однієї бд і перенести їх в іншу систему дуже непросто. Для полегшення цього завдання якраз і служить дамп бази даних.
А для чого власне необхідно переносити базу даних?
По-перше для створення резервних копій, або контрольних точок відновлення перед внесенням істотних змін в структуру - для того щоб мати можливість відкотитися назад у разі виникнення будь-яких проблем. Наприклад поставили Ви сторонній компонент, а сайт в результаті виявився непрацездатним і потрібно швидко відновити його роботу. Тут і виникає необхідність використання дампа бази даних.
По-друге, при створенні сайту його як правило спочатку роблять на локальній машині під віртуальним веб-сервером і тільки потім переносять на хостинг. І якщо з перенесенням файлів все більш-менш зрозуміло то перенесення бд - завдання не настільки очевидно розв'язувана. Тут теж не обійтися без дампа бази даних.
Приступаємо до створення дампа бази даних. Відкриваємо phpMyAdmin, вибираємо потрібну нам базу і натискаємо на вкладку "Export". В результаті ви повинні отримати щось на зразок цього:
Тут потрібно вибрати всі таблиці (ну або ті в яких потрібно відкинути редагування) і поставити radio button в значення SQL. У розділі Structure можна помітити перше поле "Add DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT" для того щоб перед імпортом дампа в базі призначення віддалилися відповідні таблиці, якщо вона переноситься перший раз - ознака годі й позначати. У тому ж вікні нижче бачимо розділ "Save as file":
Власне помічаємо "Save as file" і пишемо бажане ім'я файлу. Дамп бази даних можна заархівувати, але як правило він має не такий значний розмір, щоб мало сенс стискати файл. Натискаємо кнопку "GO", і отримуємо стандартне вікно збереження файлу в браузері:. Збережений файл і є дамп бази даних. Якщо відкрити його в тому ж блокноті - побачите на початку рядка виду
Сам файл складається з запитів на створення і вставку значень в таблицю, написаних на мові SQL. Тут абсолютно ніякого шаманства, все дуже навіть очевидно. Тепер наступне завдання - імпорт дампа. З нею теж нічого складного. Заходьте в панель управління хостингом, знаходите там phpMyAdmin, запускаєте. Можливо доведеться вказати логін / пароль - в залежності від налаштувань хостера. Ну а далі дії схожі - вибираємо потрібну бд, тиснемо вкладку "Import", бачимо таке вікно:
У розділі "File to import" за допомогою кнопки "Огляд" вказуємо файл дампа бази даних, нижче проставляємо кодування - в joomla за замовчуванням це utf-8. Нижче розташований розділ "Partial import" і поле "Number of records (queries) to skip from star" куди можна ввести числове значення - кількість рядків, що обробляються за один прохід, на той випадок якщо за час життя скрипта вся база не встигає імпортуватися. Значення за замовчуванням "0" відповідає імпорту всієї бази за один запуск скрипта. Мені в моїй практиці не доводилося стикатися з тим що база не встигає заліться за один прохід, хоча це не говорить що таких випадків не буває. Значення інших полів міняти не потрібно, просто натискаємо кнопку "GO". Ось власне і все, дамп бази даних імпортовано.
Ну і наостанок кілька уточнень.
1) Чому я описав спосіб імпорту / експорту всіх таблиць а не бд цілком? Справа в тому що найбільш часто доводиться стикатися з процедурою імпорту / експорту при перенесенні даних з веб-сервера на локальну машину і навпаки. Але дуже часто на локальній машині використовується доступ по облікового запису "root" без пароля. На хостингу такого ми собі дозволити не можемо. А база даних якраз таки містить у собі не тільки дані, але і "privileges" - права на доступ до неї певних користувачів. Щоб наступного разу галерея заводити / видаляти користувачів і призначати їм права доступу використовується підхід коли в дамп бази даних записується тільки структура таблиць і дані в ній. У разі якщо створюється просто бакап для того ж сервера цілком можна зробити дамп з бд цілком.