- Сервера master.company.com (192.168.10.2) и slave01.company.com (192.168.10.3)
- Две базы данных portal и temp
- Статья на хабре за 2009 http://habrahabr.ru/post/56702/,с тех пор мало что изменилось, но есть ряд недомолвок со стороны автора и синтаксис работы с командной строкой mysql немного изменился с тех пор (как впрочем и владелец, но это уже совсем другая история)
Настройки на MASTER
Подправим конфиг на мастере:
mcedit /etc/mysql/my.conf
В секции [mysqld] добавим строки:
server-id = 1 # это уникальный идентификатор для каждой базы
log-bin = /var/lib/mysql/mysql-bin
replicate-do-db = portal
replicate-do-db = temp
Изменим доступность сервера исправив строку:
bind-address = 127.0.0.1
на
bind-address = *
Авторизуемся из под root в mysql:
mysql -u root -p
Создадим пользователя и выдадим ему права на работу с репликами:
CREATE USER rep;
GRANT replication slave ON *.* TO rep@'%' IDENTIFIED BY "rep";
Рестартуем базу:
/etc/init.d/mysql restart
Настройки на SLAVE
mcedit /etc/mysql/my.conf
В секции [mysqld] добавим строки:
server-id = 2 # это уникальный идентификатор для каждой базы
relay-log = /var/lib/mysql/mysql-relay-bin
relay-log-index = /var/lib/mysql/mysql-relay-bin.index
replicate-do-db = portal
replicate-do-db = temp
Изменим доступность сервера исправив строку:
bind-address = 127.0.0.1
на
bind-address = *
Рестартуем базу:
/etc/init.d/mysql restart
Переносим данные с MASTER на SLAVE
mysql -u root -p
Заблокируем базу:
FLUSH TABLES WITH READ LOCK;
SET GLOBAL read_only = ON;
Отобразить статус:
SHOW MASTER STATUS;
Запомним колонки File (например mysql-bin.000003) и Position (например 243).
Разлогиниваемся:
QUIT;
Делаем дамп баз данных:
mysqldump -u root -p portal > portal.dump
mysqldump -u root -p temp > temp.dump
Снова авторизуемся в mysql:
mysql -u root -p
SET GLOBAL read_only = OFF;
QUIT;
Копируем дампы с MASTER на SLAVE, например через scp:
scp portal.dump tux@slave01.company.com:/home/tux
scp temp.dump tux@slave01.company.com:/home/tux
Восстанавливаемся из бэкапов (на SLAVE):
mysql -u root -p
CREATE DATABASE portal;
CREATE DATABASE temp;
QUIT;
mysql -u root -p portal < portal.dump
mysql -u root -p temp< temp.dump
Скажем нашему рабу брать данные с мастера:
mysql -u root -p
CHANGE MASTER TO MASTER_HOST = "192.168.10.2", MASTER_USER = "rep", MASTER_PASSWORD = "rep", MASTER_LOG_FILE = "mysql-bin.000003", MASTER_LOG_POS = 243;
START SLAVE;
Смотрим статус репликации:
SHOW SLAVE STATUS;
Из статьи на хабре понятно, что нам важны всего несколько колонок, а именно:
Slave_IO_State: Waiting for master to send event
...
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 5
Если у Вас это присутствует - значит всё прошло нормально.