12.9. «Базы данных в облаке»
- Кузин Максим
Домашнее задание к занятию Инструкция по выполнению домашнего задания
- Сделайте fork репозитория c шаблоном решения к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw).
- Выполните клонирование этого репозитория к себе на ПК с помощью команды
git clone
. - Выполните домашнее задание и заполните у себя локально этот файл README.md:
- впишите вверху название занятия и ваши фамилию и имя;
- в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка;
- для корректного добавления скриншотов воспользуйтесь инструкцией «Как вставить скриншот в шаблон с решением»;
- при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в инструкции по MarkDown.
- После завершения работы над домашним заданием сделайте коммит (
git commit -m "comment"
) и отправьте его на Github (git push origin
). - Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github.
- Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете.
- Методичка
Желаем успехов в выполнении домашнего задания.

Домашнее задание подразумевает, что вы уже делали предыдущие работы в Яндекс.Облаке, и у вас есть аккаунт и каталог.
Используйте следующие рекомендации во избежание лишних трат в Яндекс.Облаке:
- Сразу после выполнения задания удалите кластер.
- Если вы решили взять паузу на выполнение задания, то остановите кластер.
Задание 1
Создание кластера
- Перейдите на главную страницу сервиса Managed Service for PostgreSQL.
- Создайте кластер PostgreSQL со следующими параметрами:
- класс хоста: s2.micro, диск network-ssd любого размера;
- хосты: нужно создать два хоста в двух разных зонах доступности и указать необходимость публичного доступа, то есть публичного IP адреса, для них;
- установите учётную запись для пользователя и базы.
Остальные параметры оставьте по умолчанию либо измените по своему усмотрению.
- Нажмите кнопку «Создать кластер» и дождитесь окончания процесса создания, статус кластера = RUNNING. Кластер создаётся от 5 до 10 минут.
Подключение к мастеру и реплике
-
Используйте инструкцию по подключению к кластеру, доступную на вкладке «Обзор»: cкачайте SSL-сертификат и подключитесь к кластеру с помощью утилиты psql, указав hostname всех узлов и атрибут
target_session_attrs=read-write
. -
Проверьте, что подключение прошло к master-узлу.
select case when pg_is_in_recovery() then 'REPLICA' else 'MASTER' end;
- Посмотрите количество подключенных реплик:
select count(*) from pg_stat_replication;
Проверьте работоспособность репликации в кластере
- Создайте таблицу и вставьте одну-две строки.
CREATE TABLE test_table(text varchar);
insert into test_table values('Строка 1');
-
Выйдите из psql командой
\q
. -
Теперь подключитесь к узлу-реплике. Для этого из команды подключения удалите атрибут
target_session_attrs
и в параметре атрибутhost
передайте только имя хоста-реплики. Роли хостов можно посмотреть на соответствующей вкладке UI консоли. -
Проверьте, что подключение прошло к узлу-реплике.
select case when pg_is_in_recovery() then 'REPLICA' else 'MASTER' end;
- Проверьте состояние репликации
select status from pg_stat_wal_receiver;
- Для проверки, что механизм репликации данных работает между зонами доступности облака, выполните запрос к таблице, созданной на предыдущем шаге:
select * from test_table;
В качестве результата вашей работы пришлите скриншоты:
1) Созданной базы данных;
2) Результата вывода команды на реплике select * from test_table;
.
Ответ.
Задание 2*
Создайте кластер, как в задании 1 с помощью Terraform.
В качестве результата вашей работы пришлите скришоты:
1) Скриншот созданной базы данных. 2) Код Terraform, создающий базу данных.
Ответ.
Манифест terraform
Задания, помеченные звёздочкой, — дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале.