Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

РОИ / лабораторная работа_3

.doc
Скачиваний:
16
Добавлен:
16.04.2015
Размер:
57.86 Кб
Скачать

Лабораторная работа №3

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

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

  1. Хост №1 (mysql1) - будущий master1 и slave2, СУБД MySQL 5.0, существующая база replica;

  2. Хост №2 (mysql2) - будущий slave1 и master2, СУБД MySQL 5.0.

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

Требуется

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

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

На хосте mysql1

Переходим в каталог /usr/local/share/mysql

Переименовываем файл конфигурации my-huge.cnf в my.cnf с помощью команды

cp my-huge.cnf my.cnf

Копируем файл my.cnf в директорию var/db/mysql

В файле my.cnf:

  1. Отключаем параметр skip-networking

  2. Добавляем параметры:

server-id=1

log-bin=bin.log

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

В каталоге usr/local/etc/rc.d

./mysql-server restart

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

mysql –u root –p

пароль: pin05

Необходимо узнать номер журнала и смещение данных от начала файла. Для этого выполняем запрос:

mysql> CREATE database replica;

mysql> USE replica;

mysql> GRANT REPLICATION SLAVE ON *.* TO replica IDENTIFIED BY 'slave';

mysql> FLUSH PRIVILEGES;

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.

Переходим на вторую панель: Alt+F2

Login:root

Password:syncmaster

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

#mysqldump –u root –p replica > replica.dump

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

Скопируем файл replica.dump в директорию usr/home/strafe

Нажимаем F9, затем выбираем Right или Left, после “Shell link”. Набираем строку strafe@172.16.20.## (где ## - адрес мастера)

Пароль: awnstion

Внимание. Блокировка таблиц будет снята, если выйти из консоли MySQL. Для создания дампа базы и переноса его на master-хост №2 следует использовать другую пользовательскую сессию (ALT+F2).

Возвращаемся на первую панель Alt+F1. Выходим из mysql:

mysql> quit.

На хосте mysql2

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

mysqladmin –u root –p create replica

mysql –u root –p replica < replica.dump

Переходим в каталог /usr/local/share/mysql

Переименовываем файл конфигурации my-huge.cnf в my.cnf с помощью команды

cp my-huge.cnf my.cnf

Копируем файл my.cnf в директорию var/db/mysql

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

  1. Отключаем параметр skip-networking

  2. Добавляем параметры:

log-bin=bin.log

server-id=2

master-host=172.16.20.##

master-user=replica

master-password=slave

master-connect-retry=60

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

В каталоге usr/local/etc/rc.d

./mysql-server restart

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

mysql –u root –p

mysql> use replica;

mysql> SLAVE STOP;

mysql> CHANGE MASTER TO

-> MASTER_HOST='172.16.20.##',

-> MASTER_USER='replica',

-> 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.

На данном этапе, фактически была настроена Master-Slave репликация базы replica с хоста mysql1 на хост mysql2.

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

В каталоге usr/local/etc/rc.d

./mysql-server restart

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

mysql –u root –p

mysql> USE replica;

mysql> GRANT REPLICATION SLAVE ON *.* TO replica1 IDENTIFIED BY 'slave';

mysql> FLUSH PRIVILEGES;

mysql> FLUSH TABLES WITH READ LOCK;

mysql> SHOW MASTER STATUS;

+------ ------+----------+--------------------+-----------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------- -----+----------+--------------------+-----------------------+

| bin.000006 | 98 | replica | mysql,test |

+------- -----+----------+--------------------+-----------------------+

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

Возвращаемся к хосту mysql1

В консоли MySQL разблокируем ранее блокированные таблицы:

mysql> UNLOCK TABLES;

В файл конфигурации MySQL (/var/db/mysql/my.cnf) добавляем параметры:

master-host=172.16.20.@@ (где @@ - адрес слейва)

master-user=replica1

master-password=slave

master-connect-retry=60

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

В каталоге usr/local/etc/rc.d

./mysql-server restart

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

mysql –u root –p

mysql> SLAVE STOP;

mysql> CHANGE MASTER TO

-> MASTER_HOST='172.16.20.@@',

-> MASTER_USER=replica1,

-> MASTER_PASSWORD='slave',

-> MASTER_LOG_FILE='bin.000006',

-> MASTER_LOG_POS=98;

mysql> START SLAVE;

mysql> SHOW SLAVE STATUS\G

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

Проверка

    1. В БД replica создаем таблицу. В таблицу вносим 5 записей.

2. На хосте mysql2 переходим в базу данных replica посылаем запрос на выборку всех данных из таблицы (имя таблицы из шага1). Убедиться, что сама таблица и все пять записей были реплицированы.

3. На хосте mysql2 переходим в БД replica. В нашу таблицу вносим еще 5 записей.

4. На хосте mysql1 переходим в БД replica. Посылаем запрос на выборку всех данных из таблицы (имя таблицы из шага 3). Должны появиться все 10 записей.

Вопросы.

Определите преимущества и недостатки master-master репликации по сравнению с master-slave.

3