Home » Как установить MariaDB на последний CentOS
Как установить MariaDB на последний CentOS

Как установить MariaDB на последний CentOS

Недавно настраивал базу данных для нового проекта и, как всегда, встал вопрос — какую СУБД выбрать? MySQL канонично, но MariaDB как форк выглядит интереснее: полная совместимость, активная разработка, открытый код без корпоративных игр Oracle. Особенно приятно, что MariaDB изначально присутствует в репозиториях CentOS, что делает установку максимально простой. В этой статье разберём детально, как правильно установить и настроить MariaDB на последний CentOS — от базовой установки до тонкой настройки производительности. Покажу не только стандартные команды, но и подводные камни, с которыми можно столкнуться в продакшене.

Зачем именно MariaDB?

MariaDB — это не просто форк MySQL, а полноценная СУБД с рядом преимуществ:

  • Совместимость с MySQL: можно мигрировать практически без изменений в коде
  • Активная разработка: новые фичи появляются быстрее, чем в MySQL
  • Открытый исходный код: никаких лицензионных ограничений
  • Лучшая производительность: особенно заметно на больших нагрузках
  • Расширенная функциональность: JSON, регулярные выражения, оконные функции

Статистика говорит сама за себя — MariaDB используют Wikipedia, Google, Red Hat и множество других крупных компаний. Если нужен надёжный VPS для разработки или выделенный сервер для продакшена, MariaDB будет отличным выбором.

Предварительная подготовка системы

Перед установкой MariaDB убедимся, что система готова. Проверим версию CentOS и обновим пакеты:

# Проверяем версию CentOS
cat /etc/centos-release

# Обновляем систему
dnf update -y

# Устанавливаем необходимые утилиты
dnf install -y wget curl vim net-tools

Также рекомендую сразу настроить firewall для будущих подключений:

# Проверяем статус firewall
systemctl status firewalld

# Если не запущен, запускаем
systemctl start firewalld
systemctl enable firewalld

Установка MariaDB на CentOS

В CentOS есть несколько способов установки MariaDB. Рассмотрим самые практичные:

Способ 1: Из стандартных репозиториев

Самый простой способ — использовать стандартные репозитории:

# Устанавливаем MariaDB сервер и клиент
dnf install -y mariadb-server mariadb

# Запускаем и добавляем в автозагрузку
systemctl start mariadb
systemctl enable mariadb

# Проверяем статус
systemctl status mariadb

Способ 2: Из официального репозитория MariaDB

Если нужна последняя версия, лучше использовать официальный репозиторий:

# Добавляем официальный репозиторий MariaDB
cat > /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = https://mirror.mariadb.org/yum/11.2/centos/9/x86_64
gpgkey = https://mirror.mariadb.org/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1
EOF

# Устанавливаем
dnf install -y MariaDB-server MariaDB-client

# Запускаем
systemctl start mariadb
systemctl enable mariadb

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

После установки обязательно запускаем скрипт безопасности:

# Запускаем скрипт настройки безопасности
mysql_secure_installation

Скрипт задаст несколько вопросов. Рекомендую отвечать так:

  • Set root password: YES (установите сложный пароль)
  • Remove anonymous users: YES
  • Disallow root login remotely: YES (если не планируете удалённый доступ)
  • Remove test database: YES
  • Reload privilege tables: YES

Настройка firewall

Открываем порт 3306 для подключений к базе данных:

# Открываем порт для MariaDB
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

# Проверяем правила
firewall-cmd --list-all

Тонкая настройка производительности

Стандартная конфигурация MariaDB подходит для небольших проектов, но для продакшена нужна оптимизация. Основной конфигурационный файл находится в /etc/my.cnf.d/server.cnf:

# Создаём бэкап оригинального файла
cp /etc/my.cnf.d/server.cnf /etc/my.cnf.d/server.cnf.backup

# Редактируем конфигурацию
vim /etc/my.cnf.d/server.cnf

Пример оптимизированной конфигурации для сервера с 4GB RAM:

[mysqld]
# Основные настройки
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

# Настройки памяти
innodb_buffer_pool_size = 2G
innodb_log_file_size = 256M
innodb_log_buffer_size = 64M
key_buffer_size = 256M
query_cache_size = 256M
query_cache_limit = 2M

# Настройки подключений
max_connections = 500
max_user_connections = 450
thread_cache_size = 50
table_open_cache = 4000

# Настройки производительности
innodb_flush_log_at_trx_commit = 2
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT

# Логирование медленных запросов
slow_query_log = 1
slow_query_log_file = /var/log/mariadb/slow.log
long_query_time = 2
log_queries_not_using_indexes = 1

После изменения конфигурации перезапускаем сервис:

systemctl restart mariadb
systemctl status mariadb

Создание пользователя и базы данных

Подключаемся к MariaDB и создаём пользователя для нашего приложения:

# Подключаемся к MariaDB
mysql -u root -p

# Создаём базу данных
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

# Создаём пользователя
CREATE USER 'myapp_user'@'localhost' IDENTIFIED BY 'secure_password123';

# Выдаём права
GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost';
FLUSH PRIVILEGES;

# Проверяем созданные объекты
SHOW DATABASES;
SELECT User, Host FROM mysql.user;

# Выходим
EXIT;

Мониторинг и диагностика

Настроим базовый мониторинг MariaDB:

# Проверяем процессы MariaDB
ps aux | grep mysql

# Смотрим использование памяти
free -m

# Проверяем дисковое пространство
df -h

# Мониторинг активных подключений
mysql -u root -p -e "SHOW PROCESSLIST;"

# Проверяем статус сервера
mysql -u root -p -e "SHOW STATUS LIKE 'Threads%';"

Полезные команды для диагностики производительности:

# Анализ медленных запросов
mysql -u root -p -e "SHOW VARIABLES LIKE 'slow_query%';"

# Проверка кэша запросов
mysql -u root -p -e "SHOW STATUS LIKE 'Qcache%';"

# Статистика InnoDB
mysql -u root -p -e "SHOW ENGINE INNODB STATUS\G"

Автоматизация и бэкапы

Создадим скрипт для автоматического бэкапа:

# Создаём директорию для бэкапов
mkdir -p /backup/mariadb

# Создаём скрипт бэкапа
cat > /usr/local/bin/mariadb-backup.sh << 'EOF'
#!/bin/bash

# Настройки
DB_USER="root"
DB_PASS="your_root_password"
BACKUP_DIR="/backup/mariadb"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=7

# Создаём бэкап
mysqldump -u $DB_USER -p$DB_PASS --all-databases --routines --triggers > $BACKUP_DIR/full_backup_$DATE.sql

# Сжимаем бэкап
gzip $BACKUP_DIR/full_backup_$DATE.sql

# Удаляем старые бэкапы
find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete

echo "Backup completed: full_backup_$DATE.sql.gz"
EOF

# Делаем скрипт исполняемым
chmod +x /usr/local/bin/mariadb-backup.sh

# Добавляем в cron (ежедневно в 2:00)
echo "0 2 * * * /usr/local/bin/mariadb-backup.sh" | crontab -

Сравнение с альтернативами

Критерий MariaDB MySQL PostgreSQL
Лицензия GPL (полностью открытая) GPL + коммерческая PostgreSQL License
Производительность Высокая Высокая Очень высокая
Совместимость с MySQL 100% 100% Частичная
JSON поддержка Полная Полная Расширенная
Репликация Отличная Отличная Хорошая
Размер сообщества Большой Огромный Большой

Продвинутые возможности

MariaDB предлагает несколько уникальных фич, которые отсутствуют в MySQL:

  • Columnstore: колоночная база данных для аналитики
  • Galera Cluster: синхронная репликация
  • Spider Storage Engine: шардинг данных
  • Расширенные JSON функции: более мощные, чем в MySQL

Пример использования JSON функций:

# Создаём таблицу с JSON полем
CREATE TABLE products (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255),
    specs JSON
);

# Вставляем данные
INSERT INTO products (name, specs) VALUES 
('Laptop', '{"cpu": "Intel i7", "ram": "16GB", "storage": "512GB SSD"}'),
('Phone', '{"cpu": "Snapdragon 888", "ram": "8GB", "storage": "128GB"}');

# Запрос с JSON фильтром
SELECT * FROM products WHERE JSON_EXTRACT(specs, '$.ram') = '16GB';

Интеграция с другими инструментами

MariaDB отлично интегрируется с современным стеком разработки:

Docker контейнеризация

# Dockerfile для MariaDB
FROM mariadb:11.2

ENV MYSQL_ROOT_PASSWORD=rootpass
ENV MYSQL_DATABASE=myapp
ENV MYSQL_USER=appuser
ENV MYSQL_PASSWORD=apppass

COPY ./custom.cnf /etc/mysql/conf.d/
COPY ./init.sql /docker-entrypoint-initdb.d/

EXPOSE 3306

Ansible автоматизация

# playbook.yml
---
- hosts: servers
  become: yes
  tasks:
    - name: Install MariaDB
      dnf:
        name: 
          - mariadb-server
          - mariadb
        state: present
    
    - name: Start MariaDB
      systemd:
        name: mariadb
        state: started
        enabled: yes
    
    - name: Configure firewall
      firewalld:
        port: 3306/tcp
        permanent: yes
        state: enabled
        immediate: yes

Устранение типичных проблем

Самые частые проблемы и их решения:

Проблема: MariaDB не запускается

# Проверяем логи
journalctl -u mariadb.service -f

# Проверяем права на файлы
ls -la /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql/

Проблема: Медленные запросы

# Включаем лог медленных запросов
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;

# Анализируем медленные запросы
mysqldumpslow /var/log/mariadb/slow.log

Проблема: Нехватка памяти

# Проверяем использование памяти
mysql -u root -p -e "SHOW STATUS LIKE 'Innodb_buffer_pool_pages%';"

# Оптимизируем настройки
# Уменьшаем innodb_buffer_pool_size до 70% от доступной RAM

Полезные ссылки

Заключение и рекомендации

MariaDB — это мощная, надёжная и полностью открытая СУБД, которая отлично подходит для любых задач: от небольших веб-приложений до высоконагруженных систем. Установка на CentOS максимально простая, а гибкие настройки позволяют оптимизировать производительность под конкретные требования.

Основные рекомендации:

  • Для разработки: используйте стандартные репозитории CentOS
  • Для продакшена: установите из официального репозитория MariaDB
  • Обязательно: запустите mysql_secure_installation
  • Настройте: мониторинг, бэкапы и оптимизацию производительности
  • Изучите: специфичные для MariaDB фичи (JSON, Columnstore, Galera)

Если планируете деплой серьёзного проекта, рекомендую взять VPS с достаточным объёмом RAM или выделенный сервер для максимальной производительности. MariaDB прекрасно масштабируется и при правильной настройке покажет отличные результаты.

Помните: база данных — это сердце любого приложения, поэтому не экономьте время на правильную установку и настройку. Потраченные сейчас несколько часов сэкономят недели отладки в будущем.


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked