All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 13s
7.2 KiB
7.2 KiB
MariaDB
mysql -u [user] -p
- локальное подключение к серверуmysql -h [host] -P [port] -u [user] -p
- удалённое подключение к серверу
SHOW DATABASES;
- показать все бдCREATE DATABASE [db_name];
- создать бдDROP DATABASE [db_name];
- удалить бд
USE [db_name];
- использовать бдSHOW TABLES;
- показать таблицыDROP TABLE [table_name];
- удалить таблицуTRUNCATE TABLE [table_name];
- очистить таблицу (удалить все данные)DESCRIBE [table_name]
илиSHOW COLUMNS FROM [table_name];
- структура таблицы
-
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
- создать пользователя, может коннектиться к базе только черезlocalhost
-
Права
GRANT SELECT, INSERT ON [db_name].[table_name] TO 'username'@'localhost';
GRANT ALL PRIVILEGES ON [db_name].* TO 'username'@'localhost';
REVOKE INSERT ON [db_name].[table_name] FROM 'username'@'localhost';
- отозвать праваFLUSH PRIVILEGES;
- обновить праваRENAME USER 'user1'@'localhost' TO 'user1'@'192.168.1.100';
- изменить пользователя (имя, доступ с какого хоста)DROP USER 'username'@'localhost';
- удалить пользователяSELECT user, host FROM mysql.user;
- список пользователей и хостов
- Изменение таблицы
ALTER TABLE [table_name] ADD COLUMN [column_name] [data_type];
ALTER TABLE [table_name] DROP COLUMN [column_name];
- Пример запроса на чтение данных
SELECT * FROM [table_name];
SELECT column1, column2 FROM [table_name] WHERE condition;
-- Примеры условий:
WHERE id = 5;
WHERE created_at BETWEEN '2023-01-01' AND '2023-12-31';
WHERE column1 LIKE '%pattern%';
- Обновить данные
UPDATE [table_name] SET column1 = 'new_value' WHERE condition;
- Удалить данные
DELETE FROM [table_name] WHERE condition;
- Индексы
-- Создать индекс
CREATE INDEX [index_name] ON [table_name] (column1, column2); -- по умолчанию btree
-- Удалить индекс
DROP INDEX [index_name] ON [table_name];
mysqldump -u [user] -p [db_name] > backup.sql
- резервное копирование бд (-p --all-databases
- все бд)mysql -u [user] -p [db_name] < backup.sql
- восстановление бд
mariabackup --backup --user=[user] --password=[password] --target-dir=/backup/
- бэкап быстрее, бинарный формат, не блокирует таблицы, перед восстановлением необходимо завершить все транзации -mariabackup --prepare --target-dir=/backup/
- Восстановление бэкапа
sudo systemctl stop mariadb
sudo rm -rf /var/lib/mysql/*
mariabackup --copy-back --target-dir=/backup/
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl start mariadb
- План выполнения запроса
EXPLAIN SELECT * FROM table_name WHERE column1 = 'value';
- Выполняет запрос и показывает фактический план выполнения с реальными метриками (время, количество строк и т.д.)
ANALYZE FORMAT=JSON SELECT * FROM table_name WHERE column1 = 'value';
SHOW PROFILE
Показывает профиль выполнения запроса
SET profiling = 1;
SELECT * FROM table_name WHERE column1 = 'value';
SHOW PROFILE;
??? info "SHOW PROFILE" SHOW PROFILE — это инструмент для анализа времени выполнения отдельных этапов запроса. Показывает, сколько времени заняла каждая операция (например, парсинг, выполнение, отправка данных).
| Status | Duration |
| starting | 0.000123 |
| checking permissions | 0.000045 |
| Opening tables | 0.000067 |
| init | 0.000034 |
| System lock | 0.000023 |
| optimizing | 0.000056 |
| executing | 0.000078 |
| Sending data | 0.001234 |
| end | 0.000045 |
| query end | 0.000034 |
| closing tables | 0.000023 |
| freeing items | 0.000045 |
| cleaning up | 0.000034 |
- Показывает активные соединения и выполняемые запросы.
SHOW FULL PROCESSLIST;
- Показывает статус InnoDB, включая информацию о блокировках, транзакциях и буферах.
SHOW ENGINE INNODB STATUS;
- Показывает статистику сервера
SHOW STATUS LIKE 'Innodb_buffer_pool_reads';
- Завершает выполнение запроса по его ID.
KILL [process_id];
- Перестраивает таблицу и освобождает неиспользуемое пространство.
OPTIMIZE TABLE table_name;
- Обновляет статистику для оптимизатора.
ANALYZE TABLE table_name;
- Проверяет целостность таблицы.
CHECK TABLE table_name;
- Логирование медленных запросов
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1; -- Запросы дольше 1 секунды
- Показывает статистику выполнения запросов.
SELECT * FROM performance_schema.events_statements_summary_by_digest;
Настройки
SHOW VARIABLES;
- посмотреть текущие настройки
!!! info "Конфиги"
Основной конфиг: /etc/my.cnf
или /etc/mysql/my.cnf
Дополнительные конфиги: `/etc/mysql/conf.d/` или `/etc/mysql/mariadb.conf.d/`
Пример структуры:
```ini
[mysqld]
datadir = /var/lib/mysql
bind-address = 0.0.0.0
innodb_buffer_pool_size = 1G
```
!!! info "Логи"
Общий лог: /var/log/mysql/mysql.log
(логирует все запросы).
Лог ошибок: `/var/log/mysql/error.log` (или `/var/log/mariadb/mariadb.log`)
Бинарный лог (журнал транзакций): `/var/lib/mysql/mysql-bin.*` (включает все изменения данных)
`mysqlbinlog /var/lib/mysql/mysql-bin.000001` - для просмотра бинарных логов
Лог медленных запросов: `/var/log/mysql/mysql-slow.log`
!!! info ""
По умолчанию данные лежат в /var/lib/mysql/
Можно посмотреть в конфиге параметр `datadir`