К основному содержимому
🗄

MySQL / MariaDB

24 статей в разделе

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

Отдельно разобраны бэкапы: mysqldump для небольших баз, Percona XtraBackup для горячего копирования без остановки сервера, восстановление по бинлогу на конкретный момент времени и перенос данных при миграции с MySQL на MariaDB или обновлении с 5.7 до 8.0.

Много материала про диагностику: slow query log и EXPLAIN для медленных запросов, дедлоки InnoDB и как их читать, ошибка Too many connections и утечки соединений, разрастание ibdata1 и способы освободить место на диске.

  • Настройка my.cnf, индексы и Performance Schema
  • Бэкапы: mysqldump, XtraBackup, восстановление по бинлогу
  • Репликация: Master-Slave, GTID и Galera Cluster
  • Диагностика: медленные запросы, дедлоки, лимиты соединений
Оптимизация MySQL/MariaDB: настройка my.cnf Настройка my.cnf/my.ini для оптимизации MySQL и MariaDB: innodb_buffer_pool_size, max_connections, query_cache. Формулы расчёта под объём RAM сервера. mysqldump: резервное копирование и восстановление MySQL Полное руководство по mysqldump: бэкап одной БД, всех БД, только структуры. Автоматизация через cron, сжатие gzip, восстановление из дампа. Команды и примеры. Управление пользователями и правами доступа в MySQL/MariaDB Создание пользователей MySQL: CREATE USER, GRANT, REVOKE, DROP USER. Настройка прав на базу данных, таблицу, столбец. Просмотр привилегий через SHOW GRANTS. Сброс пароля root в MySQL и MariaDB: пошаговое руководство Как сбросить пароль root MySQL 8.0, MySQL 5.7 и MariaDB: через --skip-grant-tables, ALTER USER, mysqladmin. Решение при ошибке Access denied for user root. MySQL Slow Query Log: включение и анализ медленных запросов Как включить и анализировать Slow Query Log в MySQL и MariaDB: long_query_time, mysqldumpslow, pt-query-digest. Оптимизация медленных SQL-запросов на VPS. MySQL индексы: типы, создание и оптимизация запросов Типы индексов MySQL: PRIMARY KEY, UNIQUE, INDEX, FULLTEXT, COMPOSITE. Создание индексов, анализ через EXPLAIN, оптимизация запросов. Когда индекс не помогает. MySQL репликация Master-Slave: настройка и мониторинг Настройка MySQL репликации Master-Slave: binlog, server-id, CHANGE MASTER TO. Мониторинг через SHOW SLAVE STATUS. Репликация MariaDB на VPS шаг за шагом. Импорт большой базы данных MySQL: оптимизация и ускорение Как ускорить импорт большого MySQL дампа: max_allowed_packet, innodb_buffer_pool_size, отключение autocommit, mydumper/myloader. Импорт .sql.gz файла на VPS. Миграция с MySQL на MariaDB: отличия и совместимость Как мигрировать с MySQL на MariaDB: экспорт данных, установка MariaDB, импорт, проверка совместимости. Отличия MySQL 8.0 vs MariaDB 10.x на VPS. MariaDB Galera Cluster: настройка на 3 узлах Настройка MariaDB Galera Cluster на 3 серверах: wsrep_cluster_address, первый запуск --wsrep-new-cluster, мониторинг wsrep_cluster_size. MySQL кодировка utf8mb4: поддержка emoji и Unicode Настройка кодировки utf8mb4 в MySQL и MariaDB: изменение charset и collation базы, таблиц и колонок. Поддержка emoji (4-байтный Unicode) в MySQL. Горячий бэкап MySQL с Percona XtraBackup Создание горячих резервных копий MySQL без остановки сервера с помощью Percona XtraBackup. Полный и инкрементальный бэкап, восстановление. MySQL Performance Schema: мониторинг узких мест сервера Использование MySQL Performance Schema для поиска медленных запросов, анализа блокировок, мониторинга памяти и ввода-вывода без внешних инструментов. MySQL JSON поля: хранение и запросы к JSON-данным Работа с JSON-типом данных в MySQL 5.7+. Создание полей, операторы ->, ->>, JSON_EXTRACT, индексы на JSON, функции JSON_SET и JSON_ARRAY. InnoDB и MyISAM в MySQL: разница и что выбрать InnoDB против MyISAM: транзакции, блокировки строк, восстановление после сбоя. Таблица отличий и команды переключения движка таблицы. EXPLAIN и EXPLAIN ANALYZE: как читать план запроса Разбираем столбцы EXPLAIN в MySQL: type, key, rows, Extra. Отличие от EXPLAIN ANALYZE и признаки медленного запроса в плане выполнения. Партиционирование таблиц MySQL: когда оно помогает Партиционирование MySQL по RANGE и HASH: когда ускоряет запросы, а когда только усложняет схему. Примеры создания секций и их удаления. Binlog MySQL: восстановление базы на точку во времени Как включить binlog в MySQL и восстановить базу на момент перед сбоем: полный бэкап плюс mysqlbinlog, позиции и временные метки. GTID-репликация MySQL: настройка и смена мастера GTID-репликация MySQL: чем отличается от координат бинлога, как настроить и переключить реплику на нового мастера без ручного поиска позиции. ProxySQL: разделение чтения и записи между узлами Как ProxySQL разделяет чтение и запись между MySQL-серверами: установка, hostgroups, query rules и проверка балансировки. Дедлоки InnoDB: диагностика блокировок и их устранение Почему возникают дедлоки в InnoDB, как читать SHOW ENGINE INNODB STATUS и какие правила в коде снижают число блокировок. Too many connections в MySQL: лимиты и утечки соединений Что означает ошибка Too many connections в MySQL, как проверить лимит max_connections и найти утечки соединений в коде. Обновление MySQL 5.7 до 8.0: порядок действий и ловушки Как обновить MySQL 5.7 до версии 8.0 без потери данных: проверка совместимости, порядок команд и частые ловушки после апгрейда. ibdata1 растёт: как освободить место на диске в MySQL Почему растёт файл ibdata1 в MySQL, как проверить, что занимает место, и как безопасно уменьшить общий табличный файл.