Как развернуть бд на сервере
Перейти к содержимому

Как развернуть бд на сервере

  • автор:

 

Разворачиваем MySQL: установка и настройка

MySQL на сегодняшний день является одной из наиболее распространенных в мире. Достаточно сказать, что по рейтингам 2021 года данная СУБД лишь немного уступала Oracle.

В серии из трех статей мы рассмотрим основные моменты связанные с редакциями MySQL, обсудим архитектуру, процесс установки и базовой настройки. Во второй статье мы займемся созданием репликации БД. И в третьей части мы поговорим о различных способах резервного копирования данных в БД.

Начнем с рассмотрения редакций СУБД MySQL.

Ванильная сборка

Классическая версия MySQL от Oracle это свободная реляционная система управления базами данных. На сегодняшний день разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Такая несколько сложная «пищевая цепочка» не помешала данной БД получить широкое распространение. Далее, когда мы будем рассматривать практические примеры развертывания, будет использоваться именно классическая редакция MySQL.

MariaDB

СУБД MariaDB — ответвление MySQL, разрабатываемое сообществом под лицензией GNU GPL. Разработку и поддержку MariaDB осуществляет компания MariaDB Corporation Ab и фонд MariaDB Foundation. При этом СУБД MariaDB совместима с MySQL до версии 5.6.

Движки MySQL

База данных может работать с несколькими типами движков (engines). В таблице ниже приведены основные характеристики каждого из них.

Name

Vendor

License

Under active development

MySQL versions

MariaDB versions

Sphinx Technologies Inc.

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

MyISAM

MyISAM это базовый тип хранилища MySQL. Однако, в нем отсутствуют блокировки на строки и нет транзакций. Как можно понять из названия, движок основывается на принципах ISAM и обладает в сравнении с ним рядом полезных дополнений. Так, он имеет возможности по сжатию данных, по созданию полнотекстовых индексов. Но при этом СУБД не является устойчивой к сбоям и не выполняет требования ACID.

Поддерживается с версий MySQL 3.x, до версий MySQL 5.5, являлась системой хранения по умолчанию.

ISAM (Indexed Sequential Access Methodиндексно-последовательный метод доступа) — способ хранения данных с возможностью быстрого доступа к ним, является наиболее популярным методом индексирования.

ACID (atomicity, consistency, isolation, durability) — набор требований к транзакционной СУБД, обеспечивающий наиболее надёжную и предсказуемую её работу — атомарность, согласованность, изоляцию и устойчивость.

Атомарность гарантирует, что никакая транзакция не будет зафиксирована в системе частично. Будут либо выполнены все её подоперации, либо не выполнено ни одной.

Согласованность – транзакция, достигающая своего нормального завершения и тем самым фиксирующая свои результаты, сохраняет согласованность базы данных.

Изоляция — во время выполнения транзакции параллельные транзакции не должны оказывать влияния на её результат.

Устойчивость — независимо от проблем с питанием или сбоях в оборудовании изменения, сделанные успешно завершённой транзакцией, должны остаться сохранёнными после возвращения системы в работу.

InnoDB

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

Преимуществами InnoDB является возможность блокировки на уровне таблиц (читаем, если нет блокировки на запись, пишем, если нет блокировок), поддержка восстановления по времени (binary log), репликаций и конкурентного INSERT.

Установка MySQL

Теперь перейдем непосредственно к установке СУБД. Процесс не должен вызвать особых сложностей:

sudo apt update && sudo apt upgrade -y && sudo apt-get install -y mysql-server

После установки необходимо выполнить харденинг, то есть указать настройки безопасности:

• Удалить анонимных пользователей? (Нажмите y | Y для Yes, любую другую клавишу для No): y

• Запретить вход в систему удаленно? (Нажмите y | Y для Yes, любую другую клавишу для No): y

• Удалить тестовую базу данных и получить доступ к ней? (Нажмите y | Y для Yes, любую другую клавишу для No): y

• Обновить таблицы привилегий сейчас? (Нажмите y | Y для Yes, любую другую клавишу для No): y

