Mysql

Mysql как выйти из базы данных: Как выйти из командной строки MySQL?

Содержание

Как показать пользователей в MySQL

Вы когда-нибудь хотели получить список всех пользователей на вашем сервере MySQL? Есть команды для отображения баз данных и таблиц, но нет команды в MySQL “показать пользователей”.

Эта статья объясняет, как перечислить все учетные записи пользователей на сервере базы данных MySQL через командную строку.

Прежде чем вы начнете эту статью, мы предполагаем, что у вас уже есть MySQL или сервер MariaDB, установленный в вашей системе. Если нет, вы можете легко установить его, следуя одному из руководств ниже:

Все команды будут выполнены внутри оболочки MySQL как пользователь root.

Чтобы получить доступ к оболочке MySQL, введите следующую команду и введите пароль пользователя root MySQL при запросе:

Если вы еще не установили пароль для пользователя root в MySQL можно опустить переключатель -p.

Если вы забыли ваш MySQL пароль root, вы можете сбросить его, следуя этой инструкции.

MySQL хранит информацию о пользователях, в таблице с именем user в базе данных mysql. Чтобы получить список всех учетных записей пользователей в MySQL, можно использовать заявление SELECT и извлечь все строки из таблицы mysql.users:

SELECT User, Host FROM mysql.user;

 

Вывод должен выглядеть примерно так:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | localhost |
| luke             | %         |
| yoda             | %         |
| alex             | 10.10.0.6 |
| alex             | 10.10.0.9 |
| andeyex          | localhost |
| anton            | localhost |
| sniper           | localhost |
+------------------+-----------+
8 rows in set (0.00 sec)

 

Команда выше показывает только две колонки из таблицы  mysql.user (User и Host), в этой таблице содержится более 40 столбцов, таких как PasswordSelect_privUpdate_priv … и т. д.

Учетная запись пользователя в MySQL состоит из имени пользователя и имени хоста.

Вы можете использовать оператор desc mysql.user; для отображения информации о каждом столбце таблицы. Как только вы узнаете имя столбца, запустите запрос по выбранным данным.

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

SELECT User, Host, Password, password_expired FROM mysql.user;

 

+----------------+-----------+-------------------------------------------+------------------+
| User           | Host      | Password                                  | password_expired |
+----------------+-----------+-------------------------------------------+------------------+
| root           | localhost |                                           | N                |
| luke           | %         | *AKFG85M09GH96LG058AKHUYOLN76258E149A7EC8 | N                |
| yoda           | %         | *9550E004046348198A143A115550E1262209FB6F | N                |
| alex           | 10.10.0.6 | *F91C86B486B945C083BKJJF85JF94J75KHD187EC | Y                |
| alex           | 10.10.0.9 |                                           | Y                |
| andreyex       | localhost | *17F2B1E480292KGFG587DJFR85U7JG9FFCA005AF | N                |
| anton          | localhost | *74409C8DB596J6JG86J7GKT9G76JY9H6EDBFC64A | N                |
| sniper         | localhost | *7B3022FCAECKFI6897J9H96J6IG850KYOHD95745 | N                |
+----------------+-----------+-------------------------------------------+------------------+
8 rows in set (0.00 sec)

 

В этой статье мы показали вам, как получить список всех учетных записей пользователей MySQL, извлекая данные из пользовательской таблицы в базе данных mysql.

Не стесняйтесь оставить комментарий, если у вас есть какие-либо вопросы.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как восстановить базу MySQL — из дампа и другие способы 🛠️

Восстановления базы из дампа

Через phpMyAdmin

В основном, пользователи работают с MySQL через панель phpMyAdmin, поэтому ниже приведен наиболее простой способ сделать восстановление из бэкапа вручную. Чтобы восстановить базу из дампа, нужно выполнить несколько действий:

  1. Открыть phpMyAdmin и выбрать требуемую БД.
  2. Затем перейти по ссылке «Импорт» – она находится в главном меню.
  3. В ней нужно найти и открыть раздел «Импортируемый файл», где нужно указать источник бэкапа базы.
  4. Подтвердить операцию нажатием «Вперед».
  5. Теперь остается только перезагрузить сервер MySQL.

Как увеличить объем импортируемых баз данных

К сожалению, описанный выше способ восстановить базу данных MySQL подходит в основном для небольших баз данных. Ведь в phpMyAdmin «из коробки» установлены ограничения на максимальный размер загружаемых файлов на сервер в 2 Мб.

Чтобы обойти дефолтные ограничения phpMyAdmin, нужно увеличить размер разрешенных к загрузке файлов. Это можно сделать как в настройках самой программы, так и на стороне сайта/сервера.

Во втором случае (в файлах php.ini /.htaccess) потребуется увеличить значения по умолчанию ряда опций, влияющих на загрузку:

  • upload_max_filesize («максимальный размер загружаемого файла»). Первоначальное значение: «2Mб».
  • post_max_size («максимальный размер POST-запросов»). Значение параметра должно быть больше, чем у «upload_max_filesize».
  • max_execution_time («время исполнения скрипта»). Чтобы снять ограничения с параметра, ему нужно присвоить значение «0».
  • max_input_time («время обработки входящих запросов»).
Способы увеличения лимитов на исполнение php-скриптов
  1. В настройках конфигурационного файла phpMyAdmin (config.inc.php). В файл нужно добавить строки:
$ cfg['UploadDir'] = './upload';

После чего добавить туда же переменную, снимающую ограничения со времени исполнения скриптов (после загрузки базы данных ее лучше убрать):

