Проверка, восстановление и оптимизация таблиц в базе данных

Проверка, оптимизация и восстановление таблиц базы данных процесс не всегда тривиальный. Данную процедуру можно произвести средствами PhpMyAdmin и ему подобных утилит, а также, некоторые из CMS умеют выполнять данную процедуру. Но все же самым надежным будет выполнение данного кода из консоли сервера. Для проведения процедуры проверки всех таблиц базы данных, необходимо в консоли сервера (не заходя в MySQL) выполнить команду:

Для автоматического восстановления всех таблиц нужно выполнить команду:

Для оптимизации всех таблиц нужно выполнить команду:

Если нужно восстановить только одну таблицу в базе данных, то поможет команда:

Если нужно восстановить много таблиц в одной базе данных, то поможет команда:

  Взято з: https://pai-bx.com/wiki/mysql/1986-check-repair-and-optimize-tables-in-a-database/    

Read more

Восстановление баз данных InnoDB после сбоев в MySQL

Возникла у меня проблема с выходом из строя баз данных MySQL. Причем, проблема проявляла себя в виде не запуска сервиса MySQL. При этом в логах довольно было мало информации. Однако, запустив mysql_safe все таки логи выдали ошибки. Из которых стало понятно, что база несколько испортилась (до этого пришлось физически выключать сервер, т.к. сервис MySQL завис от количества посещений и сервер длительное время не хотел перезагружаться). Провозившись несколько часов вывелся рецепт лечения: Лог ошибок может выдавать в случае сбоя нечто подобное:

Отправляет в документацию по восстановлению :))) 1. Переводим сервис в защищенный режим MySQL. Останавливаем сервис, если он пытается запуститься.

Далее, добавляем строчки в конфиг MySQL my.cnf:

Причем, параметр innodb_force_recovery=3 увеличиваем, начиная с 1 и так до тех пор, пока не запустится сервис (максимум это значение может быть 8). Вот, что означает этот параметр: Mode 1 — не «отваливается» MySQL, когда он видит коррумпированные страницы. Mode 2 — не запускает фоновые операции. Mode 3 — Не пытается откатить транзакции. Mode 4 —  не рассчитывает статистику или не применяет сохраненные/буферизированные изменения. Mode 5 —  Не смотрите на log-и отката при запуске. Mode 6 — Не прокрутки вперед от повтора логов (ib_logfiles) во время пуска. 2. Делаем бекап всех данных базы данных (после запуска сервера).

3. Переименовываем всю папку с данными MySQL (потом, когда все заработает – ее можно будет удалить) 4. Разворачиваем новый кластер MySQL. Как это делается, описано в статье: Инициализация базы данных MySQL, сброс пароля MySQL на Linux Ubuntu 18.04 5. Запускаем MySQL и восстанавливаем данные:

6. Перезагружаем […]

Read more

Решение проблемы с правами доступа MySQL из-за сервиса AppArmor

При перезагрузке MySQL столкнулся с тем, что сервис не запускался. При более подробном анализе логов, увидел, что стало ругаться на права доступа в сервисе AppArmor. Выводились сообщения, подобные таким:

Исправляется это дело внесением правил в файл (посредине файла) /etc/apparmor.d/usr.sbin.mysqld Подобные правила:

Конечно, правила формируются в зависимости от сообщений. В каталогах можно применять маски, например: * – любое название. Чтоб изменения вступили в силу нужно перезагрузить сервисы:

   

Read more

Инициализация базы данных MySQL, сброс пароля MySQL на Linux Ubuntu 18.04

В новых версиях MySQL есть свои нюансы по сбросу пароля MySQL. У меня даже при развертывании первичной базы пустой базы не удавалось подключаться. Некоторое время пришлось повозиться, побеждая данную проблему. Дальше, я приведу рецепт, как инициализировать базу данных и сбросить пароль рута в MySQL. 1) Останавливаем текущую службу MySQL:

  2) Создаем каталог /var/run/mysqld который будет использоваться процессом MySQL для хранения и доступа к файлу сокета, а также даем необходимые права:

  3) Запускаем MySQL со следующими параметрами:

  4) Убеждаемся, что процесс запущен:

  5) На этом этапе мы можем получить доступ к MySQL без пароля. Входим командой:

  6) Затем сбрасываем пароль root следующей последовательностью запросов:

  Мы установили пароль “123” для пользователя “root”. 7) Завершаем текущий mysqld процесс:

  [1]+ Завершён sudo /usr/sbin/mysqld –skip-grant-tables –skip-networking 8) Запускаем службу MySQL:

  9) Теперь мы можем войти, используя только что установленный пароль для рута:

  mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.7.22-0ubuntu18.04.1 (Ubuntu) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement. mysql>   10) Так же, база попросила установить пароль с помощью Alter User:

    Источник: http://ikode.ru/articles/kak-sbrosit-parol-root-mysql-na-ubuntu-1804      

