Вы просматриваете: » Настройка репликации базы данных MySQL в системе linux и восстановление базы
Категория: ---, опубликовал: rob96, добавлено: 14-10-2014, 16:41
 


Репликацией (или повторением) можно назвать процесс тиражирования изменённых данных, когда они дублируются с главного сервера базы данных на любой другой зависимый сервер (или несколько таких). При этом главному серверу даётся название «Мастер», а остальным – «Реплики».
Репликация позволяет повторять все изменения данных с мастера на репликах, причём обратного процесса не существует. Если Вы измените данные на реплике, они не перенесутся на главный сервер.
Таким образом, работая на Мастере вы можете запрашивать любые команды, обновлять, копировать, вырезать и удалять данные. То же самое произойдёт на Репликах. Но на самих Репликах Вы можете только ознакомляться с данными – читать. Читать данные можно и на Мастере. Если вы используете репликацию на одном из серверов реплик, то на другие он никак не повлияет, так же как и на работу самого Мастера.
Для того, чтобы увидеть сохранённые бинарные логи всех процессов, приводящим к изменению данных, Вам понадобится наличие программы MySQLBinBlog. Все бинарные логи передаются с Мастера на Реплики. На Мастере находятся «реальные» бинарные блоги. После того, как бинарные логи попадают на реплики, процессы с определённого места начинают один за другим выполняться. При этом помните, что репликация передаёт не изменённые данные с Мастера на Реплики, а только бинарные логи, позволяющие повторить на Реплике в точности процессы, произошедшие на Мастере.

Процесс репликации необходим поскольку:

1. Вы сможете повысить показатели производительности. Так, один сервер, он же Мастер, не сможет справиться с огромным количеством процессов. Нагрузку на него помогают сбросить Реплики. Причём чем больше этих процессов на каждую запись в базе данных, тем выгоднее создание Реплик.

2. Если одна из реплик откажет в работе, то все процессы чтения, за которые отвечала эта Реплика, будут переведены в безопасном режиме на Мастера. Когда в работе отказывает главный сервер, то Вы сможете сделать одну из Реплик Мастером. Таким образом, когда бывший Мастер восстановит свою работу, он превратится в Реплику.

3. Если Вы хотите сделать резервные копии данных, то с лёгкостью сможете остановить Реплику, что не приведёт к потере работоспособности сайта. Мастер останавливать не получится.

4. Реплика может выполнять самые сложные SQL-запросы, что не приведёт к загруженности всей системы в целом.
Более того, Вы сможете использовать различную структуру, например, для операции поиска. На Реплике за это может отвечать один тип таблицы, при этом Мастер может работать совершенно на другом типе таблицы.

Как настроить процесс Репликации
Итак, поставим задачу настройки репликации. У нас уже есть база данных MySQL и она имеет следующие параметры:

• IP-адрес мастера 192.168.1.101, реплики — 192.168.1.102.
• MySQL установлен и настроен
• требуется настроить репликацию БД testdb
• мы можем приостановить работу мастера на некоторое время
• везде есть Root

Для настройки Мастера

Вам следует выбрать уникальный ID сервера, выберите путь, где будут находиться бинарные логи, а также имя базы данных для процесса Репликации внутри секции [mysqld]:
1. server-id = 1
2. log-bin = /var/lib/mysql/mysql-bin
3. replicate-do-db = testdb

Нужно просмотреть, какое количество свободного места на диске и хватит ли его для хранения бинарных логов. Нужен новый пользователь. Выберем ему имя "Replication". Именно с его правами мы сможем произвести репликацию. Дайте ему привилегию "replication slave":

mysql@master> GRANT replication slave ON "testdb". * TO "replication"@"192.168.1.102" IDENTIFIED BY "password";

Теперь перезагружаем MySQL для вступления всех изменений в силу при помощи команды:
root@master# service mysqld restart

Если Вы всё сделали правильно и данные подтвердились, то должны увидеть такую запись в команде «show master status»:

1. mysql@master> SHOW MASTER STATUS\G
File: mysql-bin.000003
Position: 98
Binlog_Do_DB:
Binlog_Ignore_DB:

Пункт position будет показывать количество изменений в базе данных.

Настройка Реплики

Требуется указать ID сервера, выбрать имя для базы данных, а также маршрут к реальным бинарным логам в [mysqld].

1. server-id = 2
2. relay-log = /var/lib/mysql/mysql-relay-bin
3. relay-log-index = /var/lib/mysql/mysql-relay-bin.index
4. replicate-do-db = testdb

