Удалить базу данных MySql — простые шаги доступные даже новичкам
Всем привет. Бывают случаи когда возникает необходимость удалить базу данных MySql. Почему удалить, а не редактировать? Просто по незнанию нагородили кучу таблиц, или не знаете как выявить ошибку. Проще снести и создать новую БД. Лучшим вариантом, конечно, будет произвести импорт резервной копии базы данных. В принципе, каждый уважающий себя администратор должен знать как удалить базу данных MySql.
Вход в phpMyAdmin
Рассмотрим работу с базами данных MySql в phpMyAdmin, который встроен в локальный сервер Денвер (это вовсе не обязательно, лучше использовать для обучения и тренировки). После установки локального сервера на компьютер появится доступ в phpMyAdmin и возможность создавать базы данных.
Войти в phpMyAdmin на локальном сервере можно перейдя по ссылке: http://localhost./Tools/phpmyadmin/index.php.
Удаление базы данных MySql
В админке слева выбираете базу которую собираетесь убрать.
В следующем окне вверху кнопка Операции. Кликаете.
И последний шаг ⇒ жмёте Удалить базу данных (DROP).
Как удалить базу данных MySql из командной строки
БД можно стереть посредством команды в командной строке. Войдите в учетную запись на сервер БД: Z:\usr\local\mysql-5.5\bin\mysql.exe -u root.
Команда на удаление БД выглядит так: DROP DATABASE database_name,
-где database_name обозначает имя базы данных.
Например, DROP DATABASE moyblog — обозначает удалить базу данных с именем moyblog.
Жмёте Enter, чем запустите выполнение команды. Система выдаст сообщение о завершении команды и затраченном времени.
Чистка и редактирование базы данных MySql
Удаление БД является радикальным методом. Во многих случаях достаточно будет убрать конкретную таблицу, очистить строки таблицы, некоторые записи – то есть провести редактирование базы данных MySql.
Удаление таблиц в базе данных
Войдите в нужную БД. Отметьте галкой нужные таблицы и нажмите Удалить. Если надо стереть лишь строки, не удаляя таблицу — жмите Очистить.
Очистить строки таблицы в БД
Входите в таблицу. На вкладке Обзор выбираете нужные строки и клацаете Удалить или Изменить.
Как видите удалить базу данных MySql совсем несложно,это дело пяти минут. Главное оставаться на чеку и не убрать лишнее.
Удачи Вам.
С уважением, Павел Коновалов
konovalovpavel.ru
Как удалить базу данных MySQL в Linux через командную строку
MySQL – самая популярная система управления реляционными базами данных с открытым исходным кодом.В этой статье описывается, как удалить (или удалить) базу данных MySQL или MariaDB через командную строку.
Прежде чем вы начнете
Все команды выполняются от имени администратора (минимальная привилегия,необходимая для удаления базы данных DROP) или от имени учетной записи root.
Чтобы получить доступ к консоли MySQL, введите следующую команду и введите ваш пароль пользователя root MySQL при появлении запроса:
mysql -u root -p
Если вы не установили пароль для своего корневого пользователя MySQL, вы можете пропустить переключатель -p.
Список всех баз данных MySQL
Перед удалением базы данных вы можете просмотреть список всех баз данных, которые вы создали. Для этого из оболочки MySQL выполните следующую команду:
SHOW DATABASES;
Команда выше напечатает список всех баз данных на сервере. Вывод должен быть похож на это:
+--------------------+ | Database | +--------------------+ | information_schema | | database_name | | mysql | | performance_schema | | test | +--------------------+ 5 rows in set (0.00 sec)
Удалить базу данных в MySQL
Удалить базу данных MySQL так же просто, как запустить одну команду. Это необратимое действие и должно выполняться с осторожностью. Убедитесь, что вы не удаляете неправильную базу данных, так как после удаления базы данных ее невозможно восстановить.
Всегда полезно создать резервную копию базы данных перед запуском запроса на удаление.
Чтобы удалить базу данных, введите следующую команду, где database_name находится имя базы данных, которую вы хотите удалить:
DROP DATABASE database_name;
Query OK, 1 row affected (0.00 sec)
Если вы попытаетесь удалить базу данных, которая не существует, вы увидите следующее сообщение об ошибке:
ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist
Чтобы избежать появления ошибок, как указано выше, используйте следующую команду:
DROP DATABASE IF NOT EXISTS database_name;
Query OK, 1 row affected, 1 warning (0.00 sec)
В выводе выше Query OK означает, что запрос был успешным, и 1 warningговорит нам, что база данных не существует и база данных не была удалена.
В Linux базы данных MySQL и имена таблиц чувствительны к регистру.
Удалить базу данных MySQL с помощью mysqladmin
Вы также можете удалить базу данных MySQL из терминала Linux с помощью утилиты mysqladmin.
Например, чтобы удалить базу данных с именем database_name, введите следующую команду и введите свой пароль пользователя root MySQL при появлении запроса:
mysqladmin -u root -p drop database_name
Заключение
Вы узнали, как удалить базу данных MySQL.
Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter
andreyex.ru
Как удалить базу MySQL – руководство по минированию
От автора: вы зачем трете ластиком монитор? Базу данных хотите удалить? Так может лезвием попробовать! Подождите, я пошутил (оказывается, неудачно)! Уберите опаску от экрана, садитесь и запоминайте, как удалить базу MySQL.
Зачем так радикально?
Удаление БД – это самое крайнее средство, но знание данной операции поможет вам сэкономить уйму времени, сил и нервов. Почему? Если вы когда-нибудь очень близко «общались» с любой из СУБД и создавали в ней различные структуры данных, то должны знать, что иногда легче просто «стереть» базу (таблицу) и пересоздать ее заново. Особенно в такие дни, когда то ли не по феншую ногу с утра поставили, то ли звезды не так расположились… В общем, в такие дни все бутерброды ложатся (падая) колбасой на землю, а девушки улыбаются не вам.
Понятно, что против звезд не попрешь, и все базы из-под вашей руки выходят какие-то «кривые». То не тот тип столбца задашь, то законнектиться нормально не получается. А с триггерами и процедурами вообще полнейший мрак! В таком случае легче просто удалить MySQL данные.
То же самое касается БД, которые прошли через руки «чайных дел мастеров». Причем никто кроме вас не виноват, потому что сами (как администратор баз данных) наделили их правами на изменение и добавление записей в таблицы. В этой ситуации также легче стереть все данные и пересоздать БД из резервной копии. В общем, настоящий админ должен знать не только, как создать, но и как удалить. Точно так же, как квалифицированный стоматолог должен уметь не только вставлять, но и удалять зубы .
Программные оболочки
Начнем обзор вариантов решения проблемы с возможностей нашей любимой оболочки для администрирования MySQL. Заходим в интерфейс phpMyAdmin, слева выделяем «провинившуюся» базу. Затем в основном меню сверху переходим через пункт «Операции» и справа выбираем «Удалить базу данных (DROP)».
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!Иногда нужно произвести неполное удаление данных MySQL (конкретную таблицу базы). Данная программа предоставляет для этого встроенный функционал.
В списке слева снова выбираем нужную БД. Затем в списке, который отображается во вкладке «Структура» выделите таблицу и нажмите слева ссылку «Удалить». Если требуется просто стереть из таблицы все строки, но не удалять ее, то для этого воспользуйтесь ссылкой «Очистить».
Чтобы удалить определенные записи таблицы, перейдите справа по ссылке. После этого по вкладке «Обзор» (верхнее меню), выделите в таблице нужные строки и нажмите на «Удалить».
MySQL Administrator также умеет «избавляться» от ненужных данных. Чтобы удалить БД MySQL, зайдите в программу под учетной записью администратора СУБД или пользователя, наделенного привилегией на выполнение команды DROP. В меню слева нажмите пункт «Schema». Визу выделите нужную базу, кликните правой клавишей и выберите команду «Drop Schema».
Для удаления таблицы в верхнем меню (при активной вкладке «Catalogs») перейдите в раздел «Schema Tables». Нажмите по имени «неправильной» таблицы правой клавишей и выберите команду («Drop Table»).
Средства SQL
Хватит играться, давайте теперь работать как профессионалы. Рассмотрим каким образом можно удалить базу данных MySQL с помощью языка структурированных запросов. Для этого используется команда DROP DATABASE. Ее синтаксис:
DROP {DATABASE | SCHEMA} [IF EXISTS] db-name
DROP {DATABASE | SCHEMA} [IF EXISTS] db-name |
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!Как видите, команда не отличается особой сложностью. В качестве параметров она принимает название БД. При этом использование второго параметра не является обязательным. Указание в запросе IF EXISTS предотвращает вывод сообщения об ошибке и остановку выполнения всех остальных команд. Особенно это важно при использовании мультизапросов, разработке триггеров и хранимых процедур.
Давайте разберемся с применение данной команды MySQL на удаление базы. Для экспериментов создайте «липовую» БД через вкладку основного меню «Базы данных». Я свою так и назвал lipa. Чувство юмора является обязательным атрибутом любого успешного администратора СУБД .
Дальнейшие эксперименты я предлагаю продолжить в командной строке. Так сказать, для разнообразия. Перед тем, как полностью удалить MySQL базу, зайдите на сервер СУБД под учеткой админа (или другого юзера с глобальными правами): Z:\usr\local\mysql-5.5\bin\mysql.exe -u root
Введите следующий запрос и запустите его на выполнение:
Система СУБД выведет сообщение об удачном выполнении команды и сколько времени потребовалось на это.
Теперь снова введите запрос в MySQL на удаление базы. В ответ на это сервер СУБД начнет ругаться и выдаст сообщение об ошибке, что такой БД уже не существует:
Теперь немного изменим запрос, и используем в нем условное выражение IF EXISTS. Получается, что мы говорим СУБД удалить базу с именем lipa, но лишь в том случае, если она существует:
DROP DATABASE IF EXISTS lipa;
DROP DATABASE IF EXISTS lipa; |
В результате MySQL выполнит наш запрос и лишь предупредит о наличии несоответствия (отсутствие БД). Но не прекратит выполнение текущего запроса и всего последующего кода, что очень важно при разработке ADO-приложений, триггеров и хранимых процедур. Таким образом гарантируется их отказоустойчивость.
Теперь вы знаете в MySQL как удалить базу. И при всей кажущейся простоте команда DROP DATABASE обладает мощным эффектом. Так что пользуйтесь ею осторожно, а лезвие и ластик оставьте в покое . До новых встреч!
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!Хотите изучить MySQL?
Посмотрите курс по базе данных MySQL!
Смотретьwebformyself.com
Создание (удаление) базы данных MySQL и пользователя из командной строки (BASH)
В этой статье рассмотрим, как создавать новые базы данных в MySQL из командной строки сервера, (а также BASH-скрипт для автоматического создания базы данных и пользователя MySQL на сервере).
Вход под root на MySQL-сервер
Для того, чтобы воспользоваться интерфейсом MySQL на удалённом сервере, необходимо сперва законнектится к серверу MySQL. В Debian это можно сделать командой mysql -uroot
так, чтобы сразу войти в интерфейс с правами root. После удачного входа появится приветствие сервера MySQL и приглашение для ввода команд на языке MySQL:
root@server:~# mysql -uroot Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 15 Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
Выход в консоли из режима работы с MySQL-сервером
Для того, чтобы выйти из режима работы с MySQL-сервером в консоли нужно набрать команду exit:
MariaDB [(none)]> exit
Bye
root@server:~#
CREATE DATABASE
— команда MySQL для создания базы данных
Для того, чтобы создать базу данных на сервере нужно воспользоваться командой MySQL CREATE DATABASE
``
название базы данных. Помним про синтаксис MySQL и после команды обязательно ставим ;
:MariaDB [(none)]> CREATE DATABASE `new_db`;
Query OK, 1 row affected (0.00 sec)
Более полная конструкция команды CREATE DATABASE
:
CREATE DATABASE new_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CHARACTER SET
задаёт порядок сортировки.COLLATE
задаёт кодировку таблиц создаваемой базы данных.
Если при создании таблицы эти параметры не указываются, то кодировка и порядок сортировки вновь создаваемой таблицы берутся из значений, указанных для всей базы данных, которую мы и прописываем этой командой.
- Если задан параметр
CHARACTER SET
, но не задан параметрCOLLATE
, то используется стандартный порядок сортировки. - Если задан параметр
COLLATE
, но не заданCHARACTER SET
, то кодировку определяет первая часть имени порядка сортировки вCOLLATE
.- Кодировка, заданная в
CHARACTER SET
, должна поддерживаться сервером, - а порядок сортировки должен быть допустимым для текущей кодировки.
- Кодировка, заданная в
- Если не заданы оба параметра, то берётся значение по умолчанию.
Как посмотреть настройки уже существующей базы данных
Для того, чтобы посмотреть настройки уже существующей базы данных необходимо выполнить команду SHOW CREATE DATABASE, указав имя базы данных, настройки которой нужно посмотреть:
MariaDB [(none)]> SHOW CREATE DATABASE `new_db`; +----------+-----------------------------------------------------------------------------------------------+ | Database | Create Database | +----------+-----------------------------------------------------------------------------------------------+ | new_db | CREATE DATABASE `new_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ | +----------+-----------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
Как посмотреть список всех баз данных на сервере MySQL
Для того, чтобы вывести список всех баз данных на сервере MySQL нужно воспользоваться командой show databases
:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| new_db |
+--------------------+
3 rows in set (0.00 sec)
Как удалить базу данных MySQL с сервера
Для удаления базы данных MySQL с сервера нужно воспользоваться командой DROP DATABASE
и ввести имя удаляемой базы данных:
MariaDB [(none)]> DROP DATABASE `new_db`;
Query OK, 0 rows affected (0.00 sec)
CREATE USER
— команда MySQL для создания пользователя базы данных
Для создания пользователя базы данных нужно воспользоваться командой CREATE USER
:
MariaDB [(none)]> CREATE USER new_user;
Query OK, 0 rows affected (0.00 sec)
Для задания/изменения пароля пользователя базы данных нужно воспользоваться командой:
MariaDB [(none)]> UPDATE mysql.user SET Password=PASSWORD('tyt_parol') WHERE User='new_user';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
DROP USER
— команда MySQL для удаления пользователя базы данных
Для того, чтобы удалить пользователя баз данных нужно выполнить команду DROP USER
:
MariaDB [(none)]> DROP USER `new_user`;
Query OK, 0 rows affected (0.00 sec)
Простейший BASH-скрипт для создания новой базы данным MySQL с пользователем и паролем
Быстро создавать базы данных можно с помощью такого BASH-скрипта:
#!/bin/bash
mysql -uroot <<MYSQL_SCRIPT
CREATE DATABASE $1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '$1'@'localhost' IDENTIFIED BY '$2';
GRANT ALL PRIVILEGES ON $1.* TO '$1'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT
echo "MySQL database created."
echo "Database: $1"
echo "Username: $1"
echo "Password: $2"
На входе этому скрипту нужно задать два параметра:
- Имя базы данных (у пользователя будет такое же имя)
- Пароль пользователя базы данных.
Пример работы такого скрипта create-mysql.sh
при создании базы данных test c пользователем test
и паролем 123
:
root@server:~# ./create-mysql.sh test 123
MySQL database created.
Database: test
Username: test
Password: 123
Простейший BASH-скрипт для удаления базы данным MySQL с пользователем
Также можно создать BASH-скрипт для удаления базы данным MySQL с пользователем, имеющим такое же имя, что и база данных. Работает с одним параметром на входе:
#!/bin/bash
mysql -uroot <<MYSQL_SCRIPT
DROP DATABASE $1;
DROP USER '$1'@'localhost';
MYSQL_SCRIPT
echo "MySQL database and user deleted."
echo "Database: $1"
echo "Username: $1"
Резюме
Таким образом можно создавать и удалять базы данных MySQL и их пользователей на сервере, а также автоматизировать работу по их созданию и удалению.
Заберите ссылку на статью к себе, чтобы потом легко её найти 😉
Выберите, то, чем пользуетесь чаще всего:
Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )
mb4.ru
Как очистить базу данных средствами phpMyAdmin
Если вам свойственно экспериментировать, вы находитесь в постоянном творческом поиске, то не стоит раз от раза запускать сайт с нуля. Задумайтесь, зачем удалять «бывшую в употреблении» базу данных (БД), если придётся создавать новую для очередного детища?
Кому нужен «низкий старт», если достаточно очистить имеющуюся БД от содержимого, и воспользоваться уже известными данными аутентификации на сервере. Минутное дело, если под рукой есть инструмент под названием phpMyAdmin.
PhpMyAdmin— веб-интерфейс для доступа к удалённому MySQL. Представляет собой полноценный инструмент для управления базой данных: экспорт, импорт, прямое редактирование и т. д.
Откройте в “phpMyAdmin” интересующую БД (доступ можно получить из панели управления вашего хостинг-провайдера). В окне появится список всех таблиц в базе, созданных в ходе работы над сайтом. Ниже, щёлкните пункт «Отметить всё», а после справа выберите из выпадающего меню (С отмеченными) — пункт «Удалить». Может потребоваться подтвердить совершаемое действие.
Всё, база данных девственно чиста. Теперь её можно использовать для очередного эксперимента. А как вам удалось оптимизировать рабочие процессы, делитесь в комментариях ниже.
поделитесь с друзьями:
ВКонтакте
OK
wd-x.ru
Восстановление MySQL баз данных и таблиц разными методами
От автора: добрый день, уважаемые. У вас что-то случилось? Опять «выкинули» не ту базу данных? Ну, это не смертельно, если знать все про восстановление MySQL. Сейчас мы расскажем вам все тонкости данного ритуала. Для этого нужен бубен, козявка из носа белохвостого тюленя… Это шутка! А все серьезное по этой теме будет изложено дальше.
Горе поправимо, если удалили базу
Без баз данных и систем управления ими (СУБД) в интернете никуда. Большая часть современных CMS и «самописных» движков, на которых развернуты сайты, используют MySQL. Поэтому ее можно смело назвать «всея интернетной» системой управления базами данных.
В этой статье мы рассмотрим все основные способы восстановления утраченной информации. По мере написания материала будем «набирать обороты», и начнем с самых простых методов, ближе к концу коснемся более сложных. Каждый из рассмотренных методов постараемся иллюстрировать практическими примерами. Что касается синтаксиса запросов, то мы не будем подробно останавливаться на описании параметров каждой команды. Благо, в интернете этой справочной информации «с лихвой».
Быстрый способ восстановления
Чаще всего работа с БД в интернете происходит через phpMyAdmin, который является веб-интерфейсом для данной СУБД. Чтобы восстановить базу MySQL вручную:
Зайдите в phpMyAdmin и выберете нужную БД.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!Перейдите по вкладке «Импорт», которая расположена в главном верхнем меню.
В разделе «Импортируемый файл» выберете источник резервной копии нужной базы.
Нажатие на кнопку «Ok».
После этого вместо текущей версии БД будет загружена ранее сохраненная. Стоит отметить, что данный веб-интерфейс не подходит для бэкапа больших массивов данных, поскольку максимальный поддерживаемый размер загружаемой базы составляет всего 2 Мб.
В phpMyAdmin не реализована функция автоматического создания резервных копий, а лишь вручную. Весь процесс резервирования происходит через вкладку «Экспорт». Здесь вы можете задать формат копии, способ вывода и экспорта.
Работа через MySQLdump
MySQLdump представляет собой веб-приложение, работающее на стороне сервера. Оно предназначено для восстановления баз MySQL из резервных копий, созданных с помощью приложения. Чтобы сильно «не зарываться», мы продемонстрируем создание простого бэкапа и восстановление из него БД. В качестве площадки для эксперимента используем самый популярный локальный сервер Рунета Denwer.
Для начала нужно скачать MySQLdump и поместить его по следующему адресу: F:\Webserver\usr\local\mysql-5.5\bin
MySQLdump является консольным приложением, поэтому вся последующая работа с ним будет происходить через командную строку (cmd.exe). Теперь поэтапно:
Запускаем Denwer.
Через командную строку заходим на виртуальный диск (в примере – это диск Z).
Заходим в папку, где «лежит» MySQLdump.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!После этого запускаем утилиту на выполнение. Перед тем, как восстановить БД MySQL, в качестве примера создадим в папке bin резервную копию базы my_db1, и назовем бэкап «db1». Для этого мы используем команду mysqldump.
Теперь восстановим из созданной копии (db1) другую базу данных. Для этого используем команду mysql.
Код примеров использования обеих команд:
C:\Users\домашний>Z: Z:\>cd usr\local\mysql-5.5\bin Z:\usr\local\mysql-5.5\bin>mysqldump -uroot my_db1>db1.sql Z:\usr\local\mysql-5.5\bin>mysql -uroot db2<db1.sql
C:\Users\домашний>Z: Z:\>cd usr\local\mysql-5.5\bin Z:\usr\local\mysql-5.5\bin>mysqldump -uroot my_db1>db1.sql Z:\usr\local\mysql-5.5\bin>mysql -uroot db2<db1.sql |
Если немного присмотреться к коду, то можно заметить, что обе команды имеют общий синтаксис. Единственное, что их различает – это названия источников данных и копий. А также знак направления движения данных («<», «>»).
uroot – это имя пользователя. Оно указывается сразу после параметра u (без пробела). Кроме этого синтаксис команд включает еще несколько параметров. Среди них: пароль, адрес удаленного хоста. С помощью команды mysqldump можно экспортировать БД в различные форматы, сжимать данные. Также это проверенный способ, как можно восстановить таблицу MySQL.
Утилита MySQLdump (с помощью одноименной команды) позволяет экспортировать базы в простом текстовом формате (.txt). А так как текст обладает высокой степенью сжатия, то это эффективный способ уменьшения объемов бэкапов, в ситуации, когда наблюдается «дефицит» серверного пространства.
Что можно сделать еще
Кроме рассмотренных двух основных методов для восстановления данных MySQL можно использовать еще несколько консольных утилит:
MySQL-консоль
Mysqlbinlog – для формирования бэкапов программа импортирует данные из серверных журналов бинарных логов. В них записываются все пользовательские и системные запросы (в бинарном коде), после выполнения которых были изменены данные баз.
Также для популярных CMS разработано множество специализированных плагинов. Например, для WordPress:
Keep Backup Daily.
UpdraftPlus Backup and Restoration.
Perfect Dashboard.
Более подробно со списком рекомендуемых плагинов для восстановления и создания резервных копий можно ознакомиться здесь.
Как видите, восстановление MySQL не является такой уж невыполнимой задачей. Все утраченные БД и таблицы можно «вернуть» на место. При этом используются как «ручные» средства, так и специализированные расширения для CMS. Вам осталось выбрать лишь самое подходящее решение. Для более глубокого ознакомления с работой базы данных MySQL, рекомендую пройти Вам наш курс.
Бесплатный курс по PHP программированию
Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC
В курсе 39 уроков | 15 часов видео | исходники для каждого урока
Получить курс сейчас!Хотите изучить MySQL?
Посмотрите курс по базе данных MySQL!
Смотретьwebformyself.com
Удаление больших объемов данных из Mysql таблиц
Если вам приходится удалять десятки и сотни тысяч записей из таблиц, вы знаете, что эта работает медленно. Ясно, ведь Mysql в этом случае должен пройтись по каждой записи и удалить её с диска.
В .io мы используем (т.н.) оконные таблицы. Это когда вы храните данные в таблице всего за последний час (или другой промежуток). А значит, вы не только много туда пишите, но и много удаляете. В случае, если потеря данных не фатальна, можно использовать MEMORY таблицы. Однако для большинства случаев это, конечно, не подойдет. Ведь терять данные всякий раз при перезагрузке сервера не хочется.
Почему DELETE работает медленно
Прежде всего, нужно понимать, что удаление 10 тыс. записей — это 10 тыс. удалений по одной записи. А каждое удаление — это несколько операций записи изменений (в данных и индексах) на диск.
Кроме этого, прежде чем удалить записи, Mysql должен их сначала выбрать. А в этом случае используются те же правила, что и при выборках. Если индексы настроены плохо, операция DELETE станет еще медленнее.
Установка индексов
Для проверки использования индексов достаточно DELETE заменить на SELECT count(*):
DELETE FROM users WHERE ts < 5
EXPLAIN SELECT count(*) FROM users WHERE ts < 5
Тогда сможем убедиться, что проблема в индексе:
+----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+ | 1 | SIMPLE | users | ALL | NULL | NULL | NULL | NULL | 3224 | Using where | +----+-------------+-------+------+---------------+------+---------+------+------+-------------+
Использование партиций
Индексы помогут при удалении сравнительно небольших объемов. Однако, если приходится постоянно удалять много (как в нашем случае), стоит посмотреть на партиционирование.
Партиционирование позволяет разбить таблицу на несколько физических блоков
Это значит, что у нас будет возможность манипулировать отдельными партициями. И вместо удаления большого количества записей, мы сможем обьединить их в один блок (партицию) и удалить его одной операцией.
Чтобы проверить это на практике, создадим простую таблицу такой структуры:
tmp: id | title | datetime
Наполним ее тестовыми данными (несколько десятков тысяч записей) и удалим данные:
DELETE FROM tmp WHERE datetime < '2017-05-31 11:00:00'
Запрос выполнился довольно медленно, удалив около 25 тыс. записей:
Query OK, 25750 rows affected (0.27 sec)
Убедимся, что проблема не в индексе (мы его создали, но на всякий случай проверим):
EXPLAIN SELECT count(*) FROM tmp WHERE datetime < '2017-05-31 11:00:00';
Увидим, что индекс используется — тут все хорошо:
+----+-------------+-------+------------+-------+---------------+----------+---------+------+-------+----------+--------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+---------------+----------+---------+------+-------+----------+--------------------------+ | 1 | SIMPLE | tmp | NULL | range | datetime | datetime | 5 | NULL | 28395 | 100.00 | Using where; Using index | +----+-------------+-------+------------+-------+---------------+----------+---------+------+-------+----------+--------------------------+
Проверим также системную переменную, которая показывает количество удаленных записей из всех InnoDB таблиц:
SHOW GLOBAL STATUS LIKE 'Innodb_rows_deleted'\G
Variable_name: Innodb_rows_deleted Value: 25750
Мы проводим эксперимент в изолированной среде, поэтому других удалений тут не происходит.
Выбор схемы партиционирования
Поскольку мы решаем проблему удаления, нам необходимо иметь схему, в которой мы сможем удобно удалять (чистить) целые партиции. Нам необходимо удалять данные за час, поэтому мы создадим HASH партицию на основе часа из поля datetime:
ALTER TABLE tmp PARTITION BY hash( HOUR(datetime) ) PARTITIONS 24;
Проверим, как выглядит распределение наших данных по партициям:
SELECT PARTITION_ORDINAL_POSITION, TABLE_ROWS, PARTITION_METHOD
FROM information_schema.PARTITIONS
WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'tmp';
+----------------------------+------------+------------------+ | PARTITION_ORDINAL_POSITION | TABLE_ROWS | PARTITION_METHOD | +----------------------------+------------+------------------+ | 1 | 0 | HASH | | 2 | 0 | HASH | | 3 | 0 | HASH | | 4 | 0 | HASH | | 5 | 0 | HASH | | 6 | 0 | HASH | | 7 | 0 | HASH | | 8 | 0 | HASH | | 9 | 0 | HASH | | 10 | 0 | HASH | | 11 | 25394 | HASH | | 12 | 31171 | HASH | | 13 | 0 | HASH | | 14 | 0 | HASH | | 15 | 0 | HASH | | 16 | 0 | HASH | | 17 | 0 | HASH | | 18 | 0 | HASH | | 19 | 0 | HASH | | 20 | 0 | HASH | | 21 | 0 | HASH | | 22 | 0 | HASH | | 23 | 0 | HASH | | 24 | 0 | HASH | +----------------------------+------------+------------------+
Как видим, данные в таблице помещены только в две партиции. Они соответствуют текущему и предыдущему часу. Что нам нужно — это очищать партицию за тот час, который нам уже не нужен. Для этого существует операция TRUNCATE :
ALTER TABLE tmp TRUNCATE PARTITION p11
Если мы проверим счетчик удаленных InnoDB записей, увидим там:
Variable_name: Innodb_rows_deleted Value: 25750
Это подтверждает тот факт, что TRUNCATE работает принципиально не так как DELETE. Вместо удаления каждой записи, таблица (или ее партиция) очищается на уровне структуры. Если очень грубо, то Mysql удаляет старый файл данных и создает новый. А эта операция выполняется значительно быстрее построчного удаления.
TL;DR
Если вам нужно удалять большие объемы данных из Mysql, следуйте двум советам:
- Стройте индексы для ускорения выборки при удалении, заменив DELETE FROM на EXPLAIN SELECT count(*) FROM.
- Используйте партиционирование и TRUNCATE PARTITION для эффективного удаления большого количества строк.
ruhighload.com