Далее перезапустим MySQL:

sudo systemctl status mysql

sudo systemctl enable mysql

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

Архитектура MySQL

Прежде, чем выполнять какие-либо настройки и запросы в СУБД давайте посмотрим, из чего состоит MySQL.

Давайте посмотрим, как это устроено в процессах:

$ ps ax | grep mysqld

$ ps –eLf | grep mysqld

Как мы видим, процесс /usr/sbin/mysqld после успешного запуска порождает множество подпроцессов, которые использует СУБД в своей работе.

На файловом уровне MySQL хранит все данные в каталоге /var/lib/mysql:

$ sudo ls -l /var/lib/mysql

О некоторых представленных здесь файлах и каталогах мы еще будем говорить в следующих статьях.

Основной конфигурационный файл находится в /etc/mysql/mysql.conf.d/:

Для тестовой инсталляции как правило вносить изменения в этот файл не нужно.

Работаем с таблицами

Далее выполним sudo mysql и перейдем непосредственно в командную среду СУБД.

Структура таблиц после установки имеет следующий вид

Сейчас здесь присутствуют только служебные таблицы, созданные вместе с СУБД.

Создадим свою базу Otus_test:

CREATE DATABASE IF NOT EXISTS Otus_test;

Можно было бы прибегнуть к использованию команды CREATE DATABASE но тогда мы бы получили ошибку, если бы такая база существовала.

Перейдем в созданную БД:

Далее давайте создадим тестовую таблицу в которой будет три столбца: id, name, address. Первичным ключом будет id. В качестве движка явно укажем InnoDB.

CREATE TABLE Otus_table

id int NOT NULL AUTO_INCREMENT,

name char(20) NOT NULL,

address char(20) NULL,

Добавим пару записей в таблицу:

INSERT Otus_table(Name, Address) VALUES (‘Admin’, ‘Moscow’);

INSERT Otus_table(Name, Address) VALUES (‘User’, ‘N/A’);

И сделаем выборку по таблице:

SELECT * FROM Otus_table;

Как видно все записи успешно добавлены в таблицу.

Немного о кодировках

Для промышленного использования СУБД необходимо, чтобы данные в кириллице хранились и отображались корректно. Кодировка (characher set) — набор используемых символов. Представление (collation) — набор правил для сравнения символов в наборе. Символьная кодировка может быть задана для сервера, базы данных, таблицы и колонок в таблице.

В качестве примера настроим кодировку UTF8 в качестве кодировки по-умолчанию. Для этого откроем уже известный нам файл конфигураций mysqld.cnf

и добавим в него следующее:

init_connect=‘SET collation_connection = utf8_unicode_ci’

Далее перезапустим БД

systemctl restart mysql

Проверим корректность работы с кириллицей:

INSERT Otus_table(Name, Address) VALUES (‘Пользователь’, ‘N/A’);

SELECT * FROM Otus_table;

Как видно, русскоязычные данные корректно сохранены.

Заключение

В этой статье мы рассмотрели основы работы с CУБД MySQL, установку и базовую настройку. Далее мы будем говорить о репликации, построении отказоустойчивых конфигураций, партиционировании и бэкапах.

 

Так как данный материал подготовлен в рамках запуска курса «Базы данных», хочу порекомендовать всем читателям бесплатный урок по PostgreSQL 15. В рамках урока обсудим новый функционал, деплой в Яндекс Облаке и настройку защищенного подключения. Варианты обновления с предыдущих версий PostgreSQL и их особенности. Подводные камни при обновлении версий.

Настройка облачного сервера MySQL

В этой статье мы приготовили примеры использования облачных баз данных MySQL для сайтов на хостинге и VPS.

Сайт на хостинге с облачной БД

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

Настройки на стороне сервера БД

В первую очередь для настройки БД потребуется создать облачный сервер БД. Инструкцию по его созданию вы можете найти в статье Облачные серверы MySQL.

Результатом будет работающий сервер с одной базой данных на нём.

Меню управления сервером

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

1. Перейдите в раздел «Базы данных». Это можно сделать, щёлкнув по названию сервера в списке слева и в меню управления сервером выбрав раздел «Базы данных».