$ cfg['ExecTimeLimit'] = 0;
  1. В пользовательском файле сайта (php.ini), где хранятся настройки исполнения php-скриптов. Файл «php.ini» можно найти, если открыть в браузере ранее добавленный (в корень сайта) php-файл. Например, ввести запрос вида «https://mysitename.com/myphpinfo.php», где «mysitename.com» — имя сайта, а «myphpinfo.php» — название php-файла. В открывшемся окне нужно найти параметры «Loaded Configuration File» или «Configuration File (php.ini) Path», где и будет указан путь к «php.ini».

Добавляем в конце файла строки:

post_max_size = 500M
upload_max_filesize = 400M
max_execution_time = 3000
max_input_time = 6000
  1. В конфигурационном файле сервера (.htaccess), отвечающем, в том числе, за настройку обработки файлов на определенном сайте. Чтобы изменения сработали для всех файлов сайта, «.htaccess» должен обязательно находится в его корневой папке.

Добавляем в файл строки:

php_value post_max_size 500M
php_value upload_max_filesize 400M
php_value max_execution_time 3000
php_value max_input_time 6000

Восстановление новой базы данных

1. Если нужно восстановить БД MySQL как новую, порядок действий будет отличаться. Сначала нужно создать базу данных, с тем же названием, как и на сервере.

Пример:

mysql> CREATE DATABASE customers_db;

2. Далее следует загрузить файл дампа SQL с помощью команды «mysql»:

$ mysql -u [username] -p[password] [db_to_restore] <  /(Путь к файлу)/ [backupfile.sql]

Пример:

$ mysql -u root -pSeCrEt customers_db < /(Путь к файлу)/customers_db_backup.sql

3. В случае, когда дамп был сделан до того, поможет следующая команда:

$ gunzip < [backupfile.sql.gz] | mysql -u [username] -p[password] [dbname]

Пример:

$ gunzip < customers_db_backup.sql.gz | mysql -u root -pSeCrEt customers_db

Следовательно, этими командами можно осуществить восстановление базы данных MySQL без особых трудностей.

Восстановление баз данных с помощью таблиц

Если пользователь не смог сделать бэкап в нужный момент, ему ничего не остается, как приступать к восстановлению утерянных или поврежденных таблиц. Этот процесс можно существенно упростить, если руководствоваться предложенными ниже инструкциями.

Форматы таблиц

Чаще всего, если требуется провести восстановление таблиц в MYISAM-формате, трудностей возникнуть не должно. В интерфейсе phpMyAdmin доступны штатные средства, позволяющие в короткие сроки вернуть базу данных в рабочее состояние.

Другой популярный формат таблиц — InnoDB. Он обладает более высоким быстродействием, снабжен функцией автоматического восстановления и устойчив к сбоям. Однако, для его ручного ремонта потребуется приложить некоторые усилия.

Общий принцип восстановления

Восстановление базы с использованием формата InnoDB можно выполнить благодаря опции innodb_force_recovery. Она будет находиться в конфигурационном файле MySQL.

Перед тем, как ее запустить, можно попытаться получить результат при помощи команды select … into out file. В большинстве случаев она дает возможность сохранить информацию, не прибегая к дополнительным операциям.

Однако, если select … into out file не сработала (например, помешали незаконченные процессы), чтобы восстановить базу из файлов .frm, остается прибегнуть к расширенному параметру innodb_force_recovery.

1. Сначала нужно прописать в конфигурационном файле MySQL опцию innodb_force_recovery.

Расположение конфигурационного файла может отличаться в зависимости от операционной системы. Искать его нужно по следующим путям, согласно указанному приоритету — сверху вниз.

В ОС Windows:

  1. %WINDIR%\my.ini (%WINDIR%\my.cnf)
  2. C:\my.ini (C:\my.cnf)
  3. BASEDIR\my.ini (BASEDIR\my.cnf)

«WINDIR» — папка установки Windows. Обычно, путь к ней выглядит так: C:\WINDOWS.
«BASEDIR» — папка, где установлена база MySQL. Например, для MySQL 8.0 полный путь к ней выглядит так: C:\PROGRAMDIR\MySQL\MySQL 8.0 Server (где «PROGRAMDIR» — папка c программами Windows, обычно это Program Files).

В дистрибутивах Linux:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf

«SYSCONFDIR» — подкаталог, который использовался для компилирования MySQL (по умолчанию — etc).

В файле предусмотрена возможность установить для innodb_force_recovery несколько параметров. По умолчанию опция будет иметь вид «innodb_force_recovery = 0». Если установить другие числа (от 1 до 3) можно не только восстановить данные таблицы MySQL, но и процессы, незавершенные из-за аварийной остановки.

2. После открытия my.cnf или my.ini необходимо найти в нем блок [mysqld], куда и нужно прописать innodb_force_recovery. Пример:

[mysqld] 
innodb_force_recovery = 1

Чтобы применить данный параметр, следует перезапустить сервер MySQL.

Восстановить структуру таблицы MySQL подобным образом можно только в случае, если имеются сохраненные копии файлов данных, журнала InnoDB и таблиц .frm InnoDB, а также конфигурационного файла my.cnf или my.ini.

Замена значений параметра

Главное, чего нужно придерживаться во время работы с innodb_force_recovery – последовательно менять значения параметров от 1 до 3 и перезапускать после этого сервер.

