Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РОИ / лабораторная работа_2.doc
Скачиваний:
19
Добавлен:
16.04.2015
Размер:
100.86 Кб
Скачать

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

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

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

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

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

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

    1. Задание

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

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

Первым делом необходимо включить “Бинарный журнал” на master-сервере. Это файл, в котором регистрируются все изменения данных. Однако, операторы update и delete, которые не затронули ни одной строки — регистрироваться в журнале не будут. Включение журнала немного понижает общую производительноть СУБД, но не сильно, примерно на 1%. Но, в случае падения сервера, этот журнал может быть использован для “автоматического восстановления после сбоя”. Для включения “Бинарного журнала” необходимо отредактировать конфигурационный файл сервера MySQL - my.cnf.

По умолчанию, при установке сервера MySQL из портов этот файл не участвует в конфигурации сервера (его нет в директории запуска). Примеры файла конфигурации присутствуют в директории документации /usr/local/share/mysql в нескольких видах: my-large.cnf, my-medium.cnf, my-small.cnf – соответственно для большей, средней и малой базы данных.

В соответствии с конкретным случаем размера базы данных выбирается файл, переименовывается в my.cnf и копируется в директорию запуска /var/db/mysql/. Одно только включение в работу этого файла уменьшает запрашиваемую память в 6 раз.

      1. На хосте mysql1

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

Переименовываем файл my-large.cnf в файл my.cnf

В файле конфигурации MySQL my.cnf:

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

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

server-id=1

log-bin=bin.log

Этих параметров достаточно для того чтобы организовать репликацию всех баз данных, хранящихся на сервере MySQL. server-id является обязательным параметром, это идентификатор базы. Каждый сервер в схеме репликаци должен иметь уникальный номер. Master-хост должен иметь номер 1. На подчиненном (slave) сервере этот параметр будет равен 2. Параметр slave-compressed разрешает сжимать поток данных передаваемых по сети, что позволяет повысить скорость передачи данных.

Для экономии ресурсов сервера, в MySQL можно организовать выборочную репликацию баз данных. Параметр binlog-do-db позволяет указать серверу на основе какой базы данных необходимо формировать отчет ее изменений. Параметр binlog-ignore-db позволяет указать игнорируемые при репликации базы данных. Для выполнения нашего задания необходимы следующие строки:

binlog-do-db=replica

binlog-ignore-db=mysql

binlog-ignore-db=test

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

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

#/usr/local/etc/rc.d/mysql-server restart

Проверяем работу организованного нами master-сервера.

В консоли MySQL вводим следующую команду:

#mysql -u root -p

Создаем базу данных replica:

mysql> create database replica;

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

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.

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

mysql> GRANT SUPER, REPLICATION CLIENT, REPLICATION SLAVE, RELOAD ON *.* TO replica IDENTIFIED BY 'repl_pass';

mysql> FLUSH PRIVILEGES;

Далее создаём дамп реплицируемой базы (для этого сначала перейдем на другую консоль ALT+F2 и авторизуемся там как root):

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

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

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

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

Пароль: awnstion

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

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

mysql> UNLOCK TABLES;