Меню

Настройка mariadb на windows



Установка и базовая оптимизация MariaDB в CentOS

В этой статье я рассмотрю особенности установки, базовой настройки и оптимизации сервера баз данных MariaDB. Передо мной стояла задача установитьc MariaDB и провести базовую настройку на Linux CentOS 7. Так как это актуальный вопрос, я надеюсь статья будет вам полезна. В конце статьи я приведу несколько примеров конфигурационных файлов, а вы с помощью их сможете подобрать параметры под свой сервер.

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

С недавнего времени MariaDB входит в стандартный для CentOS 7 репозиторий base, но в данном репозитории содержится версия 5.5. Эта версия уже не актуальна, в ней есть проблемы с производительностью и нет полнотекстового поиска в InnoDB. На момент написания статьи актуальная версия MariaDB — 10.4, поэтому подключившись к нашему Linux серверу по ssh мы для начала подключим репозиторий разработчика mariadb.org и после запустим установку сервера БД.

Я привык работать с файлами через редактор nano, устанавливаем его через yum:

yum install nano -y

И открываем файл репозитория для редактирования:

И добавляем туда следующую информацию:

Сохраняем файл и запускаем установку:

yum install MariaDB-server MariaDB-client -y

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

systemctl start mariadb
systemctl enable mariadb

Проверяем статус сервиса:

systemctl status mariadb

Сервис mariadb запущен и работает, значит можно продолжить настройку.

Защита и безопасность MariaDB

После того, как мы установили и запустили MariaDB, можем перейти к настройкам безопасности. Запускаем встроенный сценарий:

Данный сценарий подробно описывает каждый шаг и подробно останавливаться на каждом из них мы не будем. Сначала он запросит root-пароль, но после начальной установки его нет и поэтому мы нажимаем enter и на следующем этапе задаем сложный пароль (от этого зависит насколько безопасным, будет ваш сервер). После можно до конца выполнения сценария нажимать «enter», в процессе будут удалены анонимные пользователи, удаленный root-логин, а также тестовые таблицы и будут перезагружены привилегии.

Для подключения к mariadb серверу нужно создать правила в Linux файерволе с помощью iptables:

iptables -I INPUT -p tcp —dport 3306 -m state —state NEW,ESTABLISHED -j ACCEPT
iptables-save > /etc/sysconfig/iptables

Опционально, можно разрешить исходящие подключения к другим базам MariaDB.

iptables -I OUTPUT -p tcp —sport 3306 -m state —state ESTABLISHED -j ACCEPT

Проверка соединения с сервером MariaDB

Нужно убедиться, что установка MariaDB выполнена успешно.

Подключимся к серверу БД с помощью встроенного инструмента mysqladmin:

Команда выдаст результат:

Это означает, что установка MariaDB выполнена успешно, база данных работает и доступна.

Можно подключиться к консоли сервера maridb для интерактивного выполнения sql команд:

Настройка конфигурационного файла MariaDB

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

Для общего понимания разберем основные параметры конфигурационного файла my.cnf:

  • datadir — каталог для хранения файлов БД;
  • tmpdir – каталог для хранения временных файлов;
  • skip-name-resolve – отключает DNS резолвинг;
  • max_allowed_packet — максимальный размер пакета. Если в БД используются поля blob, нужно выставлять значение не менее чем самое большое поле;
  • max_connections — максимальное количество открытых соединений, параметр определяет, сколько клиентов одновременно могут работать с сервером БД;
  • Секция # Cache parameters — все что связано с кешем запросов, устанавливать слишком высокие значения не рекомендуется, так как потребление ресурсов сервером БД станет расти;
  • Секция # InnoDB parameters — все что связано с таблицами innodb;
  • innodb_buffer_pool_size — буфер кеша для данных и индексов, если на сервере размещено 1-2 проекта, выставляйте значение равное 70-80% доступной оперативной памяти;
  • innodb_flush_method — для Linux ставим значение O_DIRECT , это отключит кеширование на уровне ОС;
  • innodb_flush_log_at_trx_commit — этот параметр влияет на скорость записи innoDB таблиц. Отнеситесь серьезно к данному параметру, выставляя значение 0, вы получаете большую производительность, но риск потери данных возрастает. Я предпочитаю устанавливать значение 2, так как большой прирост в работе сервера БД я не замечал, а безопасность превыше всего.

Оптимизация и тюнинг производительности MariaDB

Хочу добавить, что опираться конкретно на мой конфигурационный файл не нужно, под каждый сервер и под каждый проект, желательно подбирать собственные параметры. Я советую воспользоваться скриптами для автоматической проверки конфигурации MariaDB, которые после выполнения дают некоторые рекомендации для оптимизации сервера.

