ADD mariadb note
All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 13s
All checks were successful
Build MkDocs / build-and-deploy (push) Successful in 13s
This commit is contained in:
parent
6fa690dd96
commit
ad5c3d983a
212
docs/Other/MariaDB.md
Normal file
212
docs/Other/MariaDB.md
Normal file
@ -0,0 +1,212 @@
|
||||
### 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`
|
||||
|
||||
- Права
|
||||
```sql
|
||||
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];
|
||||
```
|
||||
|
||||
- Пример запроса на чтение данных
|
||||
```sql
|
||||
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%';
|
||||
```
|
||||
|
||||
- Обновить данные
|
||||
```sql
|
||||
UPDATE [table_name] SET column1 = 'new_value' WHERE condition;
|
||||
```
|
||||
|
||||
- Удалить данные
|
||||
```sql
|
||||
DELETE FROM [table_name] WHERE condition;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- Индексы
|
||||
```sql
|
||||
-- Создать индекс
|
||||
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/`
|
||||
- Восстановление бэкапа
|
||||
```bash
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- План выполнения запроса
|
||||
```sql
|
||||
EXPLAIN SELECT * FROM table_name WHERE column1 = 'value';
|
||||
```
|
||||
|
||||
- Выполняет запрос и показывает фактический план выполнения с реальными метриками (время, количество строк и т.д.)
|
||||
```sql
|
||||
ANALYZE FORMAT=JSON SELECT * FROM table_name WHERE column1 = 'value';
|
||||
```
|
||||
|
||||
- `SHOW PROFILE` Показывает профиль выполнения запроса
|
||||
```sql
|
||||
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 |
|
||||
+----------------------+----------+
|
||||
|
||||
- Показывает активные соединения и выполняемые запросы.
|
||||
```sql
|
||||
SHOW FULL PROCESSLIST;
|
||||
```
|
||||
|
||||
- Показывает статус InnoDB, включая информацию о блокировках, транзакциях и буферах.
|
||||
```sql
|
||||
SHOW ENGINE INNODB STATUS;
|
||||
```
|
||||
|
||||
- Показывает статистику сервера
|
||||
```sql
|
||||
SHOW STATUS LIKE 'Innodb_buffer_pool_reads';
|
||||
```
|
||||
|
||||
- Завершает выполнение запроса по его ID.
|
||||
```sql
|
||||
KILL [process_id];
|
||||
```
|
||||
|
||||
- Перестраивает таблицу и освобождает неиспользуемое пространство.
|
||||
```sql
|
||||
OPTIMIZE TABLE table_name;
|
||||
```
|
||||
|
||||
- Обновляет статистику для оптимизатора.
|
||||
```sql
|
||||
ANALYZE TABLE table_name;
|
||||
```
|
||||
|
||||
- Проверяет целостность таблицы.
|
||||
```sql
|
||||
CHECK TABLE table_name;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
- Логирование медленных запросов
|
||||
```sql
|
||||
SET GLOBAL slow_query_log = 'ON';
|
||||
SET GLOBAL long_query_time = 1; -- Запросы дольше 1 секунды
|
||||
```
|
||||
|
||||
- Показывает статистику выполнения запросов.
|
||||
```sql
|
||||
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`
|
Loading…
x
Reference in New Issue
Block a user