OSS Group OSS Group
>  Карта
>  Поиск
>  Контакты
>  OSS Group  ::  Admin  ::  Настройка Master-Slave репликации в MySQL
  
РегистрацияЗабыли пароль?

↓  Быстрый поиск по Wiki


Режим поиска:   И   ИЛИ

↓  Доступные Wiki

↓  Навигация по сайту

[]

↓  Последняя новость

Загрузка...

↓  На эту страницу ссылаются:

Get Firefox!
[~]

Настройка Master-Slave репликации в MySQL

Исходные данные

  1. Хост №1 (mysql1) - будущий master, ОС ALT Linux Sisyphus, СУБД MySQL 5.0, существующая база replica;
  2. Хост №2 (mysql2) - будущий slave, ОС ALT Linux Sisyphus, СУБД MySQL 5.0.

СУБД на обоих хостах запущены и работают.

Требуется

Настроить репликацию базы replica на хосте mysql1 на хост mysql2 в режиме master-slave.

Порядок действий

На хосте mysql1

В файле конфигурации MySQL (/var/lib/mysql/my.cnf):

  1. Отключаем параметр skip-networking
  2. Добавляем параметры:
server-id=1
log-bin=/log/bin.log
binlog-do-db=replica
binlog-ignore-db=mysql
binlog-ignore-db=test

Перезапускаем демона.

#service mysqld restart

В консоли MySQL создаём на master-хосте пользователя с полномочиями на репликацию:

$mysql -uroot -p

mysql> GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'slave';
mysql> FLUSH PRIVILEGES;
mysql> USE replica;
mysql> FLUSH TABLES WITH READ LOCK;
mysql> SHOW MASTER STATUS;

+------------+----------+--------------+------------------+
| File       | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------+----------+--------------+------------------+
| bin.000002 |       98 | replica      | mysql,test       |
+------------+----------+--------------+------------------+

Запоминаем параметры File и Position.

Далее создаём дамп реплицируемой базы:

$mysqldump -uroot -p replica > replica.dump

И переносим этот дамп на slave-хост.

Внимание. Блокировка таблиц будет снята, если выйти из консоли MySQL. Для создания дампа базы и переноса его на slave-хост следует использовать другую пользовательскую сессию.

После выполнения всех операций на slave-хосте в консоли MySQL разблокируем таблицы:

mysql> UNLOCK TABLES;

На хосте mysql2

Создаём базу replica и наполняем её из дампа с master-хоста:

$mysqladmin -uroot -p create replica
$mysql -uroot -p replica < replica.dump

В файле конфигурации MySQL (/var/lib/mysql/my.cnf):

  1. Отключаем параметр skip-networking
  2. Добавляем параметры:
server-id=2
master-host=mysql1
master-user=slave_user
master-password=slave
master-connect-retry=60
replicate-do-db=replica
relay-log=/log/slave-relay-bin
relay-log-index=/log/slave-relay-bin.index

Перезапускаем демона.

#service mysqld restart

Затем запускаем процесс репликации в консоли MySQL (используя параметры File и Position с master-хоста):

$mysql -uroot -p

mysql> SLAVE STOP;
mysql> CHANGE MASTER TO
    -> MASTER_HOST='mysql1',
    -> MASTER_USER='slave_user',
    -> MASTER_PASSWORD='slave',
    -> MASTER_LOG_FILE='bin.000002',
    -> MASTER_LOG_POS=98;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G

Убеждаемся в том, что параметры Slave_IO_Running и Slave_SQL_Running установлены в Yes.

Краткое резюме

В принципе репликация работает.

Потенциальные проблемы:

  1. Если что-либо меняется на slave-хосте, то, естественно, на master-хост изменения перенесены не будут. К сожалению параметр read-only в конфигурации slave-hosta не срабатывает.
  2. Если что-то меняется в реплицируемой базе на master-хосте без использования явного подключения к ней (например, запросами вида "DELETE FROM replica.test_table;" без предварительной директивы "USE replica;"), то такие изменения не реплицируются. (Теоретически возможно использование конфигурационного параметра вида replicate-wild-do-table=replica.%, однако так оно работать не захотело.)

Из несрабатывающего также стоит отметить директиву для начального переноса данных на slave-хост:

mysql> LOAD DATA FROM MASTER;

На данный момент, судя по всему, альтернативы переносу данных с помощью дампа не существует.

Дополнительные источники информации


Дата создания: 2007-10-08 15:54:13 (Фетисов Ф. А. (faf))
Последнее изменение: 2007-10-08 16:24:13 (Фетисов Ф. А. (faf))
Владелец: Фетисов Ф. А. (faf)
Версия: 2  Все версии


  Не показывать комментарии



Wiki::Admin   Оглавление  Карта раздела  Изменения за сутки  Изменения за неделю  Изменения за месяц



Valid XHTML 1.0 Transitional  Valid CSS!  [Valid RSS]