Установим скрипт Tuning-Primer.sh:

yum install bc net-tools -y

chmod +x tuning-primer.sh

После выполнения, скрипт выдаст вам всю информацию, с которой нужно ознакомиться. Важные моменты будут выделены красным цветом и их вам по возможности нужно будет исправить.

Например, у меня скрипт сразу же выдал, что используемое количество коннектов гораздо меньше, чем я выставил:

Данный параметр можно изменить, как и в файле my.cnf так и через консоль, я убавил до 10 и скрипт меня похвалил:

С помощью подобных манипуляций можно привести к идеалу работу вашего сервера БД.

Хочу заметить, что рекомендованное непрерывное время работы сервера БД не менее 48 часов, тогда информация будет более точной и на основе этого вам нужно будет провести тюнинг.

К моему конфигурационному файлу, можно добавить секцию для активации журнала медленных запросов, это поможет вам анализировать работу ваших проектов. В секцию «mysqld» добавляем:

Так же нужно создать лог файлы, для ошибок работы MariaDB и журнала медленных запросов:

Читайте также:  Windows vista настройки подключения к сети

touch /var/log/mysql-error.log
touch /var/log/slow-query.log

Делаем рестарт сервиса:

systemctl restart mariadb

Просмотреть журнал медленных запросов можно открыв файл /var/log/slow-query.log или же проверять его в режиме реального времени:

tail -f /var/log/slow-query.log

Таким образом вы можете анализировать запросы к БД вашего проекта и на основе этого проводить аудит.

После любых изменений настроек БД нужно проверять конфигурацию на наличие ошибок:

Обязательно после всех работ с настройкой баз данных выполняйте проверку статуса на предмет ошибок выполняя команду:

systemctl status mariadb -l

Основные команды для работы в консоли MariaDB

Ниже приведены основные команды cli, которые чаще всего приходится использовать администратору при работе в консоли maridb.

Для локального входа в консоль MariaDB, выполните:

Для удаленного подключения к серверу БД MariaDB:

mysql -u root -p -h 10.1.1.20

create database db1; — создать БД с именем db1

show databases; — вывести список созданных БД

use db1; — войти в БД с именем db1

show tables; — вывести таблицы БД в которой мы находимся

create user ‘test’@’localhost’ identified by ‘123456’; — создать пользователя test и задать пароль 123456(используйте более сложные пароли)

grant all privileges on database_name.* to ‘test’@’localhost’; — даем полные права пользователю test

flush privileges; — обновляем все привилегии

show processlist; — посмотреть активные соединения в БД или же можно использовать команду:

show status where `variable_name` = ‘Threads_connected’;

Так же из консоли mysql можно просматривать или изменять параметры, например:

SHOW VARIABLES LIKE ‘max_error_count’;

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

Источник

Установка, настройка, бэкапы в MariaDB

База данных важный элемент, к примеру, для такого стека как LAMP (Linux, Apache, MySQL, PHP). В RedHat (CentOS) MariaDB установлен по умолчанию.

В этой этой статье вы узнаете, как установить MariaDB на CentOS 7, как выполнять основные задачи администрирования и как делать бэкапы и восстановление баз.

Базовая конфигурация MariaDB

Сначала установим MariaDB и выполним базовые настройки. В этом разделе вы узнаете, как это сделать и как сделать небольшие изменения в файле конфигурации /etc/my.cnf.

Чтобы установить MariaDB, выполните следующие действия:

  1. Введите yum install mariadb mariadb-server mariadb-test -y.
  2. Введите systemctl start mariadb; systemctl enable mariadb, чтобы запустить и включить сервис базы данных.
  3. Убедитесь, что mariadb запущен, выполнив systemctl status mariadb. Эта команда покажет текущее состояние, включая последние сообщения, которые были зарегистрированы. В листинге 1 показано, как это выглядит.

После установки MariaDB рекомендуется также защитить его. Для этого выполните mysql_secure_installation. Эта команда запустит список вопрсов, которые описаны ниже.

В листинге 2 показаны выходные данные команды, причем все вопросы выделены жирным шрифтом:

Enter current password for root (enter for none): если у пользователя БД root уже есть пароль, введите его здесь. Если нет, просто нажмите Enter, чтобы продолжить.

Set root password? [Y/n]: ответьте y, чтобы установить пароль для root, и введите его два раза.

Remove anonymous users? [Y/n]: ответьте y, чтобы удалить анонимных пользователей, которые по умолчанию есть в БД.

