12.6. «Репликация и масштабирование. Часть 1»
- Кузин Максим
Домашнее задание к занятию Инструкция по выполнению домашнего задания
- Сделайте 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
На лекции рассматривались режимы репликации master-slave, master-master, опишите их различия.
Ответить в свободной форме.
Репликация Master-Slave
Плюсы
- Клиенты производят чтение со слейвов, не нагружая чтением мастер.
- Резервное копирование всей базы данных не сильно влияет на мастер.
- Слейвы могут быть переведены в автономный режим и синхронизированы с мастером без простоев.
Минусы
- В случае неудачи подчиненный должен быть повышен до ведущего, чтобы занять его место.
- Время простоя при сбое master
- Слейвы должны быть кратно мощнее мастера, чтобы не распадалась репликация
Репликация Master-Master
Плюсы
- Клиенты могут считывать данные с любого мастера
- Распределяет сетевую нагрузку на запись между мастерами
- Простой, автоматический и быстрый переход на другой ресурс
Минусы
- Согласовано только при идеальной работе без сбоев.
- В случае сбоя репликации ждут большие проблемы с целостностью данных
- Настроить и развернуть чуть сложнее, чем master-slave (одна дополнительная команда на местере)
Задание 2
Выполните конфигурацию master-slave репликации, примером можно пользоваться из лекции.
Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.
Ответ.
Ответ. Установку делал на Debian 11.5
- Добавляем репозиторий с офф. сайта MySQL на обоих серверах
dpkg -i /PATH/mysql-apt-config_0.8.24-1_all.deb
- Устанавливаем 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
- Делаем инициализацию MySQL на обоих серверах
mysql -I
- Создаем пользователя для репликаций на обоих серверах
CREATE USER 'replication'@'%' IDENTIFIED WITH mysql_native_password BY 'My_PA55W0RD';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%';
- На местере проверяем статус
SHOW MASTER STATUS;
- На слейве добавляем реплиацию с мастера
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;
- На слейве запускаем репликацию
START SLAVE;
- На слейве проверяем статус
SHOW SLAVE STATUS\G;
- Проверка. Добавляем базы на местере
CREATE DATABASE feniks1
и проверяем на слейвеSHOW DATABASES;
. Если на слейве отображаются базы созданные на местере, то репликация завершена.
скриншот 2.1 скриншот 2.2 скриншот 2.3
Дополнительные задания (со звёздочкой*)
Эти задания дополнительные, то есть не обязательные к выполнению, и никак не повлияют на получение вами зачёта по этому домашнему заданию. Вы можете их выполнить, если хотите глубже шире разобраться в материале.
Ответ.
Задание 3*
Выполните конфигурацию master-master репликации. Произведите проверку.
Приложите скриншоты конфигурации, выполнения работы: состояния и режимы работы серверов.
Ответ.
В добавление к настройке master-slave, на местере нужно добавить репликацию, как делали в пунктах 7-10 в задании 2
- Уже на слейве проверяем стаус, чтобы узнать лог.позицию
SHOW MASTER STATUS;
- На Мастере:
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;
- Для проверки удалим базу с бывшего слева, которую создавали на мастере:
DROP DATABASE feniks1;
. Проверяем удалилась ли база на мастере:SHOW DATABASES;