Read more

Оптимизация SQL запросов для ускорения сайтов (MySQL)

От автора: вы знаете, что быстрый сайт == счастливые пользователи, выше рейтинг в google и повышенная конверсия. Возможно, вы думаете, что ваш сайт на WordPress максимально быстрый: вы смотрите за производительностью по статьям «лучшие практики настройки сервера», «решение проблем с медленным кодом» и «перемещение изображений на CDN». Но все ли это? В динамических сайтах типа WordPress с базой данных у вас будет одна и та же проблема – запросы к базе данных замедляют сайт. В этой статье я покажу вам, как делается оптимизация SQL запросов, вызывающих замедления, и как понять, в чем проблема в этих запросах. Я буду использовать реальный запрос, который мы недавно правили, так как он замедлял портал покупателя deliciousbrains.com. Определение Первый шаг в решении медленных SQL запросов – найти их. Ashley восхваляла плагин отладки Query Monitor в блоге. Бесценным этот инструмент делает функция плагина запросов к базе данных для определения медленных SQL запросов. Вы можете фильтровать запросы по коду или компоненту (плагин, тема или ядро WordPress), которые их совершают. А также плагин умеет выделять повторяющиеся и медленные запросы: Если не хотите ставить плагин отладки на продакшн сайт (может, вас волнует производительность), можете запустить MySQL Slow Query Log, который логирует все запросы, занимающие определенное время на выполнение. Инструмент очень легко настроить и указать папку для логирования запросов. Так как это серверное решение, то удар на производительность будет меньше, чем плагин отладки. Однако когда он не нужен, его нужно отключить. Понятие После нахождения медленных запросов далее необходимо попытаться понять, что их замедляет. Недавно при разработке нашего сайта мы нашли […]

Read more

VDoc – веб-система коллективной работы над файловыми версиями документов с сохранением истории изменений, высоким уровнем защищенности информации и эффективным резервным копированием

Презентация системы VDoc в формате PowerPoint (скачать). Программный продукт VDoc предназначен для коллективной работы с документами в произвольных форматах (например, Word, Excel и т.п.) с сохранением истории изменений, централизованным хранением данных с возможностью удобного резервного копирования информации и разнесение данных по разным накопителям данных и серверам. Возможности системы VDoc: 1. Система VDoc представляет собой веб-интерфейс и работает по протоколам http или https (протокол с шифрацией трафика). 2. Программный продукт VDoc – кросс-платформенный. Серверная часть системы может работать в Windows, Linux, MacOS. Пользователи же могут работать практически в любой операционной системе (Windows, Linux, MacOS, Android, IOS, FreeBSD и т.п.) и на любом устройстве (ноутбук, персональный компьютер, мобильный телефон, планшет, телевизор и т.п.), где есть современные браузеры. 3. Система VDoc – система с открытым исходным кодом. Вы можете приобрести систему вместе с исходными кодами и при необходимости изучать исходные коды, модифицировать систему под свои потребности. 4. В качестве сервера базы данных используется наиболее популярные кросс-платформенные СУБД: MsSQL, Postgresql. 5. Объем данных, который может вестись в системе – не ограниченный. Вы не увидите большой разницы в работе между массива информации размером мегабайты и данными размером во много терабайт. 6. Вирусы и другие вредоносные программы не смогут уничтожить данные, т.к. не могут получить такого доступа… 7. Пользователи не могут уничтожить данные. Т.к. все изменения логируются и сохраняются, а файлы не могут пользователи удалять (могут только помечать на удаление). 8. VDoc прост в использовании. Не нужно устанавливать программу – просто заходите на сайт и работаете. Интерфейс – интуитивно-понятный с всплывающими подсказками. Для работы VDoc нет […]