Disallow root login remotely? [Y/n]: ответьте y, чтобы гарантировать, что пользователь root может подключаться к БД только локально. Для пользователей с правами root, которые хотят получить удаленный доступ, все равно надо сначала подключиться к серверу по SSH.

Remove test database and access to it? [Y/n]: после установки создается тестовая БД. По соображениям безопасности рекомендуется удалить эту базу, но поскольку в этой статье вы научитесь работать с MariaDB, вы должны сохранить ее. Поэтому выбираем n.

Reload privilege tables now? [Y/n]: ответьте y, чтобы сохранить и применить внесенные изменения.

MariaDB можно использовать локально или по сети. Преимущества есть у обоих вариантов. Если MariaDB доступен по сети, легко настроить стек сервисов, где база работает на одном сервере, а связанные сервисы работают где-то еще. Этот вараинт предлагает максимально возможную производительность.

Если же вы хотите максимально повысить безопасность, рассмотрите возможность полного изолирования БД от сети. Это значит, что все сервисы, использующие БД, доступны на одном сервере.

Чтобы определить, будет ли MariaDB использовать сеть, вы измените несколько параметров в файле конфигурации /etc/my.cnf (который является основным файлом конфигурации MariaDB). В листинге 3 показан пример содержимого этого файла.

В разделе [mysqld] вы можете установить множество параметров, включая следующие:
bind-address адрес, по которому сервис БД будет прослушиваться.
Установите значение ::, если вы хотите разрешить доступ через все IP-адреса (IPv4, а также IPv6), или оставьте пустым, чтобы разрешить доступ только через IPv4. Кроме того, вы можете указать IP-адреса конкретных интерфейсов, с которыми база данных должна связываться.

skip-network установите значение 1, чтобы отключить всю сеть.
В этом случае связь с другими локальными процессами будет проходить через сокеты, которые по умолчанию находятся в /var/lib/mysql/mysql.sock. При использовании этого подхода клиентскому ПО также требуется доступ к базе данных через сокеты, и оно не может использовать localhost и IP для доступа к локальной БД.

port указывает порт для прослушивания соединений TCP/IP.

Для получения дополнительной информации о настройках, которые вы можете настроить, смотрите вывод команды /usr/libexec/mysqld —help —verbose.

Читайте также:  Настройка windows 7 для быстрой работы

Если к базе данных требуется удаленный доступ, необходимо также открыть файрвол. MariaDB использует сервис-файл firewalld mysql, который находится в /usr/lib/firewalld/services/mysql.xml, поэтому в файрволе можно легко открыть доступ через стандартный порт 3306 всего одной строкой:

В упражнении 1 вы узнаете, как установить базу данных MariaDB.

Упражнение 1. Установка MariaDB

В этом упражнении вы выполните базовую установку MariaDB. Вы также отключите доступ к сети и примените настройки безопасности. Затем вы проверите, что некоторые системные базы данных по умолчанию доступны.

1. Введите yum install -y mariadb mariadb-server mariadb-test для установки БД.

2. Введите systemctl start mariadb; systemctl enable mariadb чтобы запустить и включить в автозагрузку mariadb.

3. Убедитесь, что mariadb прослушивается, введя ss -tulpen | grep mysql. Вы должны увидеть процесс mysqld, прослушивающий порт 3306.

4. Отключите сетевое взаимодействие, добавив строку skip_networking=1 в /etc/my.cnf и перезапустите mariadb, используя systemctl restart mariadb.

5. Настройте базовую защиту mariadb, используя mysql_secure_installation. Установите пароль для root, отключите удаленный доступ для root, удалите тестовую базу данных и всех анонимных пользователей.

6. Введите mysql -u root -p, чтобы войти в базу данных под пользователем root.

7. В командной строке MariaDB введите show databases; для отображения всех доступных базы. Результат должен выглядеть как в листинге 4.

8. Введите exit; чтобы выйти из оболочки MariaDB.

При работе с MariaDB важно знать разницу между базами данных, таблицами и записями. Таблица 1 суммирует их.

Таблица 1. Элементы базы данных

Название Описание
Database (База данных)

Совокупность данных, состоящая из разных таблиц. Сотрудники могут быть именем базы данных.
Table (Таблица) Классы элементов, которые используются в базе данных. В базе данных сотрудника вы можете иметь такие таблицы, как статус занятости и адресная книга. В базе данных таблицы могут быть взаимосвязаны. В каждой базе данных у вас должна быть хотя бы одна таблица.

Fields (Поля) Тип информации, которая создается в таблице. В таблице адресной книги у вас есть такие поля, как, например, название, улица, город.

