Известия ТулГУ. Технические науки. 2013. Вып. 9. Ч.2
УДК 004.658.6
ПОВЫШЕНИЕ НАДЕЖНОСТИ И ПРОИЗВОДИТЕЛЬНОСТИ БАЗ
ДАННЫХ ПРИ ПОМОЩИ РЕПЛИКАЦИЙ
А.Н. Ивутин, И.С. Терехин
Описаны типы репликации (Синхронная репликация, Асинхронная репликация).
Рассмотрены задачи, которые может решить метод репликации базы данных, а
также недостатки использования метода. Обозначены проблемы, когда такой подход необходим.
Ключевые слова: репликация, база данных, производительность.
Ежегодно все больше сфер человеческой деятельности переходят на
электронный вариант хранения данных. Для этого используются разнооб-
разные системы управления баз данными (СУБД), такие как MSSQL,
Oracle, MySQL и другие. Скорость работы современных реляционных
ЭВМ и программная обработка данных
СУБД позволяет изменять и считывать тысячи строк информации в секун-
ду. Базы данных намного упростили процесс ведения учета бухгалтерии,
поиск информации, предоставление услуг посредством сети интернет и т.д.
Возможно зайти на портал государственных услуг и заказать справ-
ку, записаться на прием к врачу или узнать количество набранных баллов
после сдачи единого государственного экзамена. В современном мире для
всего этого не требуется выходить из дома, стоять в очередях, пропуская
обеденный перерыв.
Такие возможности доступны благодаря беспрерывно работающим
удаленным системам. И в данных ситуациях совершенно неприемлемо, ес-
ли по техническим причинам нельзя получить необходимую информацию.
Чаще всего в таких случаях дают сбой именно базы данных. Для этого сле-
дует сделать систему отказоустойчивой.
Один из способов разработки отказоустойчивых баз данных - соз-
дание их реплик.
Репликация (от лат. replico - повторяю) - это процесс, под которым
понимается копирование данных из одного источника на другой (или на
множество других), и наоборот. При репликации изменения, сделанные в
одной копии объекта, могут быть распространены в другие копии.
Репликация в базах данных — это тиражирование изменений дан-
ных с главного сервера баз данных на одном или нескольких зависимых
серверах. Главный сервер при этом будет называться мастером, а зависи-
мые сервера - репликами.
Репликация может быть синхронной и асинхронной:
- Синхронной репликация называется, при обновлении данных сер-
вера и всех других реплик того же фрагмента в одной и той же транзакции.
Логически это означает, что существует лишь одна версия данных. В
большинстве продуктов синхронная репликация реализуется с помощью
триггерных процедур. Но синхронная репликация имеет тот недостаток,
что она создаёт дополнительную нагрузку при выполнении всех транзак-
ций, в которых обновляются какие-либо реплики (кроме того, могут воз-
никать проблемы, связанные с доступностью данных).
- Асинхронной репликация называется, в случае обновления дан-
ных одной реплики, которые распространяется на другие спустя некоторое
время, а не в той же транзакции. Таким образом, при асинхронной репли-
кации вводится задержка, или время ожидания, в течение которого отдель-
ные реплики могут быть фактически неидентичными. В большинстве про-
дуктов асинхронная репликация реализуется посредством чтения журнала
транзакций или постоянной очереди тех обновлений, которые подлежат
распространению. Преимущество асинхронной репликации состоит в том,
что дополнительные издержки репликации не связаны с транзакциями об-
новлений, которое имеет важное значение для функционирования, и
предъявлять высокие требования к производительности. К недостаткам
141
Известия ТулГУ. Технические науки. 2013. Вып. 9. Ч.2
этой схемы относится то, что данные на репликах не всегда идентичны.
Изменения данных, происходящие на мастере, повторяются на реп-
ликах (но не наоборот). Поэтому запросы на изменение данных (добавле-
ние, изменение, удаление и т. д.) выполняются только на мастере, а запро-
сы на чтение данных, могут выполняться как на репликах, так и на масте-
ре. Процесс зеркалирования на одной из реплик не влияет на работу дру-
гих баз данных, и практически не влияет на работу мастера.
Репликация происходит при изменении журнала, который создается
или изменяется при изменении данных на основном сервере базы данных.
В журнал сохраняются все запросы к базе данных, приводящие к измене-
ниям данных в ней. При этом запросы сохраняются не в явном виде, по-
этому разобрать их вручную достаточно сложно и, как правило, задача ре-
шается при помощи специальных программных утилит. Важной особенно-
стью является то, что при репликации передаются не сами измененные
данные, а только кодированные запросы, вызывающие изменения.
После изменения, журнал, передается базам данных реплик, начи-
ная с позиции n+1, где n - последняя выполненная позиция из бинарного
лога. После этого журнал декодируется, и выполняются описанные в нем
действия.
Таким образом, при репликации содержимое базы данных дублиру-
ется на одном или нескольких серверах как показано на рисунке.
Создание реплик решает сразу несколько задач по повышению на-
дежности и производительности системы.
- Производительность и масштабируемость. Если один сервер не
справляется с нагрузкой, создаваемой одновременными операциями чте-
ния и записи в базу данных. Запросы на чтение данных можно перенапра-
вить на реплики, при этом выгода такой системы будет весомей, если на
одну операцию записи происходит несколько операций чтения.
- Отказоустойчивость. При отказе одной из реплик, запросы чте-
ния можно распределить по другим репликам или перевести все запросы
на мастер, если была лишь одна реплика. В случае отказа мастера, запросы
на запись можно перевести на одну из реплик, а после того как мастер бу-
дет восстановлен, его можно сделать репликой.
- Резервирование данных. При использовании реплики мы всегда
уверены что есть, «страховочная» база данных, практически идентично
повторяющая основную.
- Сложные вычисления. Сложные и медленные запросы к базе
данных можно выполнять на отдельной реплике, не замедляя работу всей
системы.
- Модернизация оборудования. При необходимости «остановить»
один из серверов, для установки, например дополнительной оперативной
памяти, не нарушится работа системы в целом.
142
ЭВМ и программная обработка данных
Репликация базы данных
- Возможность использования различных структур таблиц на
разных серверах. К примеру, на реплике базы данных, для сложных вы-
числений, можно выставить альтернативный набор индексов или изменить
тип таблицы.
У рассматриваемого процесса репликации есть также ряд недостат-
ков.
- Не точная копия в единицу времени. При асинхронной репли-
кации существует расхождение данных мастера от реплик. Так как при до-
бавлении записи в БД мастера производится обновление журнала, который
впоследствии передается репликам, декодируется и выполняется. На прак-
тике расхождение в базах данных может доходить до двух секунд.
- Проблемы с random значением. Если в запросе использовалась
функция random с неопределенным значением, то на реплике это значение
может быть отличным от базы данных на мастере.
При создании инфраструктуры базы данных на основе метода реп-
ликации, не критичен отказ главного сервера, работоспособность системы
можно восстановить за несколько минут в ручную, или создать контрол-
лер, который будет выполнять эти действия автоматически, сделав одну из
реплик главным сервером и заменив настройки остальных реплик таким
образом, чтобы они забирали журнал с нового, главного сервера, баз дан-
ных.
Метод можно улучшить при помощи создания отдельного контро-
лера, через который будут проходить все запросы к базам данных. И имен-
но он будет следить за распределением нагрузки по доступности реплик. В
итоге, не будет главного сервера базы данных (мастер), а запросы на вы-
борку данных будут распределяться только по тем репликам, у которых
данные для запроса актуальны.
Список литературы
1. Каратыгин, С., Тихонов, А.; Долголаптев, В. Базы данных. М.:
ABF, 1995. 352 c.
143
Известия ТулГУ. Технические науки. 2013. Вып. 9. Ч.2
2. Дюбуа, П. MySQL. М.: Вильямс, 2001. 236 c.
3. Энсор, Д., Стивенсон, Й. Oracle. Проектирования баз данных. Ки-
ев: BHV, 2000. 560 c.
Ивутин Алексей Николаевич, канд. техн. наук, доц., alexey.ivutin@gmail.com,
Россия, Тула, Тульский государственный университет,
Терехин Илья Сергеевич, аспирант, terehinis@gmail.com, Россия, Тула, Тульский
государственный университет
IMPROVING THE RELIABILITY AND PERFORMANCE OF DATABASES VIA
REPLICATION
A.N. Ivutin, I.S. Terehin
Describes the types of replication (synchronic replication, asynchrony replication).
Consider problems that can be solved by replicating the database as well as disadvantages of
the method. Identified problems, when such an approach is needed
Key words: replication, the database performance.
Ivutin Alexey Nicolaevich, candidate of technical science, docent, alex-
ey.ivutin@gmail.com, Russia, Tula, Tula State University,
Terehin Ilia Sergeevich, postgraduate, terehinis@gmail.com, Russia, Tula, Tula
State University