Read more

Резервное копирование mysql, программа Mysqldump

Создание резервных копий баз данных с помощью Mysqldump В общем случае, команда для создания резервной копии базы данных, с помощью программы Mysqldump, выглядит следующим образом

-u [ имя пользователя ] – имя пользователя с правами, достаточными для создания резервной копии. -p [ пароль ] – пароль пользователя, указывается без пробела перед ним –databases [ название базы данных ] – Короткий вариант -B, название одной или нескольких баз данных для дампа. При создании резервной копии одной базы данных, опцию –databases, писать не обязательно, здесь я использовал ее для большей наглядности и однозначности. То есть название базы данных можно прописать сразу за паролем пользователя. > – перенаправление вывода команды mysqldump, в файл дампа.   Создадим резервную копию одной базы данных:

Обратите внимание на отсутствие пробела после опции -p, сразу указываем пароль. В данном случае будет создан файл резервной копии, содержащий структуру и данные, /backup/workdb.sql. Если вам не нужны данные из этой базы, а достаточно просто сохранить структуру таблиц, можно воспользоваться следующим вариантом:

Ключ –no-data ( сокращенный вариант -d ), указывает mysqldump, не скидывать данные в дамп. Так-же есть возможность создавать дампы, только необходимых таблиц, определенной базы данных:

Вышеприведенная команда, создает резервную копию таблиц access и users, указанных вслед за опцией –tables, из базы данных drupal и сохраняет в файл /backup/drupal2tables.sql. Для создания дампа только структуры таблиц, без данных, используется та-же опция –no-data.

Для создания резервной копии нескольких баз данных, достаточно перечислить их названия после опции –databases ( -B ):

Что-бы создать резервную копию всех имеющихся баз […]

Read more

Оптимизация, дефрагментация таблиц MySQL InnoDB

Со временем, таблицы InnoDB в MySQL начинают сильно фрагментироваться и как результат, “тормозить”. Поэтому, их время от времени нужно “дефрагментировать”. Вот такой простейший скрипт defrag.php решит проблему фрагментации:

Выполняется данный скрипт из консоли:

 

Read more

Настройка MySQL

Основное конфигурирование MySQL осуществляется с помощью файла /etc/my.cnf или /etc/mysql/my.cnf Указание кодировок и collation В секцию [mysqld] добавим строки:

character-set-server – кодировка для всего сервера; collation-server – порядок символов и строк на основе алфавитного порядка и классов эквивалентности; init-connect – строка, выполняемая для каждого клиента при соединении. Ограничение количества, таймауты и источники соединений

Увеличение числа открытых файлов В большинстве Linix-систем по умолчанию лимит открытия файловых дескрипторов установлен в 1024, для работы этого недостаточно. Проверим текущие опции:

Внесем требуемые лимиты в /etc/security/limits.conf

Динамически изменим текущие лимиты:

Проверим soft limit:

и hard limit

Текущие лимиты в MySQL проверим SQL-запросом:

Оптимизация MySQL для MyISAM Оптимизация параметров MySQL позволяет значительно увеличить производительность MyISAM. Буферы Основными параметрами являются key_buffer_size (буфер для работы с ключами и индексами) и sort_buffer (буфер для сортировки).

При наличии 16Гб памяти и более, рекомендуется увеличить key_buffer_size до 128M-256M. Если Вы не используете MyISAM таблицы, рекомендуется установить размер key_buffer_size в 32Мб для хранения индексов временных таблиц. Кэши Кэш запросов указывается в опции query_cache_size, ограничение на кэшируемый элемент в query_cache_limit, кэш открытых таблиц в table_open_cache.

Будьте внимательны при установке завышенного значения query_cache_size, т.к. это может привести к ожиданию блокировок (Be careful not to set the size of the cache too large. Due to the need for threads to lock the cache during updates, you may see lock contention issues with a very large cache). Мы не рекомендуем устанавливать значение больше 256M. Параметр thread_cache_size указывает количество тредов (threads), уходящих в кеш при отключении […]

Read more

Как отключить строгий режим MySQL

Строкий режим появился еще в MySQL 5.1, но стал обязательным в MySQL 5.7. Строгий режим отключается в конфигурационных файлах:

Необходимо выставить такие значения:

       

Read more
1 2