Четверг, 5 декабря, 2024

Репликация MySQL Master — Slave

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

MASTER

  • Редактируем mysql.cnf (server-id должен быть уникальным)
  • bind-address = 0.0.0.0
    server-id = 1
    log_bin = /var/log/mysql/mysql-bin.log
  • Перезапускаем службу MySQL
  • sudo systemctl restart mysql
  • Создаем пользователя для реплики в консоли MySQL
  • CREATE USER 'replica'@'IP_ADDRESS_SLAVE' IDENTIFIED BY 'PASSWORD';
    GRANT REPLICATION SLAVE ON *.* TO 'replica'@'IP_ADDRESS_SLAVE';
    FLUSH PRIVILEGES;
  • Блокируем таблицы в базе данных
  • USE database_name;
    FLUSH TABLES WITH READ LOCK;
  • Получаем данные необходимые для создания репликации, команду выполняем в консоли MySQL
  • SHOW MASTER STATUS \G

    Записываем значения File и Position

  • Делаем бэкап базы данных
  • mysqldump -uroot -p database_name > dump_file.sql
  • Разблокируем таблицы
  • UNLOCK TABLES;

    SLAVE

  • Редактируем mysql.cnf (server-id должен быть уникальным)
  • bind-address = 0.0.0.0
    server-id = 2
    log_bin = /var/log/mysql/mysql-bin.log
  • Перезапускаем службу MySQL
  • sudo systemctl restart mysql
  • Создаем базу данных, комманду выполняем в консоли
  • CREATE DATABASE database_name;
  • Восстанавливаем базу данных
  • mysql -uroot -p database_name < dump_file.sql
  • Создаем подключение к Master, значения File и Position заполняем данными полученными с Master
  • CHANGE MASTER TO MASTER_HOST='IP_ADDRESS_MASTER', MASTER_USER='replica', MASTER_PASSWORD='PASSWORD', MASTER_LOG_FILE = 'File', MASTER_LOG_POS = Position;
  • Запускаем репликацию
  • START SLAVE;
  • Проверяем работоспособность
  • SHOW SLAVE STATUS \G
    Предыдущая статья
    Следующая статья

    ОСТАВЬТЕ ОТВЕТ

    Пожалуйста, введите ваш комментарий!
    пожалуйста, введите ваше имя здесь

    Latest article

    Must read