Давайте спершу поглянемо що таке база даних MySQL?
MySQL це система управління реляційними базами даних (СУБД), котру було встановлено більше 11 мільйонів разів. Програма працює як сервер, що надає багатокористувацький доступ до баз даних. MySQL володіє та утримується однією некомерційною фірмою, шведською компанією MySQL AB, в даний момент це дочірня компанія Sun Microsystems, що тримає авторські права на більшу частину коду. Вихідний код проекту доступний на умовах GNU General Public License, а також в різних власних угодах.
Навіщо використовувати імпорт чи експорт SQL дамп файл (сценарій)?
Я маю дві бази MySQL розміщені десь на сервері. Я підключаюсь за допомогою безпечного shell з'єднання. Я не знаю всіх деталей конфігурації цього серверу, але, очевидно, він має MySQL встановлений/налаштований правильно і можна припустити, що будь-який інший речі 'ймовірно' також. Мені потрібно повністю скопіювати одну базу даних в іншу (зараз одна дуже велика, а інша пуста).
І найпростіший шлях зробити це - використати sql експорт в файл дампу та sql імпорт з файлу дампу до mySQL бази даних.
Як створити файл дампу mySQL (експортувати базу даних в файл sql)?
Найпростіший шлях експортувати дані це використати наступний синтаксис в командному рядку:
mysqldump -u USER -p PASSWORD DATABASE > filename.sql
На приклад ми маємо базу даних з наступними параметрами:
Ім'я користувача | baseu01 |
---|---|
Пароль | h4z56s3 |
Ім'я бази даних | database01 |
Ім'я файлу експорту sql | export.sql |
Відповідний командний рядок для експорту це:
mysqldump -u baseu01 -p h4z56s3 database01 > filename.sql
Після виконання команди експорту ви матимете файл "export.sql" в вашій папці.
Приклад як може виглядати ваш файл експорту sql:
-- phpMyAdmin SQL Dump -- version 3.3.7deb6 -- -- -- Хост: localhost -- Час створення: Бер 19 2012 р., 14:22 -- Версія сервера: 5.1.49 -- Версія PHP: 5.3.3-7+squeeze3 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- БД: `c17scan_biotech` -- -- -------------------------------------------------------- -- -- Структура таблиці `backend_layout` -- CREATE TABLE IF NOT EXISTS `backend_layout` ( `uid` int(11) NOT NULL AUTO_INCREMENT, `pid` int(11) NOT NULL DEFAULT '0', `t3ver_oid` int(11) NOT NULL DEFAULT '0', `t3ver_id` int(11) NOT NULL DEFAULT '0', ...
То що ж робити з файлом дампу?
Це просто...
Використовуйте його як архів для відновлення в разі якщо щось трапиться і ви втратите базу даних або зламається сервер - ви завжди можете імпортувати файл дампу sql назад в mySQL базу даних.
Як імпортувати файл дампу sql в базу даних mySQL?
Сценарій: сервер зламався і ви маєте файл дампу mysqlрозташований на вашому жорсткому диску. Спершу інсталюйте базу даних mySQL - тоді створіть базу даних, користувача і пароль бази даних, а тоді використайте наступну команду в консолі:
mysql -u username -p password database_name < filename.sql
Якщо використати той самий приклад що і для експорту, командний рядок буде:
mysql -u baseu01 -p h4z56s3 database01 < export.sql
Розширені параметри для експорту та імпорту бази даних
Як експортувати тільки структуру бази даних MySQL
Якщо вам більше не потрібні дані в таблицях вашої бази (що малоймовірно), просто додайте –no-data ключ, що експортує тільки структуру баз даних. На приклад, синтаксис такої команди:
mysqldump -u username -ppassword –no-data database_name > dump.sql
Як вивантажити тільки дані з бази MySQL
Якщо ви хочете вивантажити тільки дані, використовуйте –no-create-info ключ. З цими налаштуваннями, цей дамп не буде створювати базу даних, таблиці, поля чи інші структури під час імпорту. Використовуйте це в разі якщо ви точно знаєте, що ви маєте базу даних з точно такою самою структурою, де вам потрібно тільки оновити дані. Синтаксис:
mysqldump -u username -ppassword –no-create-info database_name > dump.sql
Як створити дамп декількох баз даних MySQL в файл sql
-databases опція дозволить вам вказати більше 1 бази даних. Приклад синтаксису:
mysqldump -u username -ppassword –databases db_name1 [db_name2 ...] > dump.sql
Як створити дамп усіх баз даних на сервері MySQL
Для створення дампу усіх баз даних використовуйте опцію –all-databases, та без імен баз даних.
mysqldump -u username -ppassword –all-databases > dump.sql
How to Online Backup InnoDB Tables
Резервне копіювання бази даних неминуче зробить сервер MySQL недоступним для додатків тому, що під час експорту усі таблиці отримують глобальне блокування читання використовуючи FLUSH TABLES WITH READ LOCK на початку виконання команди дампу і аж до його закінчення. Отже, хоча заяви на READ (читання) можуть відбуватись, усі заяви на INSERT (вставка), UPDATE (оновлення) і DELETE (видалення) будуть поміщені в чергу через блокування таблиць, наче MySQL не працює чи зупинився. Якщо ви використовуєте InnoDB, опція –single-transaction це шлях до зменшення часу блокування майже до нуля, ніби виконується онлайн резервування. Це працює через зчитування координат в бінарному журналі як тільки блокування було отримано, і блок одразу знімається.
Синтаксис:
mysqldump -u username -ppassword –all-databases –single-transaction > dump.sql