Работать с изменением значений максимально осторожно. Чем выше выбрано значение, тем большее количество информации будет сохранять система. Соответственно, вырастет нагрузка на сервер MySQL и риск потери данных без возможности их восстановить.

  • 1 (SRV_FORCE_IGNORE_CORRUPT) — позволит серверу запуститься даже в случае обнаружения поврежденной таблицы.
  • 2 (SRV_FORCE_NO_BACKGROUND) — предотвращает запуск основного процесса и других процессов очистки. Иными словами, если случится сбой во время операции очистки фоновых процессов он будет предотвращен благодаря этому значению.
  • 3 (SRV_FORCE_NO_TRX_UNDO) — не происходит откат транзакций по завершению восстановления после сбоя.
  • 4 (SRV_FORCE_NO_IBUF_MERGE) — предотвращает операции объединения вставленных данных из буфера, при этом не собираются данные статистики. Устанавливается режим InnoDB «только для чтения».
  • 5 (SRV_FORCE_NO_UNDO_LOG_SCAN) — не учитываются логи отмены (undo logs) при запуске базы данных. InnoDB учитывает даже незавершенные операции как выполненные. Устанавливается режим InnoDB «только для чтения».
  • 6 (SRV_FORCE_NO_LOG_REDO) — отключение ведения логов отката изменений (redo logs) в связи с восстановлением. Оставляет таблицы в неактуальном состоянии, что в свою очередь может внести больше повреждений в Б-деревья и другие структуры базы данных. Устанавливается режим InnoDB «только для чтения».

Пользоваться значениями 4, 5 и 6 не стоит тем, кто не имеет достаточного опыта работы с MySQL таблицами. С их применением в несколько раз возрастает вероятность полной потери информации.

Восстановление пароля

Ситуации, когда может потребоваться сброс и восстановление пароля root, также встречаются часто. Для решения этой проблемы можно воспользоваться одним из предложенных ниже способов.

Использование init-file

Во время запуска MySQL есть возможность сообщить сервису о файле, в котором находятся исполняемые команды SQL. Его адрес следует указать с помощью параметра «init-file».

1. В первую очередь необходимо создать файл «init-file»:

vi /home/user/init-file.txt

2. Далее нужно добавить в файл следующую строку:

UPDATE mysql.user SET password=password('новый пароль') WHERE user='root';

3. Далее следует отключить сервис, если он работает:

sudo systemctl stop mysql

4. Затем можно запустить свой файл:

sudo mysqld --user=mysql --init-file=/home/sergiy/init-file.txt --console

5. Остается подождать немного, пока все будет работать, как надо, и далее остановить данный процесс. В терминале будет отображен вывод «started as proccess» и PID (номер-идентификатор) процесса. Последний как раз и нужно выключить. К примеру*:

sudo kill -TERM 1111

* Значение PID приведено для примера. Следует заменить его на актуальное.

6. Теперь можно запустить MySQL стандартным способом и попробовать авторизоваться с помощью нового пароля:

sudo systemctl start mysql
mysql -u root -p

Использование skip-grant-tables

Помимо — init-file можно выполнить сброс пароля с использованием другого параметра —skip-grant-tables. Если запустить с ним сервис, будет пропущена загрузка данных пользователей, что позволяет войти без необходимости вводить логин и пароль.

1. Здесь также сначала требуется отключить базу данных:

udo systemctl stop mysqls

2. Дальше нужно запустить вручную MySQL следующей командой:

sudo mysqld --user=mysql --skip-grant-tables

3. Теперь можно открыть консоль для работы с MySQL:

mysql -u root

4. Поскольку загрузка была осуществлена без привилегий пользователей, таблицы с ними теперь нужно подгрузить:

FLUSH PRIVILEGES;

5. На этой стадии можно менять пароль пользователя root:

UPDATE mysql.user SET password=password('новый пароль') WHERE user='root';

6. Можно закрывать консоль управления:

Exit (quit)

7. Остается выключить сервис*, как и в приведенном выше способе:

sudo kill -TERM 1111

* Значение PID приведено для примера. Следует заменить его на актуальное.

8. И, наконец, запустить MySQL в стандартном режиме работы:

sudo systemctl start mysql

9. После этого появится возможность авторизации с помощью нового пароля:

sudo mysql -u root -p

Создание (удаление) базы данных 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"

На входе этому скрипту нужно задать два параметра:

  1. Имя базы данных (у пользователя будет такое же имя)
  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 и их пользователей на сервере, а также автоматизировать работу по их созданию и удалению.

Заберите ссылку на статью к себе, чтобы потом легко её найти 😉

Выберите, то, чем пользуетесь чаще всего:

Спасибо за внимание, оставайтесь на связи! Ниже ссылка на форум и обсуждение ; )

MySQL – восстановление повреждённых таблиц

Как известно, любые повреждения происходят в результате каких-либо внешних факторов. Состояние внутренней структуры таблиц баз данных (БД), в данном случае таблиц MySQL, всецело определяет, насколько надёжным будет использование самой БД. На высоконагруженных серверах БД повреждение таблиц отнюдь не редкость. Администраторам, да и самим пользователям порой приходится прибегать к починке структуры таблиц своих БД. О том, по каким причинам повреждаются таблицы и какие существуют методы решения данной проблемы на примере MySQL и будет изложено в данной статье.

Причины повреждения таблиц

Если структура таблиц или хранимые в ней данные были повреждены, то MySQL не сможет прочесть их содержимое. Сами же таблицы обслуживаются специальными движками, которые производят, помимо всего прочего, ещё и чтение и запись сданных. Во время этих процессов могут возникать всевозможные непредвиденные ситуации, в результате которых возникают сбои. Хотя MySQL и способна обрабатывать подобные ситуации, но всё же она не всесильна и всего предусмотреть невозможно. Самыми распространёнными причинами повреждения таблиц обычно являются следующие:

  • аппаратный сбой, когда произошло внезапное отключение системы, например из-за сбоев в электропитании;
  • внезапная остановка работы сервера MySQL, когда в этот момент осуществлялись доступ к БД и/или чтение и запись таблиц;
  • несанкционированный доступ к файлам БД со стороны сторонних программ.

В любом случае, первое, что нужно сделать — это остановить работу MySQL-сервера, сделать резервные копии файлов таблиц, которые по умолчанию находятся в каталоге /var/lib/mysql:

$ cp -r /var/lib/mysql ~/backups/mysql_back

Для выполнения этой команды могут потребоваться привилегии суперпользователя или пользователя, имеющего доступ к каталогу /var/lib/mysql. Только после этого можно приступить к разбору ситуации и проверить, действительно ли таблицы повреждены. Для этого можно воспользоваться командной консолью MySQL. Но предварительно необходимо снова запустить MySQL-сервер. И авторизоваться на нём (от имени пользователя-администратора) с помощью команды:

$ mysql -u username -p

Здесь username – имя пользователя-администратора в системе MySQL.

Проверка таблиц на предмет повреждений

Проверить таблицы на предмет повреждения можно встроенными средствами MySQL, если для них используется движок MyISAM. Для этого используется специальный запрос «CHECK TABLE». Итак, для начала, после авторизации в системе MySQL (как описано в предыдущей главе) необходимо выбрать интересующую БД:

mysql> use db_name;

Здесь db_name – имя требуемой базы данных, таблицы которой нужно проверить. Для получения списка всех имеющихся на сервере БД можно выполнить следующий запрос:

mysql> show databases;

Теперь можно выполнить, собственно, саму проверку:

mysql> check table db_table;
+--------------------+-------+----------+----------+
| Table              | Op    | Msg_type | Msg_text |
+--------------------+-------+----------+----------+
| db_name.db_table   | check | status   | OK       |
+--------------------+-------+----------+----------+
1 row in set (0.00 sec)

Как нетрудно догадаться, «db_table» здесь — это имя требуемой таблицы. В данном случае вывод в столбце «Msg-text» говорит о том, что с таблицей всё в порядке.

Восстановление MyISAM-таблиц

В случае, когда повреждения таблиц всё же есть. То с большой степенью вероятности таблицу можно починить, используя запрос «REPAIR TABLE»:

mysql> repair table db_table;

Теперь, если починка завершилась нормально, будет получен следующий вывод:

+-------------------+--------+----------+----------+
| Table             | Op     | Msg_type | Msg_text |
+-------------------+--------+----------+----------+
| db_name.db_table  | repair | status   | OK       |
+-------------------+--------+----------+----------+

Как можно видеть, всё довольно просто. Однако, если повреждённых таблиц много, то процесс восстановления может быть довольно трудоёмким. Ну а если же данный способ успеха не принёс, то следует обращаться к более сложным методам починки таблиц, рекомендованных самими разработчиками MySQL.

Восстановление InnoDB-таблиц

В случае, если повреждённые таблицы обслуживались движком InnoDB, то придётся использовать более сложный метод восстановления. Дело в том, что движок InnoDB сам способен следить за исправностью таблиц и устранять повреждения. Однако, если он по каким-либо причинам не справляется с этой задачей, то сервер MySQL останавливается.

Метод восстановления для InnoDB-таблиц рекомендуется разработчиками MySQL и суть его в следующем:

  • необходимо сначала восстановить доступ к повреждённой таблице, поскольку сервер в этом случае останавливается;
  • выполнить резервную копию в виде дампа повреждённых таблиц, используя утилиту mysqldump, которая сохраняет структуру таблицы и данные;
  • удалить повреждённую таблицу;
  • выполнить загрузку дампа таблицы, но уже во вновь созданную таблицу БД, что будет сделано утилитой mysqldump автоматически.

Для восстановления доступа к таблицам можно сначала попытаться перезагрузить сервер MySQL. Если это не помогло, то можно запустить его с опцией innodb_force_recovery. Для этого необходимо отредактировать конфигурационный файл /etc/mysql/mysql.conf.d/mysqld.cnf, например, используя текстовый редактор nano:

$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Необходимо сделать изменения в разделе [mysqld], добавив в него строку:

. . .
[mysqld]
. . .
innodb_force_recovery=1

Сохранив сделанные изменения и закрыв редактор nano, можно теперь снова попытаться запустить MySQL-сервер. В большинстве случаев это помогает и если доступ к таблицам удалось получить, то теперь можно создать дамп нужных таблиц, выполнив следующую команду:

$ mysqldump -u username -p db_name db_table > ~/backups/back.dump

Дамп back.dump будет сохранён в подкаталоге backups домашнего каталога текущего пользователя.

Теперь необходимо удалить из БД повреждённую таблицу. Для этого после авторизации в командной консоли MySQL (как описано в главе «Причины повреждения таблиц»), нужно выполнить следующий запрос:

mysql> DROP TABLE db_name.db_table;

Если БД была предварительно выбрана командой use, то в запросе следует указать только таблицу:

mysql> DROP TABLE db_table;

Теперь можно выйти из командной консоли MySQL командой exit. И выполнить загрузку дампа таблицы в БД:

$ mysql -u user -p < /home/username/backups/back.dump

В данном случае вместо «/home/username/backups/back.dump» следует использовать  местоположение, куда ранее был сохранён дамп.

Заключение

В заключение следует отметить, что представленные способы восстановления являются пожалуй единственными вариантами, когда восстановление можно произвести «малыми силами» и в сжатые сроки. Если же повреждения слишком масштабные и сильные, то необходимо использовать альтернативные, более сложные способы восстановления.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как удалить все таблицы в базе mysql через консоль

Работал сегодня с сервером mysql. Надо было проверять дампы баз и искать в них данные. Постоянно загружал и удалял таблицы, базы и т.д. В общем, работал много с mysql, а чтобы все было максимально быстро, то через консоль. Оказалось, что простого и быстрого способа удалить разом все таблицы в базе mysql нет. Рассказываю, как поступал я для очистки таблиц без удаления самой базы данных.


Если у вас есть желание освоить Linux с нуля, не имея базовых знаний, рекомендую познакомиться с онлайн-курсом Administrator Linux.Basic в OTUS. Курс для новичков, для тех, кто хочет войти в профессию администратора Linux. Подробности по .

В общем случае удалить таблицы из базы данных можно командой в консоли mysql:

mysql> use databasename;
mysql> drop table00 table01, table02;

Если у вас таблиц десятки и сотни, очевидно, что вручную их указывать неудобно. Дальше каждый изобретает свой велосипед в виде различных скриптов на php или bash. Мне не захотелось этим заниматься, уверен был, что можно найти способ проще и я его нашел.

Можно воспользоваться mysqldump и некоторыми ключами.

# mysqldump --add-drop-table --no-data databasename

Эта команда сделает дамп только структуры базы данных, при этом для каждой таблицы перед ее созданием будет команда на удаление. Вот эти команды на удаление мы и заберем из дампа.

# mysqldump --add-drop-table --no-data databasename | grep ^DROP

Мы получили набор команд на удаление всех таблиц. Теперь направим эти команды в mysql консоль на исполнение.

# mysqldump --add-drop-table --no-data databasename | grep ^DROP | mysql databasename

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

# mysqldump -uuser -ppassword --add-drop-table --no-data databasename | grep ^DROP | mysql -uuser -ppassword databasename

Таким простым способом, без скриптов, можно прямо в консоли сервера удалить все таблицы из базы данных mysql, не удаляя саму базу. Может возникнуть вопрос, а почему не удалить все же базу и не создать заново. Причин может быть несколько:

  1. У вас нет прав на создание и удаление баз данных (наиболее частый случай).
  2. Не помните точно параметры базы данных, не хочется вспоминать, искать, как создать новую базу данных с теми же параметрами, что стоят у текущей (мой случай).

Если у вас есть какое-то свое простое решение по удалению таблиц из базы, делитесь в комментариях.

Онлайн курс Основы сетевых технологий

Теоретический курс с самыми базовыми знаниями по сетям. Курс подходит и начинающим, и людям с опытом. Практикующим системным администраторам курс поможет упорядочить знания и восполнить пробелы. А те, кто только входит в профессию, получат на курсе базовые знания и навыки, без воды и избыточной теории. После обучения вы сможете ответить на вопросы:

  • На каком уровне модели OSI могут работать коммутаторы;
  • Как лучше организовать работу сети организации с множеством отделов;
  • Для чего и как использовать технологию VLAN;
  • Для чего сервера стоит выносить в DMZ;
  • Как организовать объединение филиалов и удаленный доступ сотрудников по vpn;
  • и многое другое.

Уже знаете ответы на вопросы выше? Или сомневаетесь? Попробуйте пройти тест по основам сетевых технологий. Всего 53 вопроса, в один цикл теста входит 10 вопросов в случайном порядке. Поэтому тест можно проходить несколько раз без потери интереса. Бесплатно и без регистрации. Все подробности на странице .


Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

SQL запросы: Основы администрирования MySQL

Что такое MySQL

MySQL — это база данных. В ее таблицах хранятся данные веб-сайта. Для того, чтобы вывести статью, которую вы сейчас читаете, php скрипт обращается к базе данных этого сайта и делает запрос в таблицу с статьями, с определенными условиями. Благодаря SQL запросу, вы видите эту статью.

 

 

 

Как подключиться к MySQL

Для подключения к MySQL вы можете воспользоваться командной:

 

mysql -P 3306 -h IPADDRESS -u USER -p DATABASE

 

где -P 3306 — это порт базы данных, можно не указывать,
-h IPADDRESS — ip адрес сервера, на котором находится mysql (можно не указывать или localhost, если база данных располагается локально)
-u USER — USER имя пользователь mySQL
-p — опция говорит о том, что база данных с паролем,
DATABASE — имя базы данных

 

Как создать дамп (dump) базы данных MySQL

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

 

mysqldump -uUSER -h292.168.1.20 -p DATABASE > dumpname.sql

 

где USER — имя пользователя БД
192.168.1.20 — ip адрес mysql сервера (можно не указывать или указать localhost, если mysql сервер находится локально)
DATABASE — имя базы данных с которой хотите сделать дамп, dumpname.sql — название дампа базы данных

 

Как развернуть дамп (dump) базы данных MySQL

Для того, чтобы развернуть дамп базы данных MySQL, введите команду:

 

mysql -uUSER -h292.168.1.20 -p DATABASE < dumpname.sql

 

где USER — имя пользователя БД
192.168.1.20 — ip адрес mysql сервера (можно не указывать или указать localhost, если mysql сервер находится локально)
DATABASE — имя базы данных в которую хотите развернуть дамп базы данных, dumpname.sql — название дампа базы данных

 

Еще один вариант развернуть дамп из консоли MySQL:

 

mysql> use NAMEDATABASE;
mysql> source dumpname.sql

 

где NAMEDATABASE — имя базы данных, в которую хотите развернуть дамп MySQL
dumpname.sql — имя дампа MySQL

 

SQL запрос: SELECT

SELECT — это команда sql для вывода записей из конкретной таблицы

Пример запроса select

 

select * from hosting;

 

Предположим, что у нас есть таблица в MySQL базе данных hosting. Команда выше, выводит все записи из таблицы hosting.
Звездочка (*) обозначает, что нужно вывести все поля из таблицы hosting. Предположим, что в таблице MySQL hosting, у нас есть поля id, name, address.
Для того, чтобы вывести только записи из полей name, нужно выполнить запрос:

 

select name from hosting;

 

SQL запрос: INSERT

INSERT — это команда sql для вставки записей в таблицу MySQL

Для того, чтобы вставить в таблицу hosting новую запись запись, нужно выполнить команду:

 

INSERT INTO `hosting` (`name`, `address`) VALUES (‘GoDaddy’,’14455 N Hayden Rd #219, Scottsdale, AZ 85260, Соединенные Штаты’)

 

где (`name`, `address`) — это поля таблицы hosting
VALUES (‘GoDaddy’,’14455 N Hayden Rd #219, Scottsdale, AZ 85260, Соединенные Штаты’) — это значения для name и address.
Обратите внимания, данные и поля помещают внутри одинарных кавычек.

 

SQL запрос: UPDATE

UPDATE — это команда sql для обновления записей в таблице MySQL

Например, нам нужно обновить запись в таблице хостинг и заменить адрес в поле address. Запрос UPDATE будет выглядеть так:

 

UPDATE `hosting` SET `address` = ‘USA’ WHERE `id`=1;

 

SET `address` = «USA’ — запись обозначает, что в поле address требуется обновить значение
WHERE `id`=»1″ — оператор в SQL запросах WHERE обозначает условие. Так как мы хотим обновить только одну запись с id = 1 (godaddy), а не все записи в таблице hosting.

 

Резюме

В данной статье мы рассмотрели основы администрирования MySQL базы данных. В следующих статьях мы рассмотрим другие SQL запросы и ответим на вопросы, такие как: Как создать базу данных MySQL, что такое LEFT JOIN, INNER JOIN RIGHT JOIN и чем они отличаются между собой.



Читайте также


Все материалы с сайта wh-db.com и ru.wh-db.com защищены авторским правом. Копирование, публикация, продажа и распространение материала строго запрещены.

logging — Как включить журнал запросов MySQL?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

журналов аудита — База данных Azure для MySQL

  • 5 минут на чтение

В этой статье

В базе данных Azure для MySQL журнал аудита доступен пользователям. Журнал аудита может использоваться для отслеживания активности на уровне базы данных и обычно используется для обеспечения соответствия.

Настроить журнал аудита

Важно

Рекомендуется регистрировать только типы событий и пользователей, необходимые для целей аудита, чтобы гарантировать, что производительность вашего сервера не сильно пострадает.

По умолчанию журнал аудита отключен. Чтобы включить его, установите для audit_log_enabled значение ON.

Другие параметры, которые вы можете настроить, включают:

  • audit_log_events : контролирует события, которые должны быть зарегистрированы. См. Таблицу ниже для конкретных событий аудита.
  • audit_log_include_users : Пользователи MySQL должны быть включены для ведения журнала. Значение по умолчанию для этого параметра пусто, что включает всех пользователей для ведения журнала. Это имеет более высокий приоритет по сравнению с audit_log_exclude_users . Максимальная длина параметра — 512 символов.
  • audit_log_exclude_users : пользователи MySQL должны быть исключены из ведения журнала. Максимальная длина параметра — 512 символов.

Примечание

audit_log_include_users имеет более высокий приоритет по сравнению с audit_log_exclude_users .Например, если audit_log_include_users = demouser и audit_log_exclude_users = demouser , пользователь будет включен в журналы аудита, потому что audit_log_include_users имеет более высокий приоритет.

Событие Описание
ПОДКЛЮЧЕНИЕ — Инициирование соединения (успешное или неудачное)
— Повторная аутентификация пользователя с другим пользователем / паролем во время сеанса
— Завершение соединения
DML_SELECT SELECT запросов
DML_NONSELECT запросы INSERT / DELETE / UPDATE
DML DML = DML_SELECT + DML_NONSELECT
DDL Запросы типа «DROP DATABASE»
DCL Запросы типа «ПРЕДОСТАВИТЬ РАЗРЕШЕНИЕ»
АДМИНИСТРАТОР Запросы типа «ПОКАЗАТЬ СТАТУС»
ОБЩЕЕ Все в DML_SELECT, DML_NONSELECT, DML, DDL, DCL и ADMIN
ДОСТУП К ТАБЛИЦЕ — Доступно только для MySQL 5.7
— Операторы чтения таблицы, такие как SELECT или INSERT INTO … SELECT
— Операторы удаления таблицы, такие как DELETE или TRUNCATE TABLE
— Операторы вставки таблицы, такие как INSERT или REPLACE
— Операторы обновления таблицы, такие как UPDATE

Журналы аудита доступа

Журналы аудита

интегрированы с журналами диагностики Azure Monitor. После включения журналов аудита на сервере MySQL вы можете отправлять их в журналы Azure Monitor, концентраторы событий или хранилище Azure.Чтобы узнать больше о том, как включить журналы диагностики на портале Azure, см. Статью портала журнала аудита.

Схемы журналов диагностики

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

Подключение

Объект Описание
TenantId Ваш ID арендатора
SourceSystem Лазурный
TimeGenerated [UTC] Отметка времени, когда журнал был записан в формате UTC
Тип Тип журнала.Всегда AzureDiagnostics
Идентификатор подписки GUID для подписки, которой принадлежит сервер
ResourceGroup Имя группы ресурсов, к которой принадлежит сервер.
ResourceProvider Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMYSQL
ResourceType Серверы
ResourceId URI ресурса
Ресурс Имя сервера
Категория MySqlAuditLogs
Название операции LogEvent
LogicalServerName_s Имя сервера
event_class_s connection_log
event_subclass_s CONNECT , DISCONNECT , ИЗМЕНИТЬ ПОЛЬЗОВАТЕЛЯ (доступно только для MySQL 5.7)
connection_id_d Уникальный идентификатор соединения, созданный MySQL
host_s Пустой
ip_s IP-адрес клиента, подключающегося к MySQL
user_s Имя пользователя, выполняющего запрос
дб_с Имя базы данных, подключенной к
\ _ResourceId URI ресурса

Общие

Схема

, приведенная ниже, применяется к типам событий GENERAL, DML_SELECT, DML_NONSELECT, DML, DDL, DCL и ADMIN.

Примечание

Для sql_text журнал будет усечен, если он превышает 2048 символов.

Объект Описание
TenantId Ваш ID арендатора
SourceSystem Лазурный
TimeGenerated [UTC] Отметка времени, когда журнал был записан в формате UTC
Тип Тип журнала.Всегда AzureDiagnostics
Идентификатор подписки GUID для подписки, которой принадлежит сервер
ResourceGroup Имя группы ресурсов, к которой принадлежит сервер.
ResourceProvider Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMYSQL
ResourceType Серверы
ResourceId URI ресурса
Ресурс Имя сервера
Категория MySqlAuditLogs
Название операции LogEvent
LogicalServerName_s Имя сервера
event_class_s general_log
event_subclass_s LOG , ERROR , RESULT (доступно только для MySQL 5.6)
event_time Время начала запроса в формате UTC timestamp
error_code_d Код ошибки, если запрос не удался. 0 означает отсутствие ошибки
thread_id_d ID потока, выполнившего запрос
host_s Пустой
ip_s IP-адрес клиента, подключающегося к MySQL
user_s Имя пользователя, выполняющего запрос
sql_text_s Полный текст запроса
\ _ResourceId URI ресурса

Доступ к столу

Примечание

Журналы доступа к таблицам

выводятся только для MySQL 5.7.
Для sql_text журнал будет усечен, если он превышает 2048 символов.

Объект Описание
TenantId Ваш ID арендатора
SourceSystem Лазурный
TimeGenerated [UTC] Отметка времени, когда журнал был записан в формате UTC
Тип Тип журнала.Всегда AzureDiagnostics
Идентификатор подписки GUID для подписки, которой принадлежит сервер
ResourceGroup Имя группы ресурсов, к которой принадлежит сервер.
ResourceProvider Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMYSQL
ResourceType Серверы
ResourceId URI ресурса
Ресурс Имя сервера
Категория MySqlAuditLogs
Название операции LogEvent
LogicalServerName_s Имя сервера
event_class_s table_access_log
event_subclass_s ПРОЧИТАТЬ , ВСТАВИТЬ , ОБНОВИТЬ или УДАЛИТЬ
connection_id_d Уникальный идентификатор соединения, созданный MySQL
дб_с Имя базы данных, к которой осуществлялся доступ
table_s Имя таблицы, к которой обращались
sql_text_s Полный текст запроса
\ _ResourceId URI ресурса

Анализировать журналы в журналах Azure Monitor

После передачи журналов аудита в журналы Azure Monitor через журналы диагностики можно выполнить дальнейший анализ отслеживаемых событий.Ниже приведены несколько примеров запросов, которые помогут вам начать работу. Обязательно обновите приведенное ниже имя вашего сервера.

  • Список ОБЩИХ событий на определенном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlAuditLogs' и event_class_s == "general_log"
    | проект TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s, ip_s, sql_text_s
    | порядок по TimeGenerated asc nulls last
      
  • Список событий CONNECTION на определенном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlAuditLogs' и event_class_s == "connection_log"
    | проект TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s, ip_s, sql_text_s
    | порядок по TimeGenerated asc nulls last
      
  • Обобщение проверенных событий на конкретном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlAuditLogs'
    | проект TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s, ip_s, sql_text_s
    | суммировать count () по event_class_s, event_subclass_s, user_s, ip_s
      
  • Построить график распределения типов событий аудита на конкретном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlAuditLogs'
    | проект TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s, ip_s, sql_text_s
    | суммировать count () по LogicalServerName_s, bin (TimeGenerated, 5m)
    | визуализировать временную диаграмму
      
  • Список отслеживаемых событий на всех серверах MySQL с включенными журналами диагностики для журналов аудита

      AzureDiagnostics
    | где Category == 'MySqlAuditLogs'
    | проект TimeGenerated, LogicalServerName_s, event_class_s, event_subclass_s, event_time_t, user_s, ip_s, sql_text_s
    | порядок по TimeGenerated asc nulls last
      

Следующие шаги

.

журналов медленных запросов — База данных Azure для MySQL

  • 4 минуты на чтение

В этой статье

В базе данных Azure для MySQL пользователям доступен журнал медленных запросов. Доступ к журналу транзакций не поддерживается. Журнал медленных запросов можно использовать для определения узких мест производительности для устранения неполадок.

Для получения дополнительной информации о журнале медленных запросов MySQL см. Раздел журнала медленных запросов справочного руководства MySQL.

Настроить медленное ведение журнала запросов

По умолчанию журнал медленных запросов отключен. Чтобы включить его, установите slow_query_log в положение ON. Это можно включить с помощью портала Azure или Azure CLI.

Другие параметры, которые вы можете настроить, включают:

  • long_query_time : если запрос занимает больше времени, чем long_query_time (в секундах), этот запрос регистрируется.По умолчанию — 10 секунд.
  • log_slow_admin_statements : if ON включает административные операторы, такие как ALTER_TABLE и ANALYZE_TABLE, в операторы, записанные в slow_query_log.
  • log_queries_not_using_indexes : определяет, записываются ли запросы, которые не используют индексы, в slow_query_log
  • log_throttle_queries_not_using_indexes : этот параметр ограничивает количество неиндексных запросов, которые могут быть записаны в журнал медленных запросов.Этот параметр вступает в силу, если для параметра log_queries_not_using_indexes установлено значение ON.
  • log_output : если «Файл», позволяет записывать журнал медленных запросов как в хранилище локального сервера, так и в журналы диагностики Azure Monitor. Если «Нет», журнал медленных запросов будет записан только в журналы диагностики Azure Monitor.

Важно

Если ваши таблицы не индексируются, установка для параметров log_queries_not_using_indexes и log_throttle_queries_not_using_indexes значения ON может повлиять на производительность MySQL, поскольку все запросы, выполняемые к этим неиндексированным таблицам, будут записываться в журнал медленных запросов.

Если вы планируете регистрировать медленные запросы в течение длительного периода времени, рекомендуется установить для log_output значение «Нет». Если установлено значение «Файл», эти журналы записываются в хранилище локального сервера и могут повлиять на производительность MySQL.

Полное описание параметров журнала медленных запросов см. В документации к журналу медленных запросов MySQL.

Доступ к журналам медленных запросов

Существует два варианта доступа к журналам медленных запросов в базе данных Azure для MySQL: хранилище локального сервера или журналы диагностики Azure Monitor.Это устанавливается с помощью параметра log_output .

Для локального серверного хранилища вы можете просмотреть и загрузить журналы медленных запросов с помощью портала Azure или Azure CLI. На портале Azure перейдите к своему серверу на портале Azure. Под заголовком Monitoring выберите страницу Server Logs . Дополнительные сведения о Azure CLI см. В разделе Настройка журналов медленных запросов и доступ к ним с помощью Azure CLI.

Журналы диагностики Azure Monitor позволяют передавать журналы медленных запросов по конвейеру в журналы Azure Monitor (аналитика журналов), хранилище Azure или концентраторы событий.Смотрите ниже для получения дополнительной информации.

Хранение журнала хранилища локального сервера

При входе в локальное хранилище сервера журналы доступны в течение семи дней с момента их создания. Если общий размер доступных журналов превышает 7 ГБ, самые старые файлы удаляются до тех пор, пока не освободится место.

Журналы меняются каждые 24 часа или 7 ГБ, в зависимости от того, что наступит раньше.

Примечание

Указанное выше сохранение журнала не применяется к журналам, которые передаются по конвейеру с помощью журналов диагностики Azure Monitor.Вы можете изменить срок хранения для отправляемых приемников данных (например, хранилище Azure).

Журналы диагностики

База данных Azure для MySQL интегрирована с журналами диагностики Azure Monitor. После включения журналов медленных запросов на сервере MySQL вы можете выбрать их отправку в журналы Azure Monitor, концентраторы событий или хранилище Azure. Чтобы узнать больше о том, как включить журналы диагностики, см. Раздел как сделать в документации журналов диагностики.

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

Имущество Описание
TenantId Ваш идентификатор арендатора
SourceSystem Лазурный
TimeGenerated [UTC] Отметка времени, когда журнал был записан в формате UTC
Тип Тип журнала.Всегда AzureDiagnostics
Идентификатор подписки GUID для подписки, которой принадлежит сервер
ResourceGroup Имя группы ресурсов, к которой принадлежит сервер
ResourceProvider Имя поставщика ресурсов. Всегда MICROSOFT.DBFORMYSQL
ResourceType Серверы
ResourceId URI ресурса
Ресурс Имя сервера
Категория MySqlSlowLogs
Название операции LogEvent
логические_имя_сервера Имя сервера
start_time_t [UTC] Время начала запроса
query_time_s Общее время в секундах, которое потребовалось для выполнения запроса
lock_time_s Общее время в секундах, в течение которого запрос был заблокирован
user_host_s Имя пользователя
rows_sent_s Количество отправленных строк
rows_examined_s Количество проверенных строк
last_insert_id_s last_insert_id
insert_id_s ID вставки
sql_text_s Полный запрос
server_id_s ID сервера
thread_id_s ID резьбы
\ _ResourceId URI ресурса

Примечание

Для sql_text журнал будет усечен, если он превышает 2048 символов.

Анализировать журналы в журналах Azure Monitor

После передачи журналов медленных запросов в журналы Azure Monitor через журналы диагностики можно выполнить дальнейший анализ медленных запросов. Ниже приведены несколько примеров запросов, которые помогут вам начать работу. Обязательно обновите приведенное ниже имя вашего сервера.

  • Запросы продолжительностью более 10 секунд на определенном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlSlowLogs'
    | проект TimeGenerated, LogicalServerName_s, event_class_s, start_time_t, query_time_d, sql_text_s
    | где query_time_d> 10
      
  • Список 5 самых длинных запросов на определенном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlSlowLogs'
    | проект TimeGenerated, LogicalServerName_s, event_class_s, start_time_t, query_time_d, sql_text_s
    | заказать по query_time_d desc
    | взять 5
      
  • Суммируйте медленные запросы по минимальному, максимальному, среднему и стандартному отклонению времени запроса на конкретном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlSlowLogs'
    | проект TimeGenerated, LogicalServerName_s, event_class_s, start_time_t, query_time_d, sql_text_s
    | суммировать count (), min (query_time_d), max (query_time_d), avg (query_time_d), stdev (query_time_d), процентиль (query_time_d, 95) по LogicalServerName_s
      
  • Построить график распределения медленных запросов на конкретном сервере

      AzureDiagnostics
    | где LogicalServerName_s == '<имя вашего сервера>'
    | где Category == 'MySqlSlowLogs'
    | проект TimeGenerated, LogicalServerName_s, event_class_s, start_time_t, query_time_d, sql_text_s
    | суммировать count () по LogicalServerName_s, bin (TimeGenerated, 5m)
    | визуализировать временную диаграмму
      

.

sql — Как узнать время последнего доступа (и / или записи) к базе данных MySQL?

Переполнение стека

  1. Около
  2. Продукты

  3. Для команд
  1. Переполнение стека
    Общественные вопросы и ответы

  2. Переполнение стека для команд
    Где разработчики и технологи делятся частными знаниями с коллегами

  3. Вакансии
    Программирование и связанные с ним технические возможности карьерного роста

  4. Талант
    Нанимайте технических специалистов и создавайте свой бренд работодателя

  5. Реклама
    Обратитесь к разработчикам и технологам со всего мира

  6. О компании

Загрузка…

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *