Кратко:
- В кластере Yandex Cloud доступна консоль управления для работы с базой данных (БД).
- Для работы с БД можно использовать консоль управления или приложения.
- Консоль управления доступна через вкладку SQL на странице Managed Service for MySQL.
- Для работы с БД через консоль управления можно использовать SQL-запросы.
- Для подключения к хосту с БД можно использовать SSL-соединение или без шифрования.
- Можно перенести данные в облако с помощью дампа и восстановить их в нужном кластере.
- После переноса данных можно подключиться к БД и убедиться в успешном переносе.
Практическая работа. Подключение к БД и добавление данных
Доступ из консоли управления
Продолжим практическую работу. В кластере, который вы создали, уже есть БД. Она пока пустая. Поскольку при создании кластера вы выбрали в настройках пункт Доступ из консоли управления, в консоли управления Yandex Cloud появилась вкладка с интерфейсом для выполнения SQL-запросов к БД.
Давайте зайдём туда и создадим в БД таблицу для нашего микросервиса.
На странице Managed Service for MySQL выберите строку с созданным вами кластером. В панели консоли управления перейдите на вкладку SQL. Вам будет предложено выбрать БД для SQL-запросов и имя пользователя, а также ввести пароль. Все эти атрибуты вы задавали при создании кластера.

Нажмите кнопку Подключиться. Откроется структура БД (сейчас там написано, что данных нет) и окно ввода для SQL-запросов.
Теперь создадим таблицу. Введите в окне ввода следующий запрос и нажмите кнопку Выполнить.
CREATE TABLE IF NOT EXISTS ratings (
rating_id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
message_id INT NOT NULL,
rating INT NOT NULL
) ENGINE=INNODB;
В таблицу можно добавить данные с помощью команды INSERT.
INSERT INTO ratings (user_id,message_id,rating) VALUES (44,368,4);
Чтобы отобразить обновлённую структуру БД, нажмите на имя БД и выберите таблицу
ratings.
Наведите указатель на заголовок столбца, чтобы увидеть тип данных в нём.
SQL-запросы через консоль управления Yandex Cloud — нетипичный способ работы с БД. Используйте его для небольших, разовых задач, когда быстрее и проще открыть подключение в браузере. Этот способ не очень удобен: текст запроса и результат его выполнения доступны, только пока вы не закрыли или не перезагрузили страницу в браузере. Конечно, если запрос успешно запущен, то сервис обработает его независимо от состояния консоли управления.
В консоли выводятся только первые 1000 строк результата запроса, даже если данных больше. Чтобы увидеть строку, введите её номер в поле Номер первой строки.
Подключение к кластеру
В основном вы будете работать с БД из приложений или из командной строки. Однако для этого нужно подключиться к хосту, на котором развёрнута БД.
Есть два варианта подключения. Если публичный доступ к хосту открыт, подключитесь к нему через интернет с помощью защищённого SSL-соединения. Если публичного доступа нет, подключитесь к хосту с виртуальной машины, созданной в той же виртуальной сети. SSL-соединение можно не использовать, но тогда трафик между виртуальной машиной и БД шифроваться не будет.
Давайте подключимся к БД через интернет и создадим в ней ещё одну таблицу. Для выполнения этого задания вы можете использовать виртуальную машину с Ubuntu.
Для создания таблицы сделаем в текстовом редакторе файл
createTables.sql с командами. Например, такой:CREATE TABLE IF NOT EXISTS users (
user_id INT AUTO_INCREMENT,
nickname VARCHAR(128) NOT NULL,
avatar VARCHAR(255),
mail VARCHAR(255),
PRIMARY KEY (user_id)
) ENGINE=INNODB;
Чтобы выполнить этот запрос в БД, подключимся к хосту. Для этого понадобится SSL-сертификат. Команды для его получения в Ubuntu:
mkdir ~/.mysql
wget "https://storage.yandexcloud.net/cloud-certs/CA.pem" -O ~/.mysql/root.crt
chmod 0600 ~/.mysql/root.crt
Чтобы получить команды для подключения к БД, в консоли управления перейдите на страницу кластера, на вкладке Обзор нажмите кнопку Подключиться. В результате их выполнения в директории
/home/<домашняя_директория>/.mysql/ сохранится SSL-сертификат root.crt.Установите утилиту
mysql-client, если на вашем компьютере или виртуальной машине её нет.sudo apt update
sudo apt install default-mysql-client
Чтобы подключиться к БД, введите команду
mysql. Для запуска нашего скрипта она выглядит следующим образом:mysql --host=<адрес хоста> \
--port=3306 \
--ssl-ca=~/.mysql/root.crt \
--ssl-mode=VERIFY_IDENTITY \
--user=<имя пользователя> \
--password \
<имя_базы_данных> < createTables.sql
Сервис помогает заполнить параметры в команде. Чтобы посмотреть пример команды с адресом хоста, именами пользователя и БД, в консоли управления перейдите на страницу кластера, на вкладке Обзор нажмите кнопку Подключиться.

После запуска команды введите пароль к БД, после чего в ней будет создана таблица
users.Если при создании кластера вы не включили публичный доступ, то к БД можно подключиться с виртуальной машины из той же облачной сети без использования шифрования. Следовательно, в этом случае в команде для подключения опускается параметр
--ssl-ca, а --ssl-mode передаётся со значением DISABLED:mysql --host=адрес_хоста \
--port=3306 \
--ssl-mode=DISABLED \
--user=<имя пользователя> \
--password \
<имя_базы_данных> < createTables.sql
Естественно, подключаться к БД можно не только из командной оболочки, но и из приложений. Нажмите уже знакомую вам кнопку Подключиться и посмотрите примеры кода для Python, PHP, Java, Node.js, Go, Ruby или настроек для драйвера ODBC.
Если вы хотите перенести БД в облако, то понадобится создать дамп и восстановить его в нужном кластере. Дамп — это копия БД или её части, представляющая собой текстовый файл с командами SQL (например, CREATE TABLE или INSERT). Его создают с помощью утилиты mysqldump.
Давайте попробуем перенести данные в кластер с помощью дампа. Для этого воспользуемся тестовой БД с данными о сотрудниках компании (имя, дата рождения, дата найма, место работы, зарплата и т. д.). Размер БД — около 167 Мб.
Скачайте из репозитория и сохраните на компьютере файлы с расширениями
.sql и .dump. В файле employees.sql содержатся SQL команды, необходимые для создания таблиц и добавления в них данных из dump-файлов. Для переноса тестовой БД в облако понадобится запустить этот файл. Но, прежде чем приступить к переносу БД, откройте этот файл и удалите или закомментируйте (допишите в начало строки --) в нём строку 110. В этой строке расположена команда FLUSH LOGS, которая закрывает и снова открывает файлы журналов, а они в этой тестовой БД отсутствуют.Создайте базу данных
employees через консоль управления. Для этого на странице кластера перейдите на вкладку Базы данных и нажмите кнопку Добавить.Добавьте пользователю, например
user1, разрешение на доступ к БД employees. Для этого на странице кластера перейдите на вкладку Пользователи, напротив пользователя user1 нажмите кнопку ··· и выберите Настроить. Во всплывающем окне нажмите Добавить базу данных, выберите employees, добавьте роль ALL_PRIVILEGES и нажмите Сохранить.Затем в командной строке перейдите в папку сохраненными файлами
.sql и .dump и восстановите данные из дампа с помощью команды:mysql --host=<адрес хоста> \
--port=3306 \
--ssl-ca=~/.mysql/root.crt \
--ssl-mode=VERIFY_IDENTITY \
--user=<имя_пользователя> \
--password \
employees < ~/employees.sql
После того как данные скопируются, ваш кластер и БД будут готовы к работе. Подключитесь к БД в консоли управления и убедитесь, что данные перенесены.