Сделав это, осуществите перезагрузку БД MySQL:

root@replica# service mysql restart

Для переноса данных

Блокируйте базу данных от записи. Тормозите приложения, или установите флажок на пункт «Только чтение» на Мастере. Если у пользователя есть привилегия SUPER, то данный флажок не сработает.
При наличии таблиц MyISAM сделайте «flush tables»:

1. mysql@master> FLUSH TABLES WITH READ LOCK;
2. mysql@master> SET GLOBAL read_only = ON;

Выберите команду «Показать статус Мастер» и запомните, какие значения в строках «Файл» и «Позиция»:

mysql@replica> SHOW SLAVE STATUS\G
File: mysql-bin.000003
Position: 98

Осуществите дамп базы данных, а после окончания операции отмените блокировку Мастера:

mysql@master> SET GLOBAL read_only = OFF

Перенеся дамп базы данных на сервер Реплику, восстановите их и всё.
Включите процесс Репликации при помощи команд «change master to» и «start slave».

1. mysql@replica> CHANGE MASTER TO MASTER_HOST = "192.168.1.101", MASTER_USER = "replication",
MASTER_PASSWORD = "password" , MASTER_LOG_FILE = "mysql-bin.000003", MASTE_LOG_POS = "98";

2. mysql@replica> start slave;

В строках MASTER_LOG_FILE и MASTER_LOG_POS нужно вписать те значения, которые были на Мастере.

интересные для нас значения, которые показывают на процесс репликации.
Значениях в строках Master_Log_File и Exec_Master_Log_Pos должны расти вместе с Мастером.
Пункт Seconds_Behind_Master, показывающий то, насколько Реплика отстаёт от Мастера, в идеале должно равняться 0. Если это время будет расти, то знайте, что у Вас слишком высокая нагрузка на Реплику.
Если в строке Slave_IO_State ничего нет, а в Seconds_Behind_Master видим параметр 0, то процесс репликации не начался. Нужно проверить лог MySQL и устранить причины, после чего вновь запустить процесс репликации:

mysql@replica> start slave;

есть ещё строка со временем блокировки мастера, это отрезок времени, за который создаётся дамп.
Если дамп делается долго, можно поставить блок на записи Мастер флажком «Только чтение», сохранить у себя в памяти позицию и остановить БД MySQL. Далее скопировать файлы базы данных с Мастера на Реплику и включить Мастер повторно.
можно также подключить несколько реплик


Как сделать Реплику Мастером

Если Мастер откажет в работе, Вам потребуется в срочном порядке сделать одну из Реплик Мастером. Либо настройте Реплику так же, как и Мастер, либо попытайтесь перевести её в режим пассивного Мастера.
В файле конфигурации MySQL нужно включить ведение бинлогов:

log-bin = /var/lib/mysql/mysql-bin

Для процесса репликации добавьте пользователя:

mysql@master> GRANT replication slave ON 'testdb' . * TO 'replication'@'192.168.1.101' IDENTIFIAD BY "password";

Если сделать пассивного Мастера, то репликация будет идти так же как у Реплики. Но, в отличие от Реплики, пассивный Мастер будет создавать бинарные логи.
Для того, чтобы пассивный Мастер стал активным, нужно завершить репликацию на нём. Включить репликацию на бывшем Мастере. Заблокируйте запись на активном Мастере, чтобы не потерять данные:

1. mysql@master> FLUSH TABLES WITH READ LOCK
2. mysql@master> SET GLOBAL read_only = ON;
3. mysql@replica> STOP SLAVE
4. mysql@replica> SHOW MASTER STATUS;
File: mysql-bin.000001
Position: 61

mysql@master> CHANGE MASTER TO MASTER_HOST = "192.168.1.102", MASTER_USER = "replication", MASTER_PASSWORD = "password",
MASTER_LOG_FILE = "mysql-bin.000001", MASTER_LOG_POR = 61;

mysql@master> start slave
снять блокировку на предыдущем мастере







     Комментариев оставлено: (0)    Просмотров: 3183   
Теги:   unix

Другие новости по теме:

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии к новости:

Оставить свой комментарий:

Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Вставка ссылкиВставка защищенной ссылки Картинка Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении:


управление аккаунтом
Профиль пользователя
, вы вошли как гость


Если вы на сайте впервые, то вы можете зарегистрироваться!

Вы забыли пароль?
самые интересные новости
Популярные новости
Материалы данного ресурса принадлежат пользователям и предназначены для расширения кругозора всех желающих
Unix Windows Техника Железо Mobile For Games Сплетни Net
  • Шпаргалки