MySQL репликация

Иметь реплику БД даёт примерно такой профит:

  • При падении мастера можно шустренько перевести все на слейв и продолжить работу
  • Полные дампы БД без остановки мастера
  • Распределение нагрузки "на чтение" между серверами может значительно увеличить скорость работы

В данном мане производится реплика всех баз, т.е. не выборочно какой либо одной базы, а даже тех, которые будут созданы в будущем.

Поднимаем Master

Master это сервер с которого будут идти данные, он имеет IP:1.2.3.4

Заходим в /etc/mysql/my.cnf и в конфигурации [mysqld] указываем параметры:

# репликация - данный сервер мастер
server-id = 1

# место хранения бинарных логов
log_bin = /var/log/mysql/log_bin

# срок хранения, в днях, бинарных логов. Если установлено значение 0, бинарные логи не удаляются
expire_logs_days = 10

# максимальный размер бинарного лог файла. При достижении размером файла, данного значения, будет открыт новый файл лога
max_binlog_size = 300M

В консоле подключаемся к  MySQL:

mysql -u root -p

Добавляем юзера-репликатора для слейва, с помощью команд:

create user 'replicator'@'%' identified by 'Pa$$w0rd';
grant replication slave on *.* to 'replicator'@'%';

После чего рестартанём MySQL:

service mysql restart

Снова заходим в MySQL (подключаемся консольным клиентом) и выполняем запрос:

mysql> show master status; 
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |    11716 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

как видите MySQL показывает статистику, в которой значение Position должно увеличиваться по мере того, как вносятся изменения в БД на мастере.

Доступ к MySQL из сети

По умолчанию сервер MySQL принимает соединения только с локальной машины. Для того, чтобы разрешить подключаться к MySQL с других машин, замените строку

bind-address = 127.0.0.1

на

#разрешить подключатся с любого хоста
bind-address = 0.0.0.0
#разрешить подключатся только с указанного IP
bind-address = 192.168.1.23

Поднимаем Slave

Slave это сервер на который будут идти данные, он имеет IP:5.6.7.8

Заходим в /etc/mysql/my.cnf слэйва и в конфигурации [mysqld] указываем параметры:

server-id = 2
relay-log = /var/lib/mysql/relay-log
relay-log-index = /var/lib/mysql/relay-log-index

После чего рестартанём MySQL:

service mysql restart

Дамп

На Master-сервере делаем дамп и разворачиваем его на Slave-сервере

Реплицируем данные

В консоле подключаемся к  MySQL:

mysql -u root -p

и запускаем репликацию с помощью следующих команд:

change master to master_host = "1.2.3.4", master_user = "replicator", master_password="Pa$$w0rd", master_log_file = "mysql-bin.000001", master_log_pos = 11716;
start slave;

Проверим состояние Slave:

show slave status;

Увидим большую портянку, публиковать ее не буду, главное обратить внимание на отсутствие ошибок и если репликация идет нормально, на реплике номер лога в Master_Log_File и позиция Exec_Master_Log_Pos будут расти. Seconds_Behind_Master - время отставания реплики от мастера, если оно нулевое - значит все в порядке. Ну а если нет, то Slave не успевает воспроизводить действия с Master.

Оцени публикацию:
  • 2,9
Оценили человек: 2

Похожие статьи:

Справочники и учебники:


Предложения и пожелания:
Ваше имя:
Ваш E-mail:
Сколько будет Οдин + Τри
Главная
X

Новые заметки:

Про что мы забываем когда делаем оценку задачи по времени

Список вопросов для собеседования разработчика по телефону

Symfony2 авторизация без Doctrine2 для чайника

Phpstorm7 LiveEdit

Жесткий хабр или не хабр, тогда кто?

Яндекс.Деньги мошенничество

Как узнать какие страницы в поиске яндекса или это секрет

Последние комменты:

Yapro CMS:

Здравствуйте, Гость | Войти | Регистрация | Карта сайта | RSS ленты | Ошибка в тексте? Выделите её мышкой и нажмите: Ctrl + Enter

youtube.com/watch?v=7hFivbgIEqk

При полном или частичном использовании материалов данного сайта, ссылка на сайт "yapro.ru" обязательна как на источник информации.
Автоматический импорт материалов и информации с сайта запрещен.
Copyrights © 2007 - 2018 YaPro.Ru

Главная » Веб-мастеру » MySQL »