Record (Запись) Определенный набор данных хранится в таблице. Например, у каждого клиента есть запись в базе данных адресной книги, в которой содержатся записи об имени и улице.

Value (Значение) Конкретные значения, которые хранятся в поле. Например, поле имени в таблице адресной книги может иметь значение Линда Джонс.

Выполнение простых задач администрирования базы данных

Даже если вы являетесь администратором Linux, полезно иметь базовые знания о командах администрирования базы данных. Это не делает вас администратором базы данных, но помогает выполнять основные задачи по настройке.

Чтобы начать работу с базами данных, вам необходимо сначала подключиться к службе баз данных. Для этого используйте команду mysql: mysql -u root -h localhost -p. (Даже если вы используете MariaDB, многие команды все еще являются командами mysql.)

Эта команда регистрирует вас как пользователя root на сервере localhost, а затем запрашивает пароль. После входа в систему, как показано в упражнении 1, вы входите в интерактивную оболочку MySQL, где будете работать с базами данных. Вы уже видели команду show databases;, которая отображает список доступных баз данных.

Работа с базами данных выглядит как работа с каталогами. Администратор создает базу данных, затем начинает использовать эту базу и затем вводит в неё контент. Команда USE используется как команда cd из оболочки bash. Там, где cd позволяет легко переключаться между каталогами, команда USE позволяет переключаться между базами данных.

Попробуйте, например, следующие команды (после входа в среду оболочки MySQL от имени root):

  1. Введите CREATE DATABASE addressbook; чтобы создать базу данных с именем addressbook.
  2. Введите USE addressbook; чтобы начать использовать эту базу.
  3. Введите SHOW TABLES; чтобы показать текущие таблицы. Сейчас у вас нет ни одной таблицы.
  4. Теперь введите USE mysql; чтобы переключиться на базу данных mysql.
  5. Введите SHOW TABLES;, которая покажет множество таблиц, включая таблицу с именем user.
  6. Введите describe user;, чтобы получить имена из таблицы user. Команда дает подробное описание, как видно в листинге 5. Она сообщает, какие записи или поля доступны в таблице, какой тип данных, и показывает некоторые дополнительные атрибуты содержимого таблицы.

Листинг 5

В MariaDB, как и в MySQL, вы будете использовать язык структурированных запросов (SQL) для манипулирования данными в базе данных. Основные команды позволяют создавать, читать, обновлять и удалять. Эти команды также называются операциями CRUD: create, select, update, и delete.

Перед вставкой данных в базу данных вам необходимо создать хотя бы одну таблицу. Для этого используйте CREATE TABLE, а затем имя таблицы, которую вы хотите добавить, например CREATE TABLE addressbook(name VARCHAR(40), street VARCHAR(40));. При определении таблицы вы также определяете записи, которые вы хотите добавить в таблицу, в дополнение к типу данных, который будет храниться в этой таблице. В этом примере это просто тип VARCHAR, который позволяет хранить 40 байт переменных данных.

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

После того, как вы выяснили, какие поля необходимы для создания данных в таблице, вы можете использовать команду INSERT, чтобы добавить их: INSERT INTO addressbook (name,street) VALUES (‘linda jones’,’state street’);. В этой команде вы сначала ссылаетесь на имя таблицы, в которую необходимо добавить данные, перечисляете конкретные атрибуты, которые вы хотите заполнить, а затем перечисляете значения, которые вы хотите ввести в эти конкретные атрибуты.

Чтобы убедиться, что команда для вставки данных сработала, используйте SELECT * from addressbook;.

Чтобы удалить данные, используйте команду DELETE, например DELETE FROM addressbook WHERE name = ‘lucy ball’;. Обратите внимание, что в этой команде важно не забыть часть WHERE. Если вы опустите его, все записи в таблице будут удалены. Также обратите внимание, что в этой команде (как и в любой другой команде, которую вы используете в этом примере) вам необходимо указать, к какой таблице вы хотите применить изменения.

Чтобы изменить данные, используйте команду UPDATE: например, UPDATE addressbook SET street=’main street’ WHERE name = ‘linda jones’;. Обратите внимание, что в этой команде вам нужно использовать оператор WHERE, чтобы указать MariaDB, какую запись использовать, и команду SET, чтобы указать атрибут, который вы хотите изменить, с его новым значением.

Чтобы прочитать записи, используйте команду SELECT: например, SELECT name,street FROM addressbook;. Кроме того, вы можете выбрать отображение всех атрибутов, используя *: SELECT * FROM addressbook; и используя where, вы можете создавать простые запросы, фильтруя по конкретным результатам: SELECT * FROM addressbook WHERE street=’State street’;.

При использовании предложений WHERE вы можете использовать разные операторы:

<> Не равно

>= Больше или равно

/root/videos-db.dump. Вы также можете использовать команду mysqldump для создания резервной копии всех баз данных, выполнив mysqldump -u root -p —alldatabases —databases > /root/all-db.dump.

Для создания физических резервных копий рекомендуется использовать тома LVM. В LVM вы можете создать снапшот, который содержит фактическое состояние тома LVM на момент создания снапшота. Затем будет сделано само физическое резервное копирование из снапшота, а не из открытого тома LVM.

Снапшот LVM похож на фотографию логического тома LVM. Сделав резервную копию снапшота, вы обязательно получите стабильную резервную копию среды, в которой в настоящий момент нет открытых файлов. Чтобы создать моментальный снапшот тома базы данных, ее необходимо временно остановить. Грубо говоря, процедура создания моментального снапшота тома базы данных выглядит следующим образом:

1. В базе данных mariadb используйте команду FLUSH TABLES WITH READ LOCK;. Команда гарантирует, что никакие файлы не используются при создании снапшота. Эта команда закрывает все таблицы и блокирует все таблицы для всех баз данных с глобальной блокировкой чтения. Это удобный способ убедиться, что в базу данных ничего не записывается во время создания моментального снапшота на следующем шаге этой процедуры. Альтернативное решение — полностью остановить сервис mariadb с помощью systemctl stop mariadb и запустить ее снова после создания снапшота.

2. В другом окне терминала введите lvcreate -s -n lvdatabase-snap -L 1G /dev/vgname/lvdatabase. В этой команде обязательно используйте правильные имена тома и группы томов. Также обратите внимание на размер тома снимка. Как правило, 10% размера исходного тома считается достаточно большим, если предположить, что том снапшота будет удален в конце процедуры.

3. Теперь, когда снапшот создан, введите UNLOCK TABLES; чтобы снова запустить базу данных.

4. Запустите задание резервного копирования.

5. После завершения задания резервного копирования используйте lvremove, чтобы удалить том снапшота.

В упражнении 3 вы можете узнать, как создать физическую резервную копию базы данных.

Упражнение 3. Создание физической резервной копии базы данных MySQL.

1. Для начала узнайте, где хранится актуальная база данных. Для этого выполните mysqladmin -u root -p variable | grep datadir. Эта команда показывает каталог в файловой системе, где хранятся данные. Как правило, результатом является каталог /var/lib/mysql.

2. Выполните команду df /var/lib/mysql, чтобы узнать, какой том LVM используется для размещения этого расположения. (Эта команда будет работать, только если во время установки был создан том LVM для размещения физической базы данных.)

3. Убедитесь, что в группе томов, в которой находится том базы данных, нераспределенное дисковое пространство все еще доступно, используя vgs vgname.

4. На этом этапе вам необходимо временно заморозить базу данных, чтобы никакие изменения не могли быть применены во время создания моментального снимка. Для этого подключитесь к базе данных в качестве пользователя root командой mysql -u root -p и введите FLUSH TABLES WITH READ LOCK;. Не закрывайте эту сессию, потому что она снимет блокировку!

5. В другом терминальном сеансе создайте снимок LVM. Следующая команда предполагает, что именем группы томов является vgdata, а именем тома LVM, на котором размещается база данных, является lvmariadb: lvcreate -L 2G -s -n lvmariadbsnapshot /dev/vgdata/lvmariadb.

6. Вернитесь к сеансу MariaDB и введите UNLOCK TABLES;, чтобы разблокировать таблицы.

7. Вернитесь в другой сеанс и смонтируйте снимок mkdir /mnt/snapshot; mount -o nouuid /dev/vgdata/lvmariadb-snapshot /mnt/snapshot.

8. Выполните tar -cvf /root/mariadb.tar /mnt/snapshot/lib/mysql для создания резервной копии.

9. После успешного создания резервной копии необходимо размонтировать и удалить снимок: umount /mnt/snapshot; lvremove /dev/vgdata/lvmariadb-snapshot.

Восстановление резервных копий

Восстановление резервной копии зависит от того, какой у вас тип копии — логическая или физическая. Чтобы восстановить логическую резервную копию, используйте команду типа mysql -u root -p videos SQL

Источник

Настройка техники © 2022
Внимание! Информация, опубликованная на сайте, носит исключительно ознакомительный характер и не является рекомендацией к применению.

Adblock
detector