MySQL Replication · 2 min read · Feb 02, 2026
Мастера-Мастера Репликация С MySQL 5 На Fedora 8
Мастера-Мастера Репликация С MySQL 5 На Fedora 8
Версия 1.0
Автор: Оливер Мейер
Этот документ описывает, как настроить мастера-мастера репликацию с MySQL 5 на Fedora 8. Начиная с версии 5, MySQL поддерживает встроенную мастера-мастера репликацию, решая проблему, которая может возникнуть с самосгенерированными ключами. В предыдущих версиях MySQL проблема с мастера-мастера репликацией заключалась в том, что конфликты возникали немедленно, если узел A и узел B оба вставляли автоинкрементный ключ в одну и ту же таблицу. Преимущества мастера-мастера репликации по сравнению с традиционной мастера-слейв репликацией заключаются в том, что вам не нужно изменять ваши приложения, чтобы делать записи только на мастере, и что легче обеспечить высокую доступность, потому что если мастер выходит из строя, у вас все еще есть другой мастер.
Этот howto является практическим руководством без каких-либо гарантий - он не охватывает теоретические основы. Существует множество способов настройки такой системы - это тот способ, который я выбрал.
1 Подготовка
Для этого howto я настроил две системы Fedora 8 (минимальная установка без графического интерфейса и т.д.) с следующей конфигурацией.
1.1 Система 1
Имя хоста: server1.example.com
IP: 192.168.0.100
1.2 Система 2
Имя хоста: server2.example.com
IP: 192.168.0.200
2 MySQL
2.1 Необходимые пакеты на обеих системах
Если вы еще не установили MySQL на обеих системах, вы можете установить его (клиент и сервер) с помощью:
yum -y install mysql mysql-server
2.2 Начальный запуск MySQL сервера на обеих системах
Запустите MySQL сервер.
/etc/init.d/mysqld start
2.3 Пароль root для MySQL
2.3.1 Обе системы
Установите пароль для пользователя root MySQL на localhost.
mysqladmin -u root password %sql_root_password%
2.3.2 Система 1
Установите пароль для пользователя root MySQL на server1.example.com.
mysqladmin -u root -h server1.example.com password %mysql_root_password%
2.3.3 Система 2
Установите пароль для пользователя root MySQL на server2.example.com.
mysqladmin -u root -h server2.example.com password %mysql_root_password%
2.4 Пользователь репликации MySQL
2.4.1 Система 1
Создайте пользователя репликации, который Система 2 будет использовать для доступа к базе данных MySQL на Системе 1.
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'slave2_user'@'%' IDENTIFIED BY '%mysql_slaveuser_password%'; FLUSH PRIVILEGES; quit;
2.4.2 Система 2
Создайте пользователя репликации, который Система 1 будет использовать для доступа к базе данных MySQL на Системе 2.
mysql -u root -p
GRANT REPLICATION SLAVE ON *.* TO 'slave1_user'@'%' IDENTIFIED BY '%mysql_slaveuser_password%'; FLUSH PRIVILEGES; quit;
2.5 База данных на Системе 2
Я предполагаю, что база данных exampledb уже существует на Системе 1 - содержащая таблицы с записями. Поэтому нам нужно создать пустую базу данных с тем же именем, что и существующая база данных на Системе 1.
mysql -u root -p
CREATE DATABASE exampledb; quit;
Get new posts in your inbox
No spam. Unsubscribe anytime.