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 выводит конфиг по умолчанию