MariaDB: установка и отличия от MySQL

Администрирование
MariaDB: установка и отличия от MySQL

MariaDB установка занимает не больше десяти минут, а на выходе вы получаете быструю и полностью открытую СУБД, совместимую с MySQL на уровне протокола и синтаксиса. MariaDB появилась как форк MySQL в 2009 году, когда оригинальный проект перешёл к Oracle, и с тех пор развивается независимым сообществом. Сегодня именно MariaDB стоит по умолчанию в репозиториях Debian и многих других дистрибутивов. В этой статье разберём, чем MariaDB отличается от MySQL, и пошагово установим её на VPS с Ubuntu или Debian.

MariaDB или MySQL: в чём разница

Обе СУБД выросли из одной кодовой базы, поэтому для типового сайта на WordPress, интернет-магазина или самописного приложения разница почти незаметна: те же SQL-запросы, тот же порт 3306, тот же клиент mysql. Различия проявляются в лицензировании, движках хранения и темпах развития отдельных функций.

КритерийMariaDBMySQL
ЛицензияПолностью GPL v2GPL + проприетарные редакции Oracle
Движок по умолчаниюInnoDB (форк XtraDB ранее)InnoDB
Дополнительные движкиAria, ColumnStore, S3, CONNECTОграниченный набор
Оптимизатор запросовСвои улучшения (например, оптимизация подзапросов)Свои улучшения (гистограммы, hash join)
JSONФункции JSON, тип — алиас LONGTEXTНативный бинарный тип JSON
РепликацияСовместима, есть multi-sourceКлассическая + групповая (Group Replication)
В репозиториях DebianПо умолчаниюНужен внешний репозиторий

Практические выводы:

  • Выбирайте MariaDB, если хотите ставить СУБД одной командой из штатных репозиториев, цените открытую разработку или используете панели управления, где она идёт по умолчанию.
  • Выбирайте MySQL, если приложение явно требует его специфичных возможностей — например, активно работает с бинарным типом JSON или использует Group Replication.
  • Для миграции в обе стороны на типовых схемах достаточно обычного дампа: mysqldump из одной СУБД корректно загружается в другую. Подробная инструкция по установке оригинального MySQL есть в статье установка MySQL на VPS.

Важный нюанс совместимости: начиная с MySQL 8.0 и MariaDB 10.4+ ветки разошлись заметнее (разные форматы репликации на уровне GTID, разные системные таблицы), поэтому «туда-обратно» между свежими мажорными версиями лучше переносить данные логическим дампом, а не копированием файлов.

Подготовка сервера

Для MariaDB под небольшой сайт хватит 1–2 ГБ оперативной памяти, но чем больше буферный пул InnoDB помещается в RAM, тем быстрее работают запросы. Дисковая подсистема критична: на NVMe время отклика базы в разы ниже, чем на обычных SSD и тем более HDD.

Перед установкой обновите систему:

sudo apt update && sudo apt upgrade -y

Проверьте, что порт 3306 не занят и старые пакеты MySQL не установлены:

sudo ss -tlnp | grep 3306
dpkg -l | grep -E 'mysql-server|mariadb-server'

Если вывод пуст — можно ставить.

Установка MariaDB на Ubuntu и Debian

В Debian 11/12 и Ubuntu 22.04/24.04 MariaDB есть в штатных репозиториях:

sudo apt install mariadb-server mariadb-client -y

Пакетный менеджер сам создаст системного пользователя, инициализирует каталог данных /var/lib/mysql и запустит службу. Проверьте статус:

sudo systemctl status mariadb
sudo systemctl enable mariadb

Первая команда должна показать active (running), вторая включает автозапуск после перезагрузки сервера.

Установка свежей версии из репозитория MariaDB

Если нужна конкретная актуальная ветка (например, 10.11 LTS или 11.x), подключите официальный репозиторий проекта:

curl -LsS https://r.mariadb.com/downloads/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=10.11
sudo apt update
sudo apt install mariadb-server -y

Скрипт определит дистрибутив, добавит ключ подписи и источник пакетов, после чего установка идёт стандартно через apt.

Первоначальная настройка безопасности

Сразу после установки запустите мастер базовой защиты:

sudo mariadb-secure-installation

Скрипт последовательно предложит:

  1. Установить пароль root или переключиться на unix_socket-аутентификацию (в Debian/Ubuntu она включена по умолчанию — root системы входит в СУБД без пароля, и это безопасно).
  2. Удалить анонимных пользователей — отвечайте Y.
  3. Запретить удалённый вход под root — Y.
  4. Удалить тестовую базу test — Y.
  5. Перезагрузить таблицы привилегий — Y.

Затем создайте отдельную базу и пользователя для приложения — работать под root не стоит:

CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'СложныйПароль123!';
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'localhost';
FLUSH PRIVILEGES;

Кодировка utf8mb4 обязательна, если в данных встречаются эмодзи или редкие символы: старая utf8 в MySQL/MariaDB хранит максимум 3 байта на символ.

Базовая настройка под ваш объём памяти

Конфигурация MariaDB в Debian/Ubuntu лежит в /etc/mysql/mariadb.conf.d/50-server.cnf. Минимальный набор параметров для VPS с 8 ГБ RAM, где кроме базы крутится и веб-сервер:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
# Секция [mysqld]
innodb_buffer_pool_size = 2G      # кэш данных и индексов InnoDB
innodb_log_file_size    = 512M    # журнал транзакций
max_connections         = 150     # по нагрузке приложения
skip-name-resolve                  # не тратить время на DNS при подключениях

После правок перезапустите службу и убедитесь, что она поднялась:

sudo systemctl restart mariadb
sudo mariadb -e "SHOW VARIABLES LIKE 'innodb_buffer_pool_size';"

Общий принцип: если сервер выделен только под базу, буферному пулу отдают 60–70 % RAM; если рядом живёт приложение — 25–40 %. Подробный разбор параметров с формулами есть в статье оптимизация настроек MySQL — для MariaDB они применимы почти без изменений.

Проверка работы и полезные команды

Подключитесь к серверу и посмотрите версию:

sudo mariadb
SELECT VERSION();
SHOW DATABASES;
SHOW ENGINES;
STATUS;

SHOW ENGINES покажет доступные движки хранения — у MariaDB в списке будут Aria и, в зависимости от сборки, другие фирменные движки. Команда STATUS выводит аптайм, кодировки и число обработанных запросов.

Мониторинг текущих подключений и медленных мест:

SHOW PROCESSLIST;
SHOW GLOBAL STATUS LIKE 'Threads_connected';
SHOW GLOBAL STATUS LIKE 'Slow_queries';

Что настроить сразу после установки

Рабочая база без резервных копий — это отложенная катастрофа. Настройте ежедневный дамп по расписанию: как это сделать через mysqldump, cron и ротацию старых копий, пошагово разобрано в статье автоматические бэкапы MySQL — все команды один в один работают и с MariaDB. Для критичных проектов дополнительно поднимают реплику: см. репликацию MySQL.

Также проверьте firewall: если приложение и база живут на одном сервере, порт 3306 наружу открывать не нужно вовсе:

sudo ufw status
# 3306 в списке разрешённых быть не должно, если нет внешних клиентов

Частые вопросы

Можно ли заменить MySQL на MariaDB без переписывания приложения?

В подавляющем большинстве случаев — да. MariaDB совместима с MySQL по протоколу, порту, синтаксису SQL и клиентским библиотекам: WordPress, Laravel, Django и другие популярные стеки работают с ней без изменения кода. Осторожность нужна только при использовании специфичных функций свежих версий MySQL 8.0+ — их поддержку стоит проверить заранее на тестовой копии.

Какая версия MariaDB сейчас актуальна для продакшена?

Ориентируйтесь на LTS-ветки: 10.6 и 10.11 поддерживаются по несколько лет и получают исправления безопасности. Ставить самый свежий короткоживущий релиз на боевой сервер имеет смысл, только если нужна конкретная новая функция.

MariaDB быстрее MySQL?

Однозначного ответа нет: на одних профилях нагрузки чуть быстрее MariaDB, на других — MySQL. Разница на типовом сайте измеряется процентами и почти всегда меньше эффекта от правильной настройки буферного пула, индексов и быстрого NVMe-диска. Выбирайте по экосистеме и требованиям приложения, а не по синтетическим бенчмаркам.

Как полностью удалить MariaDB, если что-то пошло не так?

Остановите службу и удалите пакеты вместе с конфигурацией: sudo systemctl stop mariadb, затем sudo apt purge mariadb-server mariadb-client -y и sudo apt autoremove -y. Каталог данных /var/lib/mysql пакетный менеджер по умолчанию не трогает — удалите его вручную, только если данные точно не нужны.

Работают ли с MariaDB инструменты mysqldump и mysql?

Да. MariaDB поставляет собственные бинарники (mariadb, mariadb-dump), но классические имена mysql и mysqldump сохранены как симлинки, поэтому все привычные скрипты и инструкции продолжают работать.


MariaDB раскрывается на быстрых дисках: буферный пул в RAM плюс NVMe-хранилище убирают задержки даже на тяжёлых выборках. На тарифе Start от Cheap-Host за 450 ₽/мес вы получаете KVM-VPS в Москве с 6 vCPU, 8 ГБ RAM и 96 ГБ NVMe — сервер выдаётся за 45–60 секунд. Заказать можно на cheap-host.onl.

Читайте также