diff --git a/12-08.md "b/# \320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\265 \320\272\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 \320\261\320\260\320\267 \320\264\320\260\320\275\320\275\321\213\321\205\302\273 12-08.md" similarity index 68% rename from 12-08.md rename to "# \320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\265 \320\272\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 \320\261\320\260\320\267 \320\264\320\260\320\275\320\275\321\213\321\205\302\273 12-08.md" index 3662ee74..fd5950e2 100644 --- a/12-08.md +++ "b/# \320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\265\320\267\320\265\321\200\320\262\320\275\320\276\320\265 \320\272\320\276\320\277\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 \320\261\320\260\320\267 \320\264\320\260\320\275\320\275\321\213\321\205\302\273 12-08.md" @@ -26,7 +26,13 @@ 1.3.* Возможен ли кейс, когда при поломке базы происходило моментальное переключение на работающую или починенную базу данных. *Приведите ответ в свободной форме.* +### Ответ: +1.1 В данном случае я бы делал полный бэкап раз в неделю. Потом каждый день дифференциальный бэкап, который охватывает все изменения с момента последнего бэкапа. + +1.2 Тут тоже для начала полный бэкап, но желательно раз в день. И потом в течение дня инкрементный, т.к. по занимаемой памяти и времени он будет самый экономный. + +1.3 Кейс master-slave --- ### Задание 2. PostgreSQL @@ -36,7 +42,11 @@ 2.1.* Возможно ли автоматизировать этот процесс? Если да, то как? *Приведите ответ в свободной форме.* +### Ответ: + +2.1 Базовая команда `pg_dump <имя_базы> > <файл_сохранения>`. +Команда `pg_restore` извлекает архивный файл, созданный командой `pg_dump`, и восстанавливает выбранную базу данных PostgreSQL. Для указания базы данных нужно задать параметр `-d` - `pg_restore <имя_базы> <файл_сохранения>`. --- ### Задание 3. MySQL @@ -45,8 +55,13 @@ 3.1.* В каких случаях использование реплики будет давать преимущество по сравнению с обычным резервным копированием? + *Приведите ответ в свободной форме.* +### Ответ: + +Для данного вида резеревирования используется команда `mysqlbackup` с параметром `--incremental-base=history:last_full_backup`. +Также можно использовать и сторонние утилиты. Например, Percona XtraBackup, которая позволяет делать архивы баз данных на лету без блокировок таблиц. Например, `xtrabackup --backup --target-dir=/backupdb/inc1 --incremental-basedir=/backupdb/full`. --- Задания, помеченные звёздочкой, — дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале. diff --git a/11-01.md b/11-01.md deleted file mode 100644 index 7ceca6db..00000000 --- a/11-01.md +++ /dev/null @@ -1,92 +0,0 @@ -# Домашнее задание к занятию «Базы данных, их типы» - -### Инструкция по выполнению домашнего задания - -1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). -2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. -3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и ваши фамилию и имя; - - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; - - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); - - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). -4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). -5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. -6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. - -Желаем успехов в выполнении домашнего задания. - ---- - -### Задание 1. СУБД - -### Кейс -Крупная строительная компания, которая также занимается проектированием и девелопментом, решила создать -правильную архитектуру для работы с данными. Ниже представлены задачи, которые необходимо решить для -каждой предметной области. - -Какие типы СУБД, на ваш взгляд, лучше всего подойдут для решения этих задач и почему? - -1.1. Бюджетирование проектов с дальнейшим формированием финансовых аналитических отчётов и прогнозирования рисков. -СУБД должна гарантировать целостность и чёткую структуру данных. - -1.1.* Хеширование стало занимать длительно время, какое API можно использовать для ускорения работы? - -1.2. Под каждый девелоперский проект создаётся отдельный лендинг, и все данные по лидам стекаются в CRM к -маркетологам и менеджерам по продажам. Какой тип СУБД лучше использовать для лендингов и для CRM? -СУБД должны быть гибкими и быстрыми. - -1.2.* Можно ли эту задачу закрыть одной СУБД? И если да, то какой именно СУБД и какой реализацией? - -1.3. Отдел контроля качества решил создать базу по корпоративным нормам и правилам, обучающему материалу -и так далее, сформированную согласно структуре компании. СУБД должна иметь простую и понятную структуру. - -1.3.* Можно ли под эту задачу использовать уже существующую СУБД из задач выше и если да, то как лучше это -реализовать? - -1.4. Департамент логистики нуждается в решении задач по быстрому формированию маршрутов доставки материалов -по объектам и распределению курьеров по маршрутам с доставкой документов. СУБД должна уметь быстро работать -со связями. - -1.4.* Можно ли к этой СУБД подключить отдел закупок или для них лучше сформировать свою СУБД в связке с СУБД -логистов? - -1.5.* Можно ли все перечисленные выше задачи решить, используя одну СУБД? Если да, то какую именно? - -*Приведите ответ в свободной форме.* - ---- - -### Задание 2. Транзакции - -2.1. Пользователь пополняет баланс счёта телефона, распишите пошагово, какие действия должны произойти для того, чтобы -транзакция завершилась успешно. Ориентируйтесь на шесть действий. - -2.1.* Какие действия должны произойти, если пополнение счёта телефона происходило бы через автоплатёж? - -*Приведите ответ в свободной форме.* - ---- - -### Задание 3. SQL vs NoSQL - -3.1. Напишите пять преимуществ SQL-систем по отношению к NoSQL. - -3.1.* Какие, на ваш взгляд, преимущества у NewSQL систем перед SQL и NoSQL. - -*Приведите ответ в свободной форме.* - ---- - -### Задание 4. Кластеры - -Необходимо производить большое количество вычислений при работе с огромным количеством данных, под эту задачу -выделено 1000 машин. - -На основе какого критерия будете выбирать тип СУБД и какая модель *распределённых вычислений* -здесь справится лучше всего и почему? - -*Приведите ответ в свободной форме.* - ---- - -Задания,помеченные звёздочкой, — дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже разобраться в материале. diff --git a/11-02.md b/11-02.md deleted file mode 100644 index f617ee62..00000000 --- a/11-02.md +++ /dev/null @@ -1,58 +0,0 @@ -# Домашнее задание к занятию «Кеширование Redis/memcached» - -### Инструкция по выполнению домашнего задания - -1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). -2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. -3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и ваши фамилию и имя; - - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; - - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); - - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). -4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). -5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. -6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. - -Желаем успехов в выполнении домашнего задания. - ---- - -### Задание 1. Кеширование - -Приведите примеры проблем, которые может решить кеширование. - -*Приведите ответ в свободной форме.* - ---- - -### Задание 2. Memcached - -Установите и запустите memcached. - -*Приведите скриншот systemctl status memcached, где будет видно, что memcached запущен.* - ---- - -### Задание 3. Удаление по TTL в Memcached - -Запишите в memcached несколько ключей с любыми именами и значениями, для которых выставлен TTL 5. - -*Приведите скриншот, на котором видно, что спустя 5 секунд ключи удалились из базы.* - ---- - -### Задание 4. Запись данных в Redis - -Запишите в Redis несколько ключей с любыми именами и значениями. - -*Через redis-cli достаньте все записанные ключи и значения из базы, приведите скриншот этой операции.* - - -## Дополнительные задания (со звёздочкой*) -Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже разобраться в материале. - -### Задание 5*. Работа с числами - -Запишите в Redis ключ key5 со значением типа "int" равным числу 5. Увеличьте его на 5, чтобы в итоге в значении лежало число 10. - -*Приведите скриншот, где будут проделаны все операции и будет видно, что значение key5 стало равно 10.* diff --git a/12-02/2.png b/12-02/2.png new file mode 100644 index 00000000..f92e1303 Binary files /dev/null and b/12-02/2.png differ diff --git a/12-02/3.png b/12-02/3.png new file mode 100644 index 00000000..7010fb04 Binary files /dev/null and b/12-02/3.png differ diff --git a/12-02/4.png b/12-02/4.png new file mode 100644 index 00000000..e67b9e51 Binary files /dev/null and b/12-02/4.png differ diff --git a/12-02/5.png b/12-02/5.png new file mode 100644 index 00000000..50e387c7 Binary files /dev/null and b/12-02/5.png differ diff --git a/12-02/6.png b/12-02/6.png new file mode 100644 index 00000000..321f39d4 Binary files /dev/null and b/12-02/6.png differ diff --git a/12-02/7.png b/12-02/7.png new file mode 100644 index 00000000..dee366b4 Binary files /dev/null and b/12-02/7.png differ diff --git a/12-02/8.png b/12-02/8.png new file mode 100644 index 00000000..9e45d634 Binary files /dev/null and b/12-02/8.png differ diff --git a/12-04/1 b/12-04/1 new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/12-04/1 @@ -0,0 +1 @@ + diff --git a/12-04/1.png b/12-04/1.png new file mode 100644 index 00000000..e6647706 Binary files /dev/null and b/12-04/1.png differ diff --git a/12-04/2.png b/12-04/2.png new file mode 100644 index 00000000..4664cc6e Binary files /dev/null and b/12-04/2.png differ diff --git a/12-04/3.png b/12-04/3.png new file mode 100644 index 00000000..7c8bb4fc Binary files /dev/null and b/12-04/3.png differ diff --git a/12-06.md b/12-06.md deleted file mode 100644 index b2174d9a..00000000 --- a/12-06.md +++ /dev/null @@ -1,66 +0,0 @@ -# Домашнее задание к занятиям «Репликация и масштабирование» - -### Инструкция по выполнению домашнего задания - -1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). -2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. -3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и ваши фамилию и имя; - - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; - - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); - - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). -4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). -5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. -6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. - -Желаем успехов в выполнении домашнего задания. - ---- - -### Задание 1 - -Выполните конфигурацию master-slave репликации, примером можно пользоваться из лекции. - -*Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.* - ---- - -### Задание 2 - -Разработайте план для выполнения горизонтального и вертикального шаринга базы данных. База данных состоит из трёх таблиц: - -- пользователи, -- книги, -- магазины (столбцы произвольно). - -Опишите принципы построения системы и их разграничение или разбивку между базами данных. - -*Пришлите блоксхему, где и что будет располагаться. Опишите, в каких режимах будут работать сервера.* - ---- - -## Дополнительные задания (со звёздочкой*) -Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале. - ---- - -### Задание 3* - -Опишите основные преимущества использования масштабирования методами: - -- активный master-сервер и пассивный репликационный slave-сервер; -- master-сервер и несколько slave-серверов; -- активный сервер со специальным механизмом репликации — distributed replicated block device (DRBD); -- SAN-кластер. - -*Дайте ответ в свободной форме.* - ---- - -### Задание 4* - -Выполните настройку выбранных методов шардинга из задания 2. - -*Пришлите конфиг Docker и SQL скрипт с командами для базы данных*. - ---- diff --git a/12-06/1 b/12-06/1 new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/12-06/1 @@ -0,0 +1 @@ + diff --git a/12-06/1.png b/12-06/1.png new file mode 100644 index 00000000..2fa65295 Binary files /dev/null and b/12-06/1.png differ diff --git a/12-06/2.png b/12-06/2.png new file mode 100644 index 00000000..db7c2857 Binary files /dev/null and b/12-06/2.png differ diff --git a/12-06/3.png b/12-06/3.png new file mode 100644 index 00000000..242a1f4b Binary files /dev/null and b/12-06/3.png differ diff --git a/12-06/4.png b/12-06/4.png new file mode 100644 index 00000000..ab6dbcac Binary files /dev/null and b/12-06/4.png differ diff --git a/12-06/5.png b/12-06/5.png new file mode 100644 index 00000000..acaee8b4 Binary files /dev/null and b/12-06/5.png differ diff --git a/12-06/6.png b/12-06/6.png new file mode 100644 index 00000000..ab65f9bc Binary files /dev/null and b/12-06/6.png differ diff --git a/12-06/7.png b/12-06/7.png new file mode 100644 index 00000000..a92d2eea Binary files /dev/null and b/12-06/7.png differ diff --git a/12-06/8.png b/12-06/8.png new file mode 100644 index 00000000..03c4e35e Binary files /dev/null and b/12-06/8.png differ diff --git a/12-07.md b/12-07.md deleted file mode 100644 index fbe42d1f..00000000 --- a/12-07.md +++ /dev/null @@ -1,54 +0,0 @@ -# Домашнее задание к занятию «Репликация и масштабирование. Часть 2» - -### Инструкция по выполнению домашнего задания - -1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). -2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. -3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и ваши фамилию и имя; - - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; - - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); - - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). -4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). -5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. -6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. - -Желаем успехов в выполнении домашнего задания. - ---- - -### Задание 1 - -Опишите основные преимущества использования масштабирования методами: - -- активный master-сервер и пассивный репликационный slave-сервер; -- master-сервер и несколько slave-серверов; -- активный сервер со специальным механизмом репликации — distributed replicated block device (DRBD); -- SAN-кластер. - -*Дайте ответ в свободной форме.* - ---- - -### Задание 2 - - -Разработайте план для выполнения горизонтального и вертикального шаринга базы данных. База данных состоит из трёх таблиц: - -- пользователи, -- книги, -- магазины (столбцы произвольно). - -Опишите принципы построения системы и их разграничение или разбивку между базами данных. - -*Пришлите блоксхему, где и что будет располагаться. Опишите, в каких режимах будут работать сервера.* - -## Дополнительные задания (со звёздочкой*) -Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале. - ---- -### Задание 3* - -Выполните настройку выбранных методов шардинга из задания 2. - -*Пришлите конфиг Docker и SQL скрипт с командами для базы данных*. diff --git a/13-02.md b/13-02.md deleted file mode 100644 index c01fb44a..00000000 --- a/13-02.md +++ /dev/null @@ -1,52 +0,0 @@ -# Домашнее задание к занятию «Защита хоста» - -### Инструкция по выполнению домашнего задания - -1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). -2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. -3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и ваши фамилию и имя; - - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; - - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); - - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). -4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). -5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. -6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. - -Желаем успехов в выполнении домашнего задания. - ------- - -### Задание 1 - -1. Установите **eCryptfs**. -2. Добавьте пользователя cryptouser. -3. Зашифруйте домашний каталог пользователя с помощью eCryptfs. - - -*В качестве ответа пришлите снимки экрана домашнего каталога пользователя с исходными и зашифрованными данными.* - -### Задание 2 - -1. Установите поддержку **LUKS**. -2. Создайте небольшой раздел, например, 100 Мб. -3. Зашифруйте созданный раздел с помощью LUKS. - -*В качестве ответа пришлите снимки экрана с поэтапным выполнением задания.* - - -## Дополнительные задания (со звёздочкой*) - -Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале - -### Задание 3 * - -1. Установите **apparmor**. -2. Повторите эксперимент, указанный в лекции. -3. Отключите (удалите) apparmor. - - -*В качестве ответа пришлите снимки экрана с поэтапным выполнением задания.* - - - diff --git a/moisiadis_diplom b/moisiadis_diplom new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/moisiadis_diplom @@ -0,0 +1 @@ + diff --git a/screenshots/.gitkeep b/screenshots/.gitkeep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/screenshots/.gitkeep @@ -0,0 +1 @@ + diff --git a/screenshots/1-1.png b/screenshots/1-1.png new file mode 100644 index 00000000..d343d062 Binary files /dev/null and b/screenshots/1-1.png differ diff --git a/screenshots/1-2.png b/screenshots/1-2.png new file mode 100644 index 00000000..f7e2fc45 Binary files /dev/null and b/screenshots/1-2.png differ diff --git a/screenshots/1-3.png b/screenshots/1-3.png new file mode 100644 index 00000000..b9a325a6 Binary files /dev/null and b/screenshots/1-3.png differ diff --git a/screenshots/11-2-2.png b/screenshots/11-2-2.png new file mode 100644 index 00000000..54095523 Binary files /dev/null and b/screenshots/11-2-2.png differ diff --git a/screenshots/11-2-3.png b/screenshots/11-2-3.png new file mode 100644 index 00000000..50684c69 Binary files /dev/null and b/screenshots/11-2-3.png differ diff --git a/screenshots/11-2-4.png b/screenshots/11-2-4.png new file mode 100644 index 00000000..7d1ac564 Binary files /dev/null and b/screenshots/11-2-4.png differ diff --git a/screenshots/11-4-1.png b/screenshots/11-4-1.png new file mode 100644 index 00000000..5f94d213 Binary files /dev/null and b/screenshots/11-4-1.png differ diff --git a/screenshots/11-4-2-1-1.png b/screenshots/11-4-2-1-1.png new file mode 100644 index 00000000..be79487c Binary files /dev/null and b/screenshots/11-4-2-1-1.png differ diff --git a/screenshots/11-4-2-1.png b/screenshots/11-4-2-1.png new file mode 100644 index 00000000..f89ecf37 Binary files /dev/null and b/screenshots/11-4-2-1.png differ diff --git a/screenshots/11-4-2-2-2.png b/screenshots/11-4-2-2-2.png new file mode 100644 index 00000000..7398aeff Binary files /dev/null and b/screenshots/11-4-2-2-2.png differ diff --git a/screenshots/11-4-2-2.png b/screenshots/11-4-2-2.png new file mode 100644 index 00000000..74050f58 Binary files /dev/null and b/screenshots/11-4-2-2.png differ diff --git a/screenshots/11-4-3-1.png b/screenshots/11-4-3-1.png new file mode 100644 index 00000000..0dc1b8b2 Binary files /dev/null and b/screenshots/11-4-3-1.png differ diff --git a/screenshots/11-4-3-2.png b/screenshots/11-4-3-2.png new file mode 100644 index 00000000..98aa0b60 Binary files /dev/null and b/screenshots/11-4-3-2.png differ diff --git a/screenshots/11-4-3-3.png b/screenshots/11-4-3-3.png new file mode 100644 index 00000000..ae7fd140 Binary files /dev/null and b/screenshots/11-4-3-3.png differ diff --git a/screenshots/11-4-3-4.png b/screenshots/11-4-3-4.png new file mode 100644 index 00000000..787dc4b3 Binary files /dev/null and b/screenshots/11-4-3-4.png differ diff --git a/screenshots/11-4-3-5.png b/screenshots/11-4-3-5.png new file mode 100644 index 00000000..e8aadcec Binary files /dev/null and b/screenshots/11-4-3-5.png differ diff --git a/screenshots/11-4-3-6.png b/screenshots/11-4-3-6.png new file mode 100644 index 00000000..db28341c Binary files /dev/null and b/screenshots/11-4-3-6.png differ diff --git a/screenshots/2-1.png b/screenshots/2-1.png new file mode 100644 index 00000000..79941e9b Binary files /dev/null and b/screenshots/2-1.png differ diff --git a/screenshots/2-2.png b/screenshots/2-2.png new file mode 100644 index 00000000..1d867a17 Binary files /dev/null and b/screenshots/2-2.png differ diff --git a/screenshots/2-3.png b/screenshots/2-3.png new file mode 100644 index 00000000..063d0b19 Binary files /dev/null and b/screenshots/2-3.png differ diff --git a/screenshots/2-4.png b/screenshots/2-4.png new file mode 100644 index 00000000..a1878dfd Binary files /dev/null and b/screenshots/2-4.png differ diff --git "a/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\227\320\260\321\211\320\270\321\202\320\260 \321\205\320\276\321\201\321\202\320\260\302\27313-02.md" "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\227\320\260\321\211\320\270\321\202\320\260 \321\205\320\276\321\201\321\202\320\260\302\27313-02.md" new file mode 100644 index 00000000..5d9b3fb1 --- /dev/null +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\227\320\260\321\211\320\270\321\202\320\260 \321\205\320\276\321\201\321\202\320\260\302\27313-02.md" @@ -0,0 +1,42 @@ +# Домашнее задание к занятию «Защита хоста» +------ + +### Задание 1 + +1. Установите **eCryptfs**. +2. Добавьте пользователя cryptouser. +3. Зашифруйте домашний каталог пользователя с помощью eCryptfs. + + +*В качестве ответа пришлите снимки экрана домашнего каталога пользователя с исходными и зашифрованными данными.* +### Решение 1 +![1-1.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/1-1.png) +![1-2.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/1-2.png) +![1-3.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/1-3.png) +### Задание 2 + +1. Установите поддержку **LUKS**. +2. Создайте небольшой раздел, например, 100 Мб. +3. Зашифруйте созданный раздел с помощью LUKS. + +*В качестве ответа пришлите снимки экрана с поэтапным выполнением задания.* +### Решение 2 +![2-1.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/2-1.png) +![2-2.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/2-2.png) +![2-3.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/2-3.png) +![2-4.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/2-4.png) +## Дополнительные задания (со звёздочкой*) + +Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале + +### Задание 3 * + +1. Установите **apparmor**. +2. Повторите эксперимент, указанный в лекции. +3. Отключите (удалите) apparmor. + + +*В качестве ответа пришлите снимки экрана с поэтапным выполнением задания.* + + + diff --git a/11-04.md "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\236\321\207\320\265\321\200\320\265\320\264\320\270 RabbitMQ\302\27311-04.md" similarity index 65% rename from 11-04.md rename to "\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\236\321\207\320\265\321\200\320\265\320\264\320\270 RabbitMQ\302\27311-04.md" index 5161aeb4..a1974b65 100644 --- a/11-04.md +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\236\321\207\320\265\321\200\320\265\320\264\320\270 RabbitMQ\302\27311-04.md" @@ -1,21 +1,5 @@ # Домашнее задание к занятию «Очереди RabbitMQ» -### Инструкция по выполнению домашнего задания - -1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). -2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. -3. Выполните домашнее задание и заполните у себя локально этот файл README.md: - - впишите вверху название занятия и ваши фамилию и имя; - - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; - - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); - - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). -4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). -5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. -6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. - -Желаем успехов в выполнении домашнего задания. - ---- ### Задание 1. Установка RabbitMQ @@ -24,6 +8,9 @@ *Итогом выполнения домашнего задания будет приложенный скриншот веб-интерфейса RabbitMQ.* +![11-4-1.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-1.png) + + --- ### Задание 2. Отправка и получение сообщений @@ -45,8 +32,8 @@ $ pip install pika Для закрепления материала можете попробовать модифицировать скрипты, чтобы поменять название очереди и отправляемое сообщение. ---- - +![11-4-2-1.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-2-1.png) +![11-4-2-2-2.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-2-2-2.png) ### Задание 3. Подготовка HA кластера Используя Vagrant или VirtualBox, создайте вторую виртуальную машину и установите RabbitMQ. @@ -66,19 +53,25 @@ $ cat /etc/hosts Также приложите вывод команды с двух нод: -```shell script +shell script $ rabbitmqctl cluster_status -``` + +![11-4-3-1.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-3-1.png) +![11-4-3-2.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-3-2.png) +![11-4-3-3.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-3-3.png) Для закрепления материала снова запустите скрипт producer.py и приложите скриншот выполнения команды на каждой из нод: -```shell script +shell script $ rabbitmqadmin get queue='hello' -``` + +![11-4-3-4.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-3-4.png) +![11-4-3-5.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-3-5.png) После чего попробуйте отключить одну из нод, желательно ту, к которой подключались из скрипта, затем поправьте параметры подключения в скрипте consumer.py на вторую ноду и запустите его. *Приложите скриншот результата работы второго скрипта.* +![11-4-3-6.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-4-3-6.png) ## Дополнительные задания (со звёздочкой*) diff --git a/12-04.md "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253SQL. \320\247\320\260\321\201\321\202\321\214 2\302\27312-04.md" similarity index 81% rename from 12-04.md rename to "\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253SQL. \320\247\320\260\321\201\321\202\321\214 2\302\27312-04.md" index d559563e..ff0ee06f 100644 --- a/12-04.md +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253SQL. \320\247\320\260\321\201\321\202\321\214 2\302\27312-04.md" @@ -26,13 +26,37 @@ - город нахождения магазина; - количество пользователей, закреплённых в этом магазине. +```SQL +SELECT CONCAT(s2.first_name, ' ', s2.last_name) AS Name, a.address AS Address, COUNT(c.store_id) AS Customers +FROM store s +JOIN customer c ON s.store_id = c.store_id +JOIN staff s2 ON s.manager_staff_id = s2.staff_id +JOIN address a ON s.address_id = a.address_id +GROUP BY c.store_id +HAVING COUNT(c.store_id) > 300; +``` +![1](https://github.com/KaifasKainChaos/sdb-homeworks/blob/e26cabd2e8b7b4471a0504477d2f0a2338267c96/12-04/1.png) + ### Задание 2 Получите количество фильмов, продолжительность которых больше средней продолжительности всех фильмов. +```SQL +SELECT (SELECT AVG(`length`) from film) AS Average, (SELECT COUNT(1) from film) AS 'All films', COUNT(1) AS 'Long Films' +FROM film +WHERE `length` > (SELECT AVG(`length`) from film) ; +``` +![2](https://github.com/KaifasKainChaos/sdb-homeworks/blob/e26cabd2e8b7b4471a0504477d2f0a2338267c96/12-04/2.png) ### Задание 3 Получите информацию, за какой месяц была получена наибольшая сумма платежей, и добавьте информацию по количеству аренд за этот месяц. +```SQL +SELECT MONTH(payment_date) AS Month, COUNT(payment_id) As Payments, SUM(amount) AS Amount +FROM payment +GROUP BY MONTH(payment_date) +ORDER BY COUNT(payment_id) DESC LIMIT 1 ; +``` +![3](https://github.com/KaifasKainChaos/sdb-homeworks/blob/e26cabd2e8b7b4471a0504477d2f0a2338267c96/12-04/3.png) ## Дополнительные задания (со звёздочкой*) diff --git "a/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\221\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205, \320\270\321\205 \321\202\320\270\320\277\321\213\302\273 11-01.md" "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\221\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205, \320\270\321\205 \321\202\320\270\320\277\321\213\302\273 11-01.md" new file mode 100644 index 00000000..3cbe04be --- /dev/null +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\221\320\260\320\267\321\213 \320\264\320\260\320\275\320\275\321\213\321\205, \320\270\321\205 \321\202\320\270\320\277\321\213\302\273 11-01.md" @@ -0,0 +1,220 @@ +# Домашнее задание к занятию «Базы данных, их типы» + + +--- + +### Задание 1. СУБД + +### Кейс +Крупная строительная компания, которая также занимается проектированием и девелопментом, решила создать +правильную архитектуру для работы с данными. Ниже представлены задачи, которые необходимо решить для +каждой предметной области. + +Какие типы СУБД, на ваш взгляд, лучше всего подойдут для решения этих задач и почему? + +### 1.1. Бюджетирование проектов с дальнейшим формированием финансовых аналитических отчётов и прогнозирования рисков. +СУБД должна гарантировать целостность и чёткую структуру данных. + +### Ответ: +Тип СУБД: Реляционная СУБД (например, PostgreSQL, Microsoft SQL Server, Oracle) + +Обоснование: + +Требуется целостность данных → поддержка ACID; + +Нужна строгая схема (таблицы, связи, типы); + +Возможность анализа и построения отчётов с помощью SQL и BI-инструментов. + +### 1.1.* Хеширование стало занимать длительно время, какое API можно использовать для ускорения работы? +### Ответ: +Использовать библиотеки для ускоренного хеширования, например: + +bcrypt / argon2 — для безопасного хеширования паролей; + +xxHash, Blake3 — для быстрого хеширования больших объемов данных. + +Для API — использовать gRPC или FastAPI (Python) для высокопроизводительного взаимодействия между сервисами. + +### 1.2. Под каждый девелоперский проект создаётся отдельный лендинг, и все данные по лидам стекаются в CRM к +### маркетологам и менеджерам по продажам. Какой тип СУБД лучше использовать для лендингов и для CRM? +### СУБД должны быть гибкими и быстрыми. +### Ответ: +Типы СУБД: + +Для лендингов: NoSQL (например, MongoDB, Firebase) — за счёт гибкости и скорости. + +Для CRM: SQL (например, MySQL, PostgreSQL) — так как нужна структура, фильтрация, аналитика. + +### 1.2.* Можно ли эту задачу закрыть одной СУБД? И если да, то какой именно СУБД и какой реализацией? +### Ответ:Да, можно использовать PostgreSQL: + +Поддерживает JSONB → возможность хранения неструктурированных данных (для лендингов). + +Поддерживает реляционные таблицы для CRM. + + +### 1.3. Отдел контроля качества решил создать базу по корпоративным нормам и правилам, обучающему материалу +### и так далее, сформированную согласно структуре компании. СУБД должна иметь простую и понятную структуру. +### Ответ: +Тип СУБД: Реляционная СУБД (например, MySQL/PostgreSQL) — для простой структуры, вложенности, поиска. + +### 1.3.* Можно ли под эту задачу использовать уже существующую СУБД из задач выше и если да, то как лучше это +реализовать? +### Ответ: +Да, можно использовать ту же PostgreSQL, что и для CRM: + +Создать отдельную схему или базу; + +Реализовать иерархию документов и материалов через табличные связи или JSONB; + +Обеспечить разграничение доступа для пользователей. + +### 1.4. Департамент логистики нуждается в решении задач по быстрому формированию маршрутов доставки материалов +### по объектам и распределению курьеров по маршрутам с доставкой документов. СУБД должна уметь быстро работать +### со связями. +### Ответ: +Тип СУБД: Графовая СУБД (например, Neo4j) + +Обоснование: + +Задача построения маршрутов и связей → графовая модель лучше справляется с такими задачами (короткие пути, связи, оптимизация). + + +### 1.4.* Можно ли к этой СУБД подключить отдел закупок или для них лучше сформировать свою СУБД в связке с СУБД +### логистов? +### Ответ: рекомендуется связка: + +Использовать отдельную реляционную СУБД для закупок (финансовые данные, отчётность); + +Интеграция с логистической графовой СУБД через API или ETL (синхронизация данных). +### 1.5.* Можно ли все перечисленные выше задачи решить, используя одну СУБД? Если да, то какую именно? + +*Приведите ответ в свободной форме.* + +### Ответ: +Теоретически — да, при выборе PostgreSQL: + +Поддерживает реляционные таблицы, JSONB (полуструктурированные данные); + +Интеграция с внешними сервисами (например, аналитика, машинное обучение); + +Расширения, например, pgRouting — для логистики (альтернатива Neo4j); + +Многоуровневая архитектура и безопасность. + +Но на практике лучше использовать гибридную архитектуру: каждая задача на оптимальном инструменте. + +--- + +### Задание 2. Транзакции + +### 2.1. Пользователь пополняет баланс счёта телефона, распишите пошагово, какие действия должны произойти для того, чтобы +### транзакция завершилась успешно. Ориентируйтесь на шесть действий. +### Ответ: +1.Пользователь инициирует платёж через сайт или мобильное приложение. + +2.Создаётся транзакция в базе данных со статусом «Ожидание». + +3.Платёжный шлюз проверяет и подтверждает платёж (например, через эквайринг). + +4.СУБД обновляет баланс телефона, переводит транзакцию в статус «Успешно». + +5.Запись в лог/аудит: сохраняется информация о времени, платеже, пользователе. + +6.Отправляется уведомление пользователю о пополнении баланса (SMS, e-mail, push). + +Все шаги должны быть обернуты в транзакцию БД, чтобы при сбое операции всё откатилось. + +### 2.1.* Какие действия должны произойти, если пополнение счёта телефона происходило бы через автоплатёж? + +*Приведите ответ в свободной форме.* +### Ответ: +1.Система проверяет дату и порог баланса. + +2.Создаёт задачу на автосписание с привязанной картой. + +3.Инициализация платежа через платёжный API. + +4.Проверка и подтверждение оплаты. + +5.Обновление баланса и статус автоплатежа. + +6.Отправка уведомлений + запись в историю. + +--- + +### Задание 3. SQL vs NoSQL + +### 3.1. Напишите пять преимуществ SQL-систем по отношению к NoSQL. + +### Ответ: +1.Масштабируемость как у NoSQL, но с гарантией ACID, как у SQL; + +2.Горизонтальное масштабирование без потери консистентности (например, Google Spanner, CockroachDB); + +3.Автоматическое восстановление, шардирование, высокая доступность; + +4.Подходит для нагруженных и критичных систем (финтех, телеком, госсервисы). + +### 3.1.* Какие, на ваш взгляд, преимущества у NewSQL систем перед SQL и NoSQL. + +*Приведите ответ в свободной форме.* + +### Ответ: +Масштабируемость как у NoSQL, но с гарантией ACID, как у SQL; + +Горизонтальное масштабирование без потери консистентности (например, Google Spanner, CockroachDB); + +Автоматическое восстановление, шардирование, высокая доступность; + +Подходит для нагруженных и критичных систем (финтех, телеком, госсервисы) + +--- + +### Задание 4. Кластеры + +### Необходимо производить большое количество вычислений при работе с огромным количеством данных, под эту задачу +### выделено 1000 машин. + +### На основе какого критерия будете выбирать тип СУБД и какая модель *распределённых вычислений* +### здесь справится лучше всего и почему? + +### *Приведите ответ в свободной форме.* + +### Ответ: +Критерии выбора: + +Объём данных — несколько терабайт или петабайт? + +Тип обработки — пакетная или потоковая? + +Задачи — аналитика, прогнозы, ML? + +Рекомендации: + +Для анализа большого объёма данных → колоночные СУБД, например: + +ClickHouse, Apache Druid, Amazon Redshift — для аналитики. + +Распределённые фреймворки: + +Apache Spark — модель распределённой обработки данных (в памяти и на диске); + +Hadoop (HDFS + MapReduce) — если важна обработка файлов и устойчивость; + +Presto/Trino — SQL-движок для объединения данных из разных источников. + +Почему Apache Spark: + +Высокая скорость; + +Работа в кластере (управляет ресурсами); + +Поддержка SQL, MLlib, GraphX; + +Интеграция с различными СУБД и хранилищами. + +--- + +Задания,помеченные звёздочкой, — дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже разобраться в материале. diff --git "a/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\232\320\265\321\210\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 Redismemcached\302\273 11-02.md" "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\232\320\265\321\210\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 Redismemcached\302\273 11-02.md" new file mode 100644 index 00000000..4876c0a0 --- /dev/null +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\232\320\265\321\210\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265 Redismemcached\302\273 11-02.md" @@ -0,0 +1,63 @@ +### Задание 1. Кеширование + +Приведите примеры проблем, которые может решить кеширование. + +*Приведите ответ в свободной форме.* + +### Ответ +Кеширование — это способ хранения часто запрашиваемых данных в более быстром хранилище (например, в оперативной памяти), чтобы ускорить доступ к ним. + +Примеры проблем, которые решает кеширование: +Медленный доступ к данным +– Пример: веб-сайт загружает изображения или статьи из базы данных — кеширование позволяет хранить эти данные в оперативной памяти, чтобы не обращаться к БД каждый раз. + +Высокая нагрузка на сервер +– Пример: одна и та же страница запрашивается тысячами пользователей. С кешем сервер генерирует её один раз, а затем отдает из памяти. + +Медленные API-ответы +– Пример: внешние API (например, валютные курсы или погода) можно кешировать на 5–10 минут, чтобы не дергать каждый раз. + +Повторные вычисления +– Пример: генерация отчета или результатов сложных расчетов может занимать много времени. Кеш помогает избежать повторной обработки одних и тех же данных. + +Оптимизация производительности мобильных и SPA-приложений +– Кеширование на стороне клиента уменьшает обращения к серверу и ускоряет работу приложения. + +--- + +### Задание 2. Memcached + +Установите и запустите memcached. + +*Приведите скриншот systemctl status memcached, где будет видно, что memcached запущен.* +![11-2-2.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-2-2.png) +--- + +### Задание 3. Удаление по TTL в Memcached + +Запишите в memcached несколько ключей с любыми именами и значениями, для которых выставлен TTL 5. + +*Приведите скриншот, на котором видно, что спустя 5 секунд ключи удалились из базы.* + +### Тут у меня возникла непонятная ошибка. Если ставить ттл 5, то при запросе сразу же он выдавал end. Не знаю с чем связанно, может я не успевал ввести. При ттл 10 все спокойно срабатывало. + +![11-2-3.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-2-3.png) +--- + +### Задание 4. Запись данных в Redis + +Запишите в Redis несколько ключей с любыми именами и значениями. + +*Через redis-cli достаньте все записанные ключи и значения из базы, приведите скриншот этой операции.* +![11-2-4.png](https://github.com/KaifasKainChaos/sdb-homeworks/blob/KaifasKainChaos-patch-1/screenshots/11-2-4.png) + +## Дополнительные задания (со звёздочкой*) +Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже разобраться в материале. + +### Задание 5*. Работа с числами + +Запишите в Redis ключ key5 со значением типа "int" равным числу 5. Увеличьте его на 5, чтобы в итоге в значении лежало число 10. + +*Приведите скриншот, где будут проделаны все операции и будет видно, что значение key5 стало равно 10.* + + diff --git a/12-02.md "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\260\320\261\320\276\321\202\320\260 \321\201 \320\264\320\260\320\275\320\275\321\213\320\274\320\270 (DDL-DML)\302\273.md" similarity index 87% rename from 12-02.md rename to "\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\260\320\261\320\276\321\202\320\260 \321\201 \320\264\320\260\320\275\320\275\321\213\320\274\320\270 (DDL-DML)\302\273.md" index 065fac08..cf9df4db 100644 --- a/12-02.md +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\260\320\261\320\276\321\202\320\260 \321\201 \320\264\320\260\320\275\320\275\321\213\320\274\320\270 (DDL-DML)\302\273.md" @@ -44,6 +44,12 @@ ALTER USER 'sys_test'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass *Результатом работы должны быть скриншоты обозначенных заданий, а также простыня со всеми запросами.* +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/1496d3c36ee9e916ed7d07afaf059ae5da19720c/12-02/8.png) +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/1496d3c36ee9e916ed7d07afaf059ae5da19720c/12-02/2.png) +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/1496d3c36ee9e916ed7d07afaf059ae5da19720c/12-02/3.png) +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/1496d3c36ee9e916ed7d07afaf059ae5da19720c/12-02/4.png) +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/1496d3c36ee9e916ed7d07afaf059ae5da19720c/12-02/5.png) +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/1496d3c36ee9e916ed7d07afaf059ae5da19720c/12-02/6.png) ### Задание 2 Составьте таблицу, используя любой текстовый редактор или Excel, в которой должно быть два столбца: в первом должны быть названия таблиц восстановленной базы, во втором названия первичных ключей этих таблиц. Пример: (скриншот/текст) @@ -51,7 +57,7 @@ ALTER USER 'sys_test'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pass Название таблицы | Название первичного ключа customer | customer_id ``` - +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/1496d3c36ee9e916ed7d07afaf059ae5da19720c/12-02/7.png) ## Дополнительные задания (со звёздочкой*) Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале. diff --git "a/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\265\320\277\320\273\320\270\320\272\320\260\321\206\320\270\321\217 \320\270 \320\274\320\260\321\201\321\210\321\202\320\260\320\261\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265. \320\247\320\260\321\201\321\202\321\214 2\302\273 12-07.md" "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\265\320\277\320\273\320\270\320\272\320\260\321\206\320\270\321\217 \320\270 \320\274\320\260\321\201\321\210\321\202\320\260\320\261\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265. \320\247\320\260\321\201\321\202\321\214 2\302\273 12-07.md" new file mode 100644 index 00000000..a5fe8c60 --- /dev/null +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\240\320\265\320\277\320\273\320\270\320\272\320\260\321\206\320\270\321\217 \320\270 \320\274\320\260\321\201\321\210\321\202\320\260\320\261\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265. \320\247\320\260\321\201\321\202\321\214 2\302\273 12-07.md" @@ -0,0 +1,114 @@ +# Домашнее задание к занятию «Репликация и масштабирование. Часть 2» + +### Инструкция по выполнению домашнего задания + +1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). +2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. +3. Выполните домашнее задание и заполните у себя локально этот файл README.md: + - впишите вверху название занятия и ваши фамилию и имя; + - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; + - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); + - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). +4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). +5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. +6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. + +Желаем успехов в выполнении домашнего задания. + +--- + +### Задание 1 + +Опишите основные преимущества использования масштабирования методами: + +- активный master-сервер и пассивный репликационный slave-сервер; +- master-сервер и несколько slave-серверов; + + +*Дайте ответ в свободной форме.* + +Преимущества использования разных схем масштабирования: + 1. Активный master-сервер и пассивный репликационный slave-сервер + - Master принимает все запросы на запись, slave — резервная копия. + - Преимущества: + Высокая отказоустойчивость: если master упадёт, slave можно быстро перевести в master. + - Защита данных: изменения реплицируются, минимизируется риск потери. + - Простота администрирования: система относительно проста в управлении. + - Минус: нагрузка на master не распределяется, slave простаивает большую часть времени. + 2. Master-сервер и несколько slave-серверов + - Master выполняет все записи, а чтение распределяется между несколькими slave. +- Преимущества: + Балансировка нагрузки: запросы на чтение уходят на slave, что разгружает master. + - Масштабируемость: можно добавлять новые slave по мере роста нагрузки. + - Отказоустойчивость: при сбое одного из slave система продолжает работать. + - Гибкость: можно использовать slave для аналитики или бэкапов, не мешая master. + - Минус: задержка репликации — возможны расхождения между master и slave (особенно при большом объёме данных). +--- + +### Задание 2 + + +Разработайте план для выполнения горизонтального и вертикального шаринга базы данных. База данных состоит из трёх таблиц: + +- пользователи, +- книги, +- магазины (столбцы произвольно). + +Опишите принципы построения системы и их разграничение или разбивку между базами данных. + +*Пришлите блоксхему, где и что будет располагаться. Опишите, в каких режимах будут работать сервера.* + +План горизонтального и вертикального шардинга базы данных + +Вертикальный шардинг (разделение по таблицам) +- БД Пользователи — в отдельной базе, т.к. может содержать чувствительные данные (логины, пароли, e-mail). +- БД Книги — отдельно, так как потенциально очень большая таблица с описаниями, жанрами, авторами. +- БД Магазины — отдельно, так как структура и нагрузка отличаются (геолокации, склады, остатки). + +Таким образом, у нас будет 3 базы на разных серверах. + +Горизонтальный шардинг (разделение внутри таблиц) +- Пользователи — можно делить по регионам (например, Россия, Европа, Азия) или по первой букве логина (А–М, Н–Я). +- Книги — по жанрам или по диапазону ID (например, ID 1–1 млн на сервере 1, 1 млн–2 млн на сервере 2). +- Магазины — по регионам (Москва/СПб/регионы, Европа/США/Азия). + +⸻ + +Режимы работы серверов +- Для каждого шарда: один master (для записи) и несколько slave (для чтения, аналитики, резервирования). +- Таким образом, мы получаем систему, где: +- Master-сервера обрабатывают транзакции. +- Slave-сервера — балансируют нагрузку на чтение и обеспечивают отказоустойчивость. +``` + ┌──────────────┐ + │ Клиенты │ + └──────┬───────┘ + │ + ┌────────▼─────────┐ + │ Балансировщик │ + └────────┬─────────┘ + │ + ┌───────────────────┼───────────────────┐ + │ │ │ +┌──▼──┐ ┌───▼───┐ ┌───▼───┐ +│Users│ │ Books │ │Shops │ +└──┬──┘ └───┬───┘ └───┬───┘ + │ │ │ + │ │ │ +┌──▼───┐ ┌───▼───┐ ┌───▼───┐ +│Master│ │Master │ │Master │ +└──┬───┘ └───┬───┘ └───┬───┘ + │ │ │ +┌──▼───┐ ┌───▼───┐ ┌───▼───┐ +│Slave │ │Slave │ │Slave │ +└──────┘ └───────┘ └───────┘ +``` +## Дополнительные задания (со звёздочкой*) +Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале. + +--- +### Задание 3* + +Выполните настройку выбранных методов шардинга из задания 2. + +*Пришлите конфиг Docker и SQL скрипт с командами для базы данных*. diff --git a/13-01.md "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\243\321\217\320\267\320\262\320\270\320\274\320\276\321\201\321\202\320\270 \320\270 \320\260\321\202\320\260\320\272\320\270 \320\275\320\260 \320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265 \321\201\320\270\321\201\321\202\320\265\320\274\321\213\302\27313-01.md" similarity index 61% rename from 13-01.md rename to "\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\243\321\217\320\267\320\262\320\270\320\274\320\276\321\201\321\202\320\270 \320\270 \320\260\321\202\320\260\320\272\320\270 \320\275\320\260 \320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265 \321\201\320\270\321\201\321\202\320\265\320\274\321\213\302\27313-01.md" index cf3feff9..cca615d2 100644 --- a/13-01.md +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\216 \302\253\320\243\321\217\320\267\320\262\320\270\320\274\320\276\321\201\321\202\320\270 \320\270 \320\260\321\202\320\260\320\272\320\270 \320\275\320\260 \320\270\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\321\213\320\265 \321\201\320\270\321\201\321\202\320\265\320\274\321\213\302\27313-01.md" @@ -35,9 +35,44 @@ - Какие сетевые службы в ней разрешены? - Какие уязвимости были вами обнаружены? (список со ссылками: достаточно трёх уязвимостей) - -*Приведите ответ в свободной форме.* + +*Приведите ответ в свободной форме.* +### Решение 1 + +Разрешены следующие сетевые службы: + + PORT STATE SERVICE +* 21/tcp open ftp +* 22/tcp open ssh +* 23/tcp open telnet +* 25/tcp open smtp +* 53/tcp open domain +* 80/tcp open http +* 111/tcp open rpcbind +* 139/tcp open netbios-ssn +* 445/tcp open microsoft-ds +* 512/tcp open exec +* 513/tcp open login +* 514/tcp open shell +* 1099/tcp open rmiregistry +* 1524/tcp open ingreslock +* 2049/tcp open nfs +* 2121/tcp open ccproxy-ftp +* 3306/tcp open mysql +* 5432/tcp open postgresql +* 5900/tcp open vnc +* 6000/tcp open X11 +* 6667/tcp open irc +* 8009/tcp open ajp13 +* 8180/tcp open unknown + +Были обнаружены следующие уязвимости: +1. [vsftpd 2.3.4 - Backdoor Command Execution](https://www.exploit-db.com/exploits/49757). +2. [OpenSSH < 7.7 - User Enumeration (2)](https://www.exploit-db.com/exploits/45939). +3. [MySQL 5.0.x - IF Query Handling Remote Denial of Service](https://www.exploit-db.com/exploits/30020). + +--- ### Задание 2 Проведите сканирование Metasploitable в режимах SYN, FIN, Xmas, UDP. @@ -50,3 +85,28 @@ - Как отвечает сервер? *Приведите ответ в свободной форме.* + +### Решение 2 + +1. Чем отличаются режимы сканирования в сетевом трафике? + +SYN scan (–sS) — отправляет TCP пакет с флагом SYN, ждёт ответа SYN-ACK (открыт) или RST (закрыт). Это “полуоткрытое” сканирование: не устанавливает полный TCP-хендшейк. +FIN scan — отправляется TCP с флагом FIN. Ответ RST означает закрытый порт, отсутствие ответа — скорее всего открытый или фильтруемый порт. +Xmas scan — отправляет комбинацию флагов FIN, URG и PUSH. Аналогично FIN scan: RST → закрыт; нет ответа → открытый или фильтруемый. +UDP scan (–sU) — отправляет пустой UDP пакет. Ответ ICMP Port Unreachable означает закрытый порт, отсутствие ответа — либо открыт, либо фильтруемый. + + +⸻ + +2. Как отвечает сервер? +## SYN scan: +SYN-ACK → порт открыт +RST → порт закрыт +## FIN / Xmas scan: +RST → порт закрыт +отсутствие ответа → порт открыт или фильтруемый, потому что согласно RFC для закрытого порта должен быть RST, а открытый порт просто игнорирует неожиданный FIN/URG/PUSH. +## UDP scan: + ICMP Port Unreachable (Type 3/Code 3) → закрыт + без ответа → возможно открыт или фильтруется firewall. + +--- diff --git "a/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\217\320\274 \302\253\320\240\320\265\320\277\320\273\320\270\320\272\320\260\321\206\320\270\321\217 \320\270 \320\274\320\260\321\201\321\210\321\202\320\260\320\261\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\302\27312-06.md" "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\217\320\274 \302\253\320\240\320\265\320\277\320\273\320\270\320\272\320\260\321\206\320\270\321\217 \320\270 \320\274\320\260\321\201\321\210\321\202\320\260\320\261\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\302\27312-06.md" new file mode 100644 index 00000000..a43af1eb --- /dev/null +++ "b/\320\224\320\276\320\274\320\260\321\210\320\275\320\265\320\265 \320\267\320\260\320\264\320\260\320\275\320\270\320\265 \320\272 \320\267\320\260\320\275\321\217\321\202\320\270\321\217\320\274 \302\253\320\240\320\265\320\277\320\273\320\270\320\272\320\260\321\206\320\270\321\217 \320\270 \320\274\320\260\321\201\321\210\321\202\320\260\320\261\320\270\321\200\320\276\320\262\320\260\320\275\320\270\320\265\302\27312-06.md" @@ -0,0 +1,111 @@ +# Домашнее задание к занятию «Репликация и масштабирование. Часть 1» + +### Инструкция по выполнению домашнего задания + +1. Сделайте fork [репозитория c шаблоном решения](https://github.com/netology-code/sys-pattern-homework) к себе в Github и переименуйте его по названию или номеру занятия, например, https://github.com/имя-вашего-репозитория/gitlab-hw или https://github.com/имя-вашего-репозитория/8-03-hw). +2. Выполните клонирование этого репозитория к себе на ПК с помощью команды `git clone`. +3. Выполните домашнее задание и заполните у себя локально этот файл README.md: + - впишите вверху название занятия и ваши фамилию и имя; + - в каждом задании добавьте решение в требуемом виде: текст/код/скриншоты/ссылка; + - для корректного добавления скриншотов воспользуйтесь инструкцией [«Как вставить скриншот в шаблон с решением»](https://github.com/netology-code/sys-pattern-homework/blob/main/screen-instruction.md); + - при оформлении используйте возможности языка разметки md. Коротко об этом можно посмотреть в [инструкции по MarkDown](https://github.com/netology-code/sys-pattern-homework/blob/main/md-instruction.md). +4. После завершения работы над домашним заданием сделайте коммит (`git commit -m "comment"`) и отправьте его на Github (`git push origin`). +5. Для проверки домашнего задания преподавателем в личном кабинете прикрепите и отправьте ссылку на решение в виде md-файла в вашем Github. +6. Любые вопросы задавайте в чате учебной группы и/или в разделе «Вопросы по заданию» в личном кабинете. + +Желаем успехов в выполнении домашнего задания. + +--- + +### Задание 1 + +На лекции рассматривались режимы репликации master-slave, master-master, опишите их различия. + +*Ответить в свободной форме.* + +Репликация master-slave - подразумевает наличие одного мастера и несколько ведомых устройств, запись/изменения производятся только на одном мастере, при реплекации master-master - сервера одновременно выступают и мастером и ведомым, изменения можно производить на любом мастере (нескольких устройствах). В master-master можно придумать запросы или создать ситуацию когда синхронизация будет нарушена и появятся конфликты, которые нарушат работу системы. +--- + +### Задание 2 + +Выполните конфигурацию master-slave репликации, примером можно пользоваться из лекции. + +*Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.* +**На сервере master** + +``` +CREATE USER 'replication'@'%'IDENTIFIED WITH mysql_native_password BY '24101967cO'; +GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%' +SHOW GRANTS FOR replication@'%'; # Проверяем права +``` + +**Редактируем файл /etc/mysql/my.cnf и перезагружаем сервер** + +``` +bind-address=0.0.0.0 +server_id = 1 +log_bin = mysql-bin +``` +**На сервере slave, Редактируем файл /etc/mysql/my.cnf и перезагружаемся** + +``` +bind-address=0.0.0.0 +log_bin = mysql-bin +server_id = 2 +relay-log = /var/lib/mysql/mysql-relay-bin +relay-log-index = /var/lib/mysql/mysql-relay-bin.index +read_only = 1 +``` + +``` +CHANGE MASTER TO MASTER_HOST='192.168.0.4', MASTER_USER='replication', MASTER_PASSWORD='24101967cO', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=157; +START SLAVE; +SHOW SLAVE STATUS\G; +``` + + + + +*Master* + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/1.png) + +*Slave* + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/2.png) +*Репликация* + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/3.png) + +--- + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/4.png) + +--- + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/5.png) + +--- + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/6.png) + +--- + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/7.png) + +--- + +![img](https://github.com/KaifasKainChaos/sdb-homeworks/blob/a8df9b8c363e856d4f3112a4d3a953f574482c88/12-06/8.png) +--- + +## Дополнительные задания (со звёздочкой*) +Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале. + +--- + +### Задание 3* + +Выполните конфигурацию master-master репликации. Произведите проверку. + +*Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.* +---