Skip to content
Snippets Groups Projects
feniks's avatar
feniks authored
f54cbcae
History
Name Last commit Last update
screenshots
README.md

Домашнее задание к занятию 12.6. «Репликация и масштабирование. Часть 1» - Кузин Максим

Инструкция по выполнению домашнего задания

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

Желаем успехов в выполнении домашнего задания.


Задание 1

На лекции рассматривались режимы репликации master-slave, master-master, опишите их различия.

Ответить в свободной форме.

Репликация Master-Slave

Плюсы

  • Клиенты производят чтение со слейвов, не нагружая чтением мастер.
  • Резервное копирование всей базы данных не сильно влияет на мастер.
  • Слейвы могут быть переведены в автономный режим и синхронизированы с мастером без простоев.

Минусы

  • В случае неудачи подчиненный должен быть повышен до ведущего, чтобы занять его место.
  • Время простоя при сбое master
  • Слейвы должны быть кратно мощнее мастера, чтобы не распадалась репликация

Репликация Master-Master

Плюсы

  • Клиенты могут считывать данные с любого мастера
  • Распределяет сетевую нагрузку на запись между мастерами
  • Простой, автоматический и быстрый переход на другой ресурс

Минусы

  • Согласовано только при идеальной работе без сбоев.
  • В случае сбоя репликации ждут большие проблемы с целостностью данных
  • Настроить и развернуть чуть сложнее, чем master-slave (одна дополнительная команда на местере)

Задание 2

Выполните конфигурацию master-slave репликации, примером можно пользоваться из лекции.

Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.

Ответ.

Ответ. Установку делал на Debian 11.5

  1. Добавляем репозиторий с офф. сайта MySQL на обоих серверах
dpkg -i /PATH/mysql-apt-config_0.8.24-1_all.deb
  1. Устанавливаем MySQL на обоих серверах
apt update &&  apt install mysql-server mysql-client

3.1. Правим конфиг на мастере: nano /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log

server-id       = 1
log_bin         = /var/log/mysql/mysql.log
bind-address    = 0.0.0.0

3.1. Правим конфиг на слейве: nano /etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-error       = /var/log/mysql/error.log

server-id       = 2
log_bin         = /var/log/mysql/mysql.log
bind-address    = 0.0.0.0
  1. Делаем инициализацию MySQL на обоих серверах
mysql -I
  1. Создаем пользователя для репликаций на обоих серверах
CREATE USER 'replication'@'%' IDENTIFIED WITH mysql_native_password BY 'My_PA55W0RD';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
  1. На местере проверяем статус
SHOW MASTER STATUS;
  1. На слейве добавляем реплиацию с мастера
CHANGE MASTER TO MASTER_HOST='192.168.100.169', MASTER_USER='replication', MASTER_PASSWORD='My_PA55W0RD', MASTER_LOG_FILE='mysql.000001', MASTER_LOG_POS=841;
  1. На слейве запускаем репликацию
START SLAVE;
  1. На слейве проверяем статус
SHOW SLAVE STATUS\G;
  1. Проверка. Добавляем базы на местере CREATE DATABASE feniks1 и проверяем на слейве SHOW DATABASES;. Если на слейве отображаются базы созданные на местере, то репликация завершена.

скриншот 2.1 скриншот 2.2 скриншот 2.3


Дополнительные задания (со звёздочкой*)

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

Ответ.


Задание 3*

Выполните конфигурацию master-master репликации. Произведите проверку.

Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.

Ответ.

В добавление к настройке master-slave, на местере нужно добавить репликацию, как делали в пунктах 7-10 в задании 2

  1. Уже на слейве проверяем стаус, чтобы узнать лог.позицию
SHOW MASTER STATUS;
  1. На Мастере:
CHANGE MASTER TO MASTER_HOST='192.168.100.170', MASTER_USER='replication', MASTER_PASSWORD='My_PA55W0RD', MASTER_LOG_FILE='mysql.000001', MASTER_LOG_POS=1277;
START SLAVE;
SHOW SLAVE STATUS\G;
  1. Для проверки удалим базу с бывшего слева, которую создавали на мастере: DROP DATABASE feniks1;. Проверяем удалилась ли база на мастере: SHOW DATABASES;

скриншот 3.1 скриншот 3.2