Список БД на сервере

2. Добавьте новый доступ для базы. Для этого напротив имени БД нажмите на значок . Появится окно добавления доступа. В нём нужно будет поставить галочку напротив пункта «Единый доступ для различных IP-адресов» и указать пароль для доступа. Пароль можно как задать самостоятельно, так и сгенерировать, нажав на значок . После этого нажмите на кнопку «Добавить».

Добавление доступа к БД

3. Найдите данные для подключения к БД. Для этого щёлкните по названию сервера в списке слева и в меню управления сервером найдите тёмно-серую рамку.
Убедитесь, что:

  • напротив слова «Подключение» в выпадающем списке выбран пункт «Параметры»;
  • значение напротив слова «БД» — название базы, которую мы будем подключать;
  • напротив слова «Доступ» в выпадающем списке выбран пункт «с других адресов».

Параметры БД

Скопировать данные можно нажатием на кнопку .

Настройки на стороне хостинга

1. Создайте сайт в Панели Управления хостингом и прикрепите к нему домен. Инструкцию по прикреплению домена к сайту можно найти здесь: Раздел «Сайты».

Раздел "Сайты"

После прикрепления домена изменения вступают в силу через 10-15 минут.

Убедитесь, что при обращении к домену отображается наша заглушка с надписью «Сайт успешно создан и готов к работе».

Заглушка на сайте

Далее потребуется установить CMS WordPress на сайт.

2. Скачайте архив с CMS с официального сайта. Это можно сделать по ссылке https://wordpress.org/latest.tar.gz.

3. Загрузите архив с CMS в папку с сайтом. Для этого перейдите в раздел «Сайты» и щёлкните по названию папки с сайтом. В соседней вкладке откроется Файловый менеджер.

4. В Файловом менеджере нажмите на кнопку «Загрузить файлы» на панели сверху. Откроется окно загрузки. Нажмите в нём на кнопку «Browse» и выберите архив с CMS.

Окно загрузки будет выглядеть вот так:

Окно загрузки

Нажмите на кнопку «Загрузка» и дождитесь окончания загрузки архива в папку. После этого нажмите на кнопку «Закрыть».

5. Выберите в списке файлов архив с названием wordpress-5.9.2 , щёлкните по нему правой кнопкой мыши и выберите пункт «Распаковать архив». Появится окно с путём для распаковки. Нажмите в нём «ОК».

Контекстное меню архива

Теперь список файлов выглядит вот так:

Список файлов

6. Удалите папку public_html и переименуйте папку wordpress в public_html . Удалите архив wordpress-5.9.2 .
Файловый менеджер теперь можно закрыть.

7. В Панели управления хостингом перейдите в раздел «Сайты» и нажмите на название домена. В новой вкладке откроется страница установки Вордпресс.

Установщик WordPress

В списке языков выберите русский и нажмите «Продолжить».

8. Появится предупреждение что нужно внести информацию о базе данных. Нажмите «Вперёд!»

Предупреждение о БД

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

В поля потребуется ввести значения следующих параметров БД:

  • в поле «Имя базы данных»: database
  • в поле «Имя пользователя»: username
  • в поле «Пароль»: password
  • в поле «Сервер базы данных»: host
  • значение в поле «Префикс таблиц» можно оставить без изменений.

Данные базы

После ввода значений нажмите «Отправить».

10. В появившемся окне нажмите на кнопку «Запустить установку».

Начало установки

11. Введите желаемые данные сайта.

Данные сайта

После ввода данных нажмите на кнопку «Установить WordPress».

12. В появившемся окне нажмите на кнопку «Войти».

Сообщение о завершении установки

13. Введите данные пользователя, установленные вами на шаге 11. Если браузеру требуется запомнить пароль, вы можете установить галочку напротив соответствующего пункта.

Логин и пароль

После ввода данных нажмите «Войти».

Готово! Новый сайт будет доступен по прикреплённому вами домену, панель администратора сайта будет доступна по адресу вашдомен/wp-admin — например, begettestforyou.ru/wp-admin .

Вы можете проверить, что сайт действительно использует облачную БД, открыв БД при помощи phpMyAdmin. Инструкцию по подключению к БД вы можете найти здесь: Подключение через phpMyAdmin.

Вы увидите, что в базе появились стандартные таблицы WordPress:

Изменения в БД

Сайт на облачном сервере VPS с облачной БД

Теперь мы рассмотрим, как развернуть на VPS сайт на WordPress с облачной базой данных. В качестве примера мы будем производить установку на VPS со стеком LEMP.

В отличие от сайта на хостинге, сайт на VPS может быть подключён к облачному серверу БД в приватной сети вместо внешнего подключения.

Подготовка

  • Перейдите в Панель Управления аккаунтом и создайте VPS. Подробнее о создании сервера Вы можете прочитать здесь. При создании выберите конфигурацию «LEMP + Ubuntu 20.04» и включите параметр «Подключить сервер к приватной сети».
  • Создайте облачный сервер БД по инструкции в статье Облачные серверы БД.

На стороне облачного сервера БД

1. Найдите данные для подключения к БД. Для этого щёлкните по названию облачного сервера БД в списке слева и в меню управления сервером найдите тёмно-серую рамку.
Убедитесь, что:

  • напротив слова «Подключение» в выпадающем списке выбран пункт «Параметры»;
  • значение напротив слова «БД» — название базы, которую мы будем подключать;
  • значение напротив слова «Доступ» — 10.16.% .

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

На стороне VPS

2. Подключитесь по протоколу SSH к VPS, используя его внешний IP. Подробнее этот процесс описан в нашей статье.

3. Скачайте установочный пакет WordPress с официального сайта:

4. Распакуйте архив:

5. Создайте копию конфигурационного файла и переименуйте её, чтобы конфигурация обрабатывалась WordPress:

6. Откройте конфигурационный файл WordPress и укажите данные для подключения к базе:

7. Укажите в файле данные для подключения к облачной БД, полученные на шаге 1.
Укажите значения из параметров БД следующим образом:

  • значение database — в переменной DB_NAME в файле;
  • значение username — в переменной DB_USER ;
  • значение password — в переменной DB_PASSWORD ;
  • значение host — в переменной DB_HOST .

В нашем случае получилось следующее:

Файл конфигурации

Сохраните и закройте файл. Для этого потребуется нажать сочетание клавиш Ctrl+O, затем Enter, затем сочетание Ctrl+X.

8. Cкопируйте папку с файлами WordPress в корневую папку nginx:

9. Измените владельца файлов на www-data, чтобы они корректно обрабатывались Nginx:

10. Перейдите в файл /etc/nginx/sites-enabled/default и добавьте index.php в строку под комментарием:

Должно получиться вот так:

11. Перезагрузите Nginx на сервере при помощи команды:

12. Откройте браузер и перейдите по адресу http://внешний-ip-vps/wp-admin/install.php . Вы можете увидеть внешний IP VPS в Панели управления аккаунтом, выбрав нужный VPS из списка слева.

Откроется установщик WordPress.

Установщик WordPress на VPS

13. В списке языков выберите русский и нажмите «Продолжить».

14. Введите желаемые данные сайта.

Данные сайта на VPS

После ввода данных нажмите на кнопку «Установить WordPress».

15. В появившемся окне нажмите на кнопку «Войти».

Сообщение об успешной установке

16. Введите данные пользователя, установленные вами на шаге 14. Если браузеру требуется запомнить пароль, вы можете установить галочку напротив соответствующего пункта.

Окно входа в админпанель сайта

После ввода данных нажмите «Войти».

Готово! Новый сайт будет доступен по внешнему IP-адресу VPS, панель администратора сайта будет доступна по адресу внешний-IP-VPS/wp-admin — например, 5.101.202.31/wp-admin .

Вы можете проверить, что сайт действительно использует облачную БД, открыв БД при помощи phpMyAdmin. Инструкцию по подключению к БД вы можете найти здесь: Подключение через phpMyAdmin.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *