Skip to main content

MySQL

Базы данных хранятся в /var/lib/mysql 

sudo grep -R 'datadir' /etc/mysql/

Настройка сессии

Уровень изолированностиЧерновое чтениеНеповторяющееся чтениеФантомное чтениеБлокировка чтения
READ UNCOMMITTEDДаДаДаНет
READ COMMITTEDНетДаДаНет
REPEATABLE READНетНетДаНет
SERIALIZABLEНетНетНетДа

Можно установить на уровне сессии 

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;

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

Performance Schema

Это отдельный engine Проверить факт наличия: 

SHOW ENGINES;
+--------------------+---------+----------------------------------+--------------+------+------------+
| Engine             | Support | Comment                          | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------+--------------+------+------------+
| PERFORMANCE_SCHEMA | YES     | Performance Schema               | NO           | NO   | NO         |

включен или нет: 

SHOW VARIABLES LIKE 'performance_schema';

Переменные окружения

Просмотр 

SHOW VARIABLES LIKE 'performance_schema';

Поддерживает %

Настройки
Настройка при запуске 

shell> mysql --max_allowed_packet=16M

Настройка при работе 

mysql>SET GLOBAL max_connections = 1000; - потеря при перезагрузке
mysql>SET PERSIST max_connections = 1000; - сохранение после перезагрузки

Инструменты (setup_instruments) пишут в потребителя (таблицы данных, ).
Схемой sys представления и хранимые подпрограммы над performance_schema. 
включение инструментов вызывает дополнительный код 

statement/sql/select;
wait/synch/mutex/innodb/autoinc_mutex

Крайний левый - тип, далее слева направо подсистемы от общей к частной.
Дайджест — агрегирование запросов путем удаления из них вариаций 
Структура таблиц потребителей: 

  • *_current — события, происходящие на сервере в данный момент;
  • *_history — последние 10 завершенных событий на поток;
  • *_history_long — последние 10 000 завершенных событий на поток по всему миру

Ограничения:

  • Инструментарий должен поддерживаться компонентом MySQL.
  • Она собирает данные только после включения конкретного инструмента и потребителя.
  • Трудно освободить память. Даже если позже отключите определенные инструменты или потребители, память не будет освобождена, пока вы не перезапустите сервер.

Настройка инструментов мониторинга

Список инструментов: https://mariadb.com/kb/en/performance-schema-setup_instruments-table/

Таблица setup_instruments - включенные инструменты.

Структура: 

NAMEНазвание инструмента
ENABLEDВключен или нет
TIMEDПланировщик. Если disabled, работать не будет

CRUD db, tables, users

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPassword';

CREATE DATABASE IF NOT EXISTS my_timeweb;
DROP DATABASE IF EXISTS my_timeweb;
CREATE USER 'sub_user'@'10.0.%' IDENTIFIED BY 'password';
SELECT * FROM mysql.user;
DROP USER 'user'@'localhost';

Привилегии:

ALTERМенять структуру таблицы или БД
CREATEСоздавать новые БД и таблицы
DELETEУдалять строки в таблице
INSERTДобавлять строки в таблицу
SELECTЧитать данные из таблицы
UPDATEОбновлять данные в таблице
DROPУдалять БД
ALL PRIVILEGESвсе, кроме GRANT;
USAGE PRIVILEGESникаких привилегий;
FILEразрешает читать файлы на сервере;
INDEXсоздавать индексы для таблиц;
DROPудалять таблицы;
EVENTобработка событий;
TRIGGERсоздание триггеров.

Привилегия на действия

GRANTизменять права пользователей;
SUPERсуперпользователь;
PROCESSполучение информации о состоянии MySQL;
RELOADпозволяет перезагружать таблицы привилегий;
SHUTDOWNпозволяет отключать или перезапускать базу данных;
SHOW DATABASESпросмотр списка баз данных;
LOCK TABLESблокирование таблиц при использовании SELECT;
REFERENCESсоздание внешних ключей для связывания таблиц;
CREATE USERсоздание пользователей;
GRANT SELECT, INSERT ON my_timeweb.* TO 'user'@'localhost'; из-под root
GRANT ALL PRIVILEGES ON my_timeweb.* TO 'user'@'localhost';
REVOKE SELECT, INSERT ON my_timeweb.* FROM 'user'@'localhost';

применение изменений 

flush privileges;

статус, приложения

mysqladmin version
mysqlshow mysql - список таблиц БД mysql

mysql_secure_installation 
mysqladmin - административное
mysqlcheck - проверка
mysqldump - сохранение
mysqlimport - импорт текстовых файлов в нужную таблицу
mysqlpump - экспорт базы в sql файл
mysqlslap - статус загрузки сервера

--print-defaults выводит конфиг по умолчанию