Меню

Что такое синхронизация реплик



Синхронизация реплик

В Microsoft Access, Диспетчере репликации Microsoft и Объектах репликации и Jet (JRO) можно выбрать один из трех различных методов синхронизации данных:

    Прямая синхронизация является прекрасным решением для случаев, когда реплики непосредственно подключены к локальной сети и находятся в общих сетевых папках. Прямая синхронизация не очень хорошо подходит для удаленной синхронизации с помощью сервера удаленного доступа (RAS) или соединения удаленного доступа. В этом случае следует использовать косвенную синхронизацию или синхронизацию по Интернету.

Если при попытке выполнить прямую синхронизацию с репликой, присутствующей в списке известных реплик, эта реплика не будет найдена, то она будет исключена из набора реплик.

Косвенная синхронизация полезна при работе в автономной среде, например: на переносном компьютере.

Косвенную синхронизацию можно настроить только с помощью Диспетчера репликации (Replication Manager), входящего в комплект средств разработчика Microsoft Office 2002 Developer. После того как косвенная синхронизация будет настроена в Диспетчере репликации, ее можно выполнять с помощью Microsoft Access, Диспетчера репликации или JRO.

  • Синхронизация по Интернету представляет собой удобный способ синхронизации реплик в тех автономных средах, которые имеют доступ к Интернету.
  • Для настройки синхронизации по Интернету нужно использовать Диспетчер репликации (Replication Manager), который входит в комплект средств разработчика Microsoft Office 2002 Developer.

    Чтобы синхронизировать реплику с другой репликой в наборе реплик базы данных:

    1. Откройте реплику, которую нужно синхронизировать. Это может быть основная, обычная или частичная реплика.
    2. Выберите команду Сервис, Репликация, Синхронизация (Tools, Replication, Synchronize Now). Появится диалоговое окно, представленное на рис. 18.18.

    Рис. 18.18. Диалоговое окно Синхронизация базы данных

    1. Введите путь и имя файла элемента набора реплик, который требуется синхронизировать с текущей репликой. Это может быть основная, обычная или частичная реплика.
    2. Если текущую реплику нужно сделать основной, установите флажок Сделать основной репликой » « (Make ‘ ‘ the Design Master). (Этот режим недоступен в том случае, когда одна или обе синхронизируемые реплики являются частичными репликами и когда обе синхронизируемые реплики являются обычными репликами — не основными).
    3. Нажмите кнопку ОК.
    4. Отобразится сообщение с требованием подтвердить закрытие базы данных для выполнения синхронизации. Чтобы выполнить синхронизацию, нажмите кнопку Да (Yes).

    В результате синхронизации могут возникать конфликты. Устранение конфликтов выполняется с помощью специальной программы Просмотр конфликтов (Conflict Viewer). Чтобы ее запустить, откройте базу данных, которую требуется проверить на наличие конфликтов, и нажмите кнопку Да (Yes) в окне с сообщением о наличии конфликтов и с предложением их устранить или выберите команду Сервис, Репликация, Устранить конфликты (Tools, Replication, Resolve Conflicts). Если конфликтов в реплике нет, программа Просмотр конфликтов не запускается, сообщение о наличии конфликтов при открытии реплики тоже не отображается. Сведения о причинах возникновения конфликтов и об использовании программы Просмотр конфликтов находятся в справочной системе Access 2002.

    Источник

    Что такое синхронизация реплик

    DPM поддерживает два метода синхронизации реплик: добавочную синхронизацию и синхронизацию с проверкой согласованности. Добавочная синхронизация (также называемая просто синхронизацией) передает изменения защищенных данных с защищенного компьютера на сервер DPM и применяет их к реплике. Синхронизация с проверкой согласованности передает изменения данных с защищенного компьютера на сервер DPM, а также выполняет поблочную проверку, чтобы гарантировать, что все данные реплики согласованы с защищенными данными.

    Ручная синхронизация реплики может потребоваться в следующих случаях.

      Реплику можно синхронизировать вручную перед созданием точки восстановления, чтобы гарантировать получение самой последней точки восстановления. Для этой цели используется добавочная синхронизация.

    Проверку согласованности необходимо выполнить вручную, если реплика становится несогласованной по причине переполнения журнала изменений или незапланированного отключения защищенного компьютера. Все задания синхронизации и создания точки восстановления завершатся с ошибкой, пока не будет обеспечена согласованность реплики путем выполнения проверки согласованности.

    При создании реплики вручную с ленты или другого съемного носителя, а не по сети, необходимо выполнить проверку согласованности перед запуском защиты данных.

    Необходимо вручную синхронизировать реплику, если в конфигурацию защищенного компьютера вносятся изменения, подобные следующим.

      Добавление или удаление элементов группы хранения

    Изменение расположения файлов защищенных элементов в защищенном компьютере

    Дополнительные сведения о методах синхронизации см. в разделе Что такое синхронизация?.

    Синхронизация реплики вручную

    В консоли администрирования DPM на панели навигации выберите Защита.

    На панели отображения выберите реплику, которую нужно синхронизировать.

    На панели Действия выберите Создать точку восстановления на диске.

    В диалоговом окне Создать точку восстановления выберите либо Создать точку восстановления после синхронизации, либо Только синхронизировать. При выборе параметра Только синхронизировать передаются и применяются к реплике только изменения данных, выполненные со времени последней синхронизации.

    Источник

    Что такое «Репликация баз данных»?

    Что такое репликация? Это средство организации работы одного или нескольких пользователей с одним и тем же документом, базой данных или другими-файлами на разных компьютерах независимо, без одновременного доступа к файлам, но когда требуется поддерживать некоторую общую версию изменяемых файлов, содержащую в себе все последние исправления, сделанные независимо. Более конкретно, репликация — это процесс создания копий файлов, между которыми может осуществляться обмен обновляемыми данными или объектами. Такие копии называются репликами, а такой обмен — синхронизацией .

    Когда нужна репликация? Microsoft приводит два примера необходимости в такой организации работы.

    • Вы — агент по продажам и совершаете поездки для посещения клиентов. Перед поездкой вам нужно просмотреть последние заказы и маркетинговые тенденции клиентов, которых вы собираетесь посетить. Эта информация хранится в базах данных о клиентах и заказах вашей компании. Вы загружаете данные о клиентах на свой переносной компьютер. Во время посещения клиента вы обновляете загруженную информацию о клиенте, например: номера телефонов, адреса E-mail и прочую персональную информацию о клиенте на вашем переносном компьютере, а также вносите туда информацию о новых заказах. Однако вам необходимо закончить работу с заказами как можно быстрее. В конце дня вы подключаетесь по Интернету к сети вашей компании через защищенное удаленное соединение и обновляете базы данных о клиентах и заказах. Конфликты данных автоматически разрешаются благодаря имеющимся бизнес-процедурам. После этого вы печатаете и отправляете клиенту по факсу отчет о принятии заказа или отправляете снимок отчета по E-mail, который клиент может просмотреть с помощью программы Просмотр снимков (Snapshot Viewer).
    • Вы — разработчик программного обеспечения и хотите закончить работу с приложением вашей компании, отслеживающим статистику об обнаружении и исправлении ошибок в проекте, дома, где нет необходимого или защищенного доступа к корпоративной сети. Вы забираете данные только о ваших ошибках, помещая их на свой переносной компьютер, и отключаете его от корпоративной сети. Затем приходите домой и работаете с имеющимися данными, изменяя поля статуса ошибки и прочие поля с информацией об ошибке. На следующий день* вы подключаете свой переносной компьютер к корпоративной сети и легко син-* хронизируете свои изменения с приложением вашей компании, отслеживающим; статистику ошибок в проекте.

    Существует несколько средств репликации баз данных, проектов Access и других файлов.

    • Портфельная репликация средство операционной системы Microsoft Windows. Оно позволяет осуществлять репликацию файлов многих типов, в том числе баз данных Access (файлов MDB), исключая проекты Access (файлы ADP).
    • Репликация баз данных и проектов средствами Access — встроенные средства Microsoft Access. Они предназначены для репликации баз данных и проектов Access.
    • Репликация с помощью Диспетчера репликации Microsoft полнофункциональное средство управления репликами, планирования синхронизации и просмотра элементов набора реплик. Диспетчер репликации входит в комплект средств разработчика Microsoft Office 2002 Developer Edition. Описание Диспетчера репликации (Replication Manager) можно найти в документации этого комплекта.
    • Репликация файлов на сервере Web средство сервера Web фирмы Microsoft. Оно позволяет работать с файлами, сохраненными на узле Web, в автономном режиме — без подключения к серверу.
    • Программная репликация с помощью интерфейсов DАО и JRO. Создание и управление репликами баз данных Access может осуществляться программно — в процедурах на VBA. Разработчики приложений Access могут обеспечить автоматическую синхронизацию реплик и прочие действия, связанные с репликацией, используя специальные свойства и методы объектов из библиотек VBA: Объекты репликации и Jet (JRO) для репликации баз данных Access 2000 и выше и Объекты доступа к данным (DАО) для репликации баз данных более ранних версий — Access 95 и 97.

    Репликация включает следующие действия:

    • выбор средства репликации;
    • создание реплик;
    • синхронизация реплик;
    • управление репликами.

    Способ выполнения перечисленных действий зависит от выбранного средства репликации. Мы рассмотрим основные вопросы, касающиеся использования перечисленных средств репликации, но не будем касаться темы программирования. Дополнительную информацию о репликации можно найти в справочной системе Access 2002.

    Источник

    Что такое синхронизация реплик

    Синхронизация — это процесс, с помощью которого Data Protection Manager (DPM) передает изменения данных с защищенного компьютера на сервер DPM, а затем применяет их к реплике защищенных данных. DPM использует синхронизацию для поддержания синхронности реплик с данными на защищенных компьютерах.

    Частота синхронизации

    Интервал синхронизации может составлять от 15 минут до 24 часов. Можно также запускать синхронизацию только перед созданием точки восстановления. При защите данных, которые часто изменяются в течение дня, может потребоваться синхронизировать их каждые 15 минут. При защите данных, которые изменяются реже, можно запланировать меньшее число точек восстановления и синхронизировать данные только перед созданием каждой из них. Дополнительные сведения см. в разделе Как изменить параметры защиты.

    Читайте также:  Синхронизировать iphone когда удалил музыку

    Режимы синхронизации

    DPM поддерживает следующие методы синхронизации реплики.

    Синхронизация с проверкой согласованности

    Добавочная синхронизация (также называемая просто синхронизацией) передает изменения данных с защищенного компьютера на сервер DPM и применяет их к реплике. При создании группы защиты можно указать расписание синхронизации или использовать расписание по умолчанию. В целом, добавочную синхронизацию можно использовать для поддержания согласованности реплики со своими источниками данных. Этот метод быстрее и экономичнее, чем проверка согласованности, поскольку в нем применяется фильтр DPM для определения измененных блоков.

    Синхронизация с проверкой согласованности (также называемая просто проверкой согласованности) передает изменения данных с защищенного компьютера на сервер DPM, а также выполняет поблочную проверку, чтобы гарантировать, что все данные реплики согласованы с защищаемыми данными. Эта процедура медленнее синхронизации, поскольку требуется сравнить все данные реплики с оригиналом, а не просто применить изменения данных к реплике.

    Проверка согласованности может потребоваться в случае, когда DPM не может отследить изменения в защищенном источнике данных. Это может произойти, если для журнала изменений не хватило места на диске или защищенный компьютер был неожиданно выключен во время синхронизации. Снижение производительности как защищенного компьютера, так и сервера DPM при проверке согласованности зависит от загрузки сети, производительности ЦП и временных параметров. Если проверка согласованности должна выполняться ежедневно, следует планировать ее на период с низкой загрузкой сети.

    DPM автоматически запускает проверку согласованности в качестве ежедневного задания, если выбран параметр автоматического выполнения проверки согласованности в случаях, когда реплика не согласована или запланирована ежедневная проверка согласованности для группы защиты. DPM также инициирует проверку согласованности, если создать группу защиты, остановить защиту этой группы, указав параметр «Сохранить данные», а затем вновь включить защиту этих данных.

    Поскольку проверка согласованности повышает нагрузку как на сервер DPM, так и на защищенный компьютер, выполнять ее вручную следует только при необходимости восстановить согласованность реплики с источниками данных.

    Примечание
    DPM формирует предупреждение, если журналу изменений не хватило места на диске или защищенный компьютер был неожиданно выключен во время синхронизации. Это предупреждение означает, что администратор должен выполнить проверку согласованности.

    Журнал изменений

    Журнал изменений — это функция Windows, позволяющая отслеживать изменения на томах NTFS, включая добавление, удаление и изменение файлов.

    Журнал изменений хранится на томе в виде разреженного файла. При необходимости место на диске, выделенное для журнала изменений, можно увеличить, но не уменьшить. DPM использует журнал изменений для определения набора файлов, измененных со времени выполнения последней синхронизации, при резервном копировании файловых серверов или клиентских компьютеров.

    Источник

    В чём отличие репликации и синхронизации, применительно к базам данных?

    В чём отличие репликации и односторонней синхронизации, применительно к базам данных? Вот то, что я нашла по поводу репликации:

    Репликация (от лат. replico -повторяю) — это тиражирование изменений данных с главного сервера БД на одном или нескольких зависимых серверах. Главный сервер будем называть мастером, а зависимые — репликами.

    Односторонняя синхронизация. Содержимое одной базы (master) копируется в другую базу (slave). В MySQL синхронизация баз данных на разных серверах используется для репликации таблиц, создания тестовых и резервных баз, бэкапа MySQL и т.д

    По этим определениям похоже, что эти понятия значат одно и то же.

    1 ответ 1

    Синхронизация данных — ликвидация различий между двумя копиями данных. Предполагается, что ранее эти копии были одинаковы, а затем одна из них, либо обе были независимо изменены.

    Репликация — это процесс, под которым понимается копирование данных из одного источника на другой (или на множество других) и наоборот.

    В контексте данного конкретного примера — это одно и то же. В более широком смысле — эти понятия означают разные процессы.

    UPD

    Синхронизация — это цель. Репликация — способ ее достижения.

    Можно произвести синхронизацию без репликации. Надуманный пример: необходимо в двух БД синхронизировать таблицу, содержащую числа от 1 до 100. Репликация тут применима, но можно вполне обойтись и без нее.

    Можно использовать репликацию, целью которой не будет синхронизация данных. Например на табличке висит триггер, умножающий каждое INSERT’нутое поле на два. Репликация будет — синхронизация не очень.

    Источник

    Что такое синхронизация в смартфоне и как она работает?

    Что это такое?

    Синхронизация это возможность смартфона сохранять и резервировать данные пользователя. Эта функция работает незаметно, но несмотря на это поможет синхронизировать все ваши данные при сбросе смартфона или при покупке нового. Достаточно будет лишь подключиться к сети Wi-Fi или Интернет, войти в аккаунт и скачать все данные.

    Как включить и настроить

    Для начала войдите подключитесь к сети и войдите в свой аккаунт Google. После этого перейдите в настройки -> Синхронизация -> Выберите пункт «Google» и проставьте нужные галочки.

    Другие сервисы синхронизации

    Google не единственная компания, которая придумала синхронизацию. Xiaomi также сделала это. для этого нужно перейти в настройки -> Синхронизация и нажать на «Mi Cloud». Ниже можно выбрать, что синхронизировать.

    Облака — альтернатива синхронизации

    Облака это место, в котором можно хранить данные. Единственная их проблема, что данные приходится сохранять вручную. Лишь некоторые позволяют делать синхронизацию, и то не со всеми данными (чаще всего это только фотографии и видео). Самыми популярными облаками являются Яндекс.Диск и облако Mail.ru. На Яндексе бесплатное место 20 ГБ, на mail.ru 100 ГБ.

    Синхронизация между смартфоном и ПК.

    Самый простой способ синхронизировать ваш смартфон с компьютером — USB. Для этого нужно подключить смартфон, в настройках (на смартфоне) поставить передачу данных и перенести нужные файлы.

    Передача через FTP

    FTP это возможность передачи данных через сеть Wi-Fi. Выполняется она очень просто. Нужно установить приложение, которое поддерживает подключение через FTP. Я установил приложение под названием FTP сервер . Чтобы установить подключение, нужно просто нажать на кнопку включения. После этого перейдите на ПК в папку «Этот компьютер» и наберите в строке поиска, то что вам выдало приложение. После этого вы сможете получить данные

    Обратите внимание! Для успешной передачи данных вы должны быть подключены к одной сети Wi-Fi, так как сервер локальный.

    Если тебе понравилась статья, обязательно подпишись и поставь лайк. Остались вопросы? Смело спрашивайте о них в комментариях – обязательно отвечу 🙂

    Источник

    Путеводитель по репликации баз данных

    Повторяться, но каждый раз по-новому – разве не это есть искусство?

    Станислав Ежи Лец, из книги «Непричёсанные мысли»

    Словарь определяет репликацию как процесс поддержания двух (или более) наборов данных в согласованном состоянии. Что такое «согласованное состояние наборов данных» – отдельный большой вопрос, поэтому переформулируем определение проще: процесс изменения одного набора данных, называемого репликой, в ответ на изменения другого набора данных, называемого основным. Совсем не обязательно наборы при этом будут одинаковыми.

    Поддержка репликации баз данных – одна из важнейших задач администратора: почти у каждой сколько-нибудь важной базы данных есть реплика, а то и не одна.

    Среди задач, решаемых репликацией, можно назвать как минимум

    • поддержку резервной базы данных на случай потери основной;
    • снижение нагрузки на базу за счёт переноса части запросов на реплики;
    • перенос данных в архивные или аналитические системы.

    В этой статье я расскажу о видах репликации и о том, какие задачи решает каждый вид репликации.

    Можно выделить три подхода к репликации:

    • Блочная репликация на уровне системы хранения данных;
    • Физическая репликация на уровне СУБД;
    • Логическая репликация на уровне СУБД.

    Блочная репликация

    При блочной репликации каждая операция записи выполняется не только на основном диске, но и на резервном. Таким образом тому на одном массиве соответствует зеркальный том на другом массиве, с точностью до байта повторяющий основной том:

    К достоинствам такой репликации можно отнести простоту настройки и надёжность. Записывать данные на удалённый диск может либо дисковый массив, либо нечто (устройство или программное обеспечение), стоящее между хостом и диском.

    Дисковые массивы могут быть дополнены опциями, позволяющими включить репликацию. Название опции зависит от производителя массива:

    Производитель Торговая марка
    EMC SRDF (Symmetrix Remote Data Facility)
    IBM Metro Mirror – синхронная репликация
    Global Mirror – асинхронная репликация
    Hitachi TrueCopy
    Hewlett-Packard Continuous Access
    Huawei HyperReplication

    Если дисковый массив не способен реплицировать данные, между хостом и массивом может быть установлен агент, осуществляющей запись на два массива сразу. Агент может быть как отдельным устройством (EMC VPLEX), так и программным компонентом (HPE PeerPersistence, Windows Server Storage Replica, DRBD). В отличие от дискового массива, который может работать только с таким же массивом или, как минимум, с массивом того же производителя, агент может работать с совершенно разными дисковыми устройствами.

    Главное назначение блочной репликации – обеспечение отказоустойчивости. Если база данных потеряна, то можно перезапустить её с использованием зеркального тома.

    Читайте также:  Не работает синхронизация контактов в вайбере

    Блочная репликация хороша своей универсальностью, но за универсальность приходится платить.

    Во-первых, никакой сервер не может работать с зеркальным томом, поскольку его операционная система не может управлять записью на него; с точки зрения наблюдателя данные на зеркальном томе появляются сами собой. В случае аварии (отказ основного сервера или всего ЦОДа, где находится основной сервер) следует остановить репликацию, размонтировать основной том и смонтировать зеркальный том. Как только появится возможность, следует перезапустить репликацию в обратном направлении.

    В случае использования агента все эти действия выполнит агент, что упрощает настройку, но не уменьшает время переключения.

    Во-вторых, сама СУБД на резервном сервере может быть запущена только после монтирования диска. В некоторых операционных системах, например, в Solaris, память под кеш при выделении размечается, и время разметки пропорционально объёму выделяемой памяти, то есть старт экземпляра будет отнюдь не мгновенным. Плюс ко всему кеш после рестарта будет пуст.

    В-третьих, после запуска на резервном сервере СУБД обнаружит, что данные на диске неконсистентны, и нужно потратить значительное время на восстановление с применением журналов повторного выполнения: сначала повторить те транзакции, результаты которых сохранились в журнале, но не успели сохраниться в файлы данных, а потом откатить транзакции, которые к моменту сбоя не успели завершиться.

    Блочная репликация не может использоваться для распределения нагрузки, а для обновления хранилища данных используется похожая схема, когда зеркальный том находится в том же массиве, что и основной. У EMC и HP эта схема называется BCV, только EMC расшифровывает аббревиатуру как Business Continuance Volume, а HP – как Business Copy Volume. У IBM на этот случай нет специальной торговой марки, эта схема так и называется – «mirrored volume».

    В массиве создаются два тома, и операции записи синхронно выполняются на обоих (A). В определённое время зеркало разрывается (B), то есть тома становятся независимыми. Зеркальный том монтируется к серверу, выделенному для обновления хранилища, и на этом сервере поднимается экземпляр базы данных. Экземпляр будет подниматься так же долго, как и при восстановлении с помощью блочной репликации, но это время может быть существенно уменьшено за счёт разрыва зеркала в период минимальной нагрузки. Дело в том, что разрыв зеркала по своим последствиям эквивалентен аварийному завершению СУБД, а время восстановление при аварийном завершении существенно зависит от количества активных транзакций в момент аварии. База данных, предназначенная для выгрузки, доступна как на чтение, так и на запись. Идентификаторы всех блоков, изменённых после разрыва зеркала как на основном, так и на зеркальном томе, сохраняются в специальной области Block Change Tracking – BCT.

    После окончания выгрузки зеркальный том размонтируется (С), зеркало восстанавливается, и через некоторое время зеркальный том вновь догоняет основной и становится его копией.

    Физическая репликация

    Журналы (redo log или write-ahead log) содержат все изменения, которые вносятся в файлы базы данных. Идея физической репликации состоит в том, что изменения из журналов повторно выполняются в другой базе (реплике), и таким образом данные в реплике повторяют данные в основной базе байт-в-байт.

    Возможность использовать журналы базы данных для обновления реплики появилась в релизе Oracle 7.3, который вышел в 1996 году, а уже в релизе Oracle 8i доставка журналов с основной базы в реплику была автоматизирована и получила название DataGuard. Технология оказалась настолько востребованной, что сегодня механизм физической репликации есть практически во всех современных СУБД.

    СУБД Опция репликации
    Oracle Active DataGuard
    IBM DB2 HADR
    Microsoft SQL Server Log shipping/Always On
    PostgreSQL Log shipping/Streaming replication
    MySQL Alibaba physical InnoDB replication

    Опыт показывает, что если использовать сервер только для поддержания реплики в актуальном состоянии, то ему достаточно примерно 10% процессорной мощности сервера, на котором работает основная база.

    Журналы СУБД не предназначены для использования вне этой платформы, их формат не документируется и может меняться без предупреждения. Отсюда совершенно естественное требование, что физическая репликация возможна только между экземплярами одной и той же версии одной той же СУБД. Отсюда же возможные ограничения на операционную систему и архитектуру процессора, которые тоже могут влиять на формат журнала.

    Естественно, никаких ограничений на модели СХД физическая репликация не накладывает. Более того, файлы в базе-реплике могут располагаться совсем по-другому, чем на базе-источнике – надо лишь описать соответствие между томами, на которых лежат эти файлы.

    Oracle DataGuard позволяет удалить часть файлов из базы-реплики – в этом случае изменения в журналах, относящиеся к этим файлам, будут проигнорированы.

    Физическая репликация базы данных имеет множество преимуществ перед репликацией средствами СХД:

    • объём передаваемых данных меньше за счёт того, что передаются только журналы, но не файлы с данными; эксперименты показывают уменьшение трафика в 5-7 раз;
    • переключение на резервную базу происходит значительно быстрее: экземпляр-реплика уже поднят, поэтому при переключении ему нужно лишь откатить активные транзакции; более того, к моменту сбоя кеш реплики уже прогрет;
    • на реплике можно выполнять запросы, сняв тем самым часть нагрузки с основной базы. В частности, реплику можно использовать для создания резервных копий.

    Возможность читать данные с реплики появилась в 2007 году в релизе Oracle 11g – именно на это указывает эпитет «active», добавленный к названию технологии DataGuard. В других СУБД возможность чтения с реплики также есть, но в названии это никак не отражено.

    Запись данных в реплику невозможна, поскольку изменения в неё приходят побайтно, и реплика не может обеспечить конкурентное исполнение своих запросов. Oracle Active DataGuard в последних релизах разрешает запись в реплику, но это не более чем «сахар»: на самом деле изменения выполняются на основной базе, а клиент ждёт, пока они докатятся до реплики.

    В случае повреждения файла в основной базе можно просто скопировать соответствующий файл с реплики (прежде, чем делать такое со своей базой, внимательно изучите руководство администратора!). Файл на реплике может быть не идентичен файлу в основной базе: дело в том, что когда файл расширяется, новые блоки в целях ускорения ничем не заполняются, и их содержимое случайно. База может использовать не всё пространство блока (например, в блоке может оставаться свободное место), но содержимое использованного пространства совпадает с точностью до байта.

    Физическая репликация может быть как синхронной, так и асинхронной. При асинхронной репликации всегда есть некий набор транзакций, которые завершены на основной базе, но ещё не дошли до резервной, и в случае перехода на резервную базу при сбое основной эти транзакции будут потеряны. При синхронной репликации завершение операции commit означает, что все журнальные записи, относящиеся к данной транзакции, переданы на реплику. Важно понимать, что получение репликой журнала не означает применения изменений к данным. При потере основной базы транзакции не будут потеряны, но если приложение пишет данные в основную базу и считывает их из реплики, то у него есть шанс получить старую версию этих данных.

    В PostgreSQL есть возможность сконфигурировать репликацию так, чтобы commit завершался только после применения изменений к данным реплики (опция synchronous_commit = remote_apply ), а в Oracle можно сконфигурировать всю реплику или отдельные сессии, чтобы запросы выполнялись только если реплика не отстаёт от основной базы ( STANDBY_MAX_DATA_DELAY=0 ). Однако всё же лучше проектировать приложение так, чтобы запись в основную базу и чтение из реплик выполнялись в разных модулях.

    При поиске ответа на вопрос, какой режим выбрать, синхронный или асинхронный, нам на помощь приходят маркетологи Oracle. DataGuard предусматривает три режима, каждый из которых максимизирует один из параметров – сохранность данных, производительность, доступность – за счёт остальных:

    • Maximum performance: репликация всегда асинхронная;
    • Maximum protection: репликация синхронная; если реплика не отвечает, commit на основной базе не завершается;
    • Maximum availability: репликация синхронная; если реплика не отвечает, то репликация переключается в асинхронный режим и, как только связь восстанавливается, реплика догоняет основную базу и репликация снова становится синхронной.

    Несмотря на бесспорные преимущества репликации средствами БД над блочной репликацией, администраторы во многих компаниях, особенно со старыми традициями надёжности, до сих пор очень неохотно отказываются от блочной репликации. Причин у этого две.

    Во-первых, в случае репликации средствами дискового массива трафик идёт не по сети передачи данных (LAN), а по сети хранения данных (Storage Area Network). Зачастую в инфраструктурах, построенных давно, SAN гораздо надёжнее и производительнее, чем сеть передачи данных.

    Во-вторых, синхронная репликация средствами СУБД стала надёжной относительно недавно. В Oracle прорыв произошёл в релизе 11g, который вышел в 2007 году, а в других СУБД синхронная репликация появилась ещё позже. Конечно, 10 лет по меркам сферы информационных технологий – срок не такой уж маленький, но когда речь идёт о сохранности данных, некоторые администраторы до сих пор руководствуются принципом «как бы чего не вышло»…

    Логическая репликация

    Все изменения в базе данных происходят в результате вызовов её API – например, в результате выполнения SQL-запросов. Очень заманчивой кажется идея выполнять одну и ту же последовательность запросов на двух разных базах. Для репликации необходимо придерживаться двух правил:

    1. Нельзя начинать транзакцию, пока не завершены все транзакции, которые должны закончиться раньше. Так на рисунке ниже нельзя запускать транзакцию D, пока не завершены транзакции A и B.
    2. Нельзя завершать транзакцию, пока не начаты все транзакции, которые должны закончиться до завершения текущей транзакции. Так на рисунке ниже даже если транзакция B выполнилась мгновенно, завершить её можно только после того, как начнётся транзакция C.
    Читайте также:  Как полностью синхронизировать два айфона

    Репликация команд (statement-based replication) реализована, например, в MySQL. К сожалению, эта простая схема не приводит к появлению идентичных наборов данных – тому есть две причины.

    Во-первых, не все API детерминированы. Например, если в SQL-запросе встречается функция now() или sysdate(), возвращающая текущее время, то на разных серверах она вернёт разный результат – из-за того, что запросы выполняются не одновременно. Кроме того, к различиям могут привести разные состояния триггеров и хранимых функций, разные национальные настройки, влияющие на порядок сортировки, и многое другое.

    Во-вторых, репликацию, основанную на параллельном исполнении команд, невозможно корректно приостановить и перезапустить.

    Если репликация остановлена в момент T1 транзакция B должна быть прервана и откачена. При перезапуске репликации исполнение транзакции B может привести реплику к состоянию, отличному от состояния базы-источника: на источнике транзакция B началась до того, как закончилась транзакция A, а значит, она не видела изменений, сделанных транзакцией A.
    Репликация запросов может быть остановлена и перезапущена только в момент T2, когда в базе нет ни одной активной транзакции. Разумеется, на сколько-нибудь нагруженной промышленной базе таких моментов не бывает.

    Обычно для логической репликации используют детерминированные запросы. Детерминированность запроса обеспечивается двумя свойствами:

    • запрос обновляет (или вставляет, или удаляет) единственную запись, идентифицируя её по первичному (или уникальному) ключу;
    • все параметры запроса явно заданы в самом запросе.

    В отличие от репликации команд (statement-based replication) такой подход называется репликацией записей (row-based replication).

    Предположим, что у нас есть таблица сотрудников со следующими данными:

    ID Name Dept Salary
    3817 Иванов Иван Иванович 36 1800
    2274 Петров Пётр Петрович 36 1600
    4415 Кузнецов Семён Андреевич 41 2100

    Над этой таблицей была выполнена следующая операция:

    Для того, чтобы корректно реплицировать данные, в реплике будут выполнены такие запросы:

    Запросы приводят к тому же результату, что и на исходной базе, но при этом не эквивалентны выполненным запросам.

    База-реплика открыта и доступна не только на чтение, но и на запись. Это позволяет использовать реплику для выполнения части запросов, в том числе для построения отчётов, требующих создания дополнительных таблиц или индексов.

    Важно понимать, что логическая реплика будет эквивалентна исходной базе только в том случае, если в неё не вносится никаких дополнительных изменений. Например, если в примере выше в реплике добавить в 36 отдел Сидорова, то он повышения не получит, а если Иванова перевести из 36 отдела, то он получит повышение, несмотря ни на что.

    Логическая репликация предоставляет ряд возможностей, отсутствующих в других видах репликации:

    • настройка набора реплицируемых данных на уровне таблиц (при физической репликации – на уровне файлов и табличных пространств, при блочной репликации – на уровне томов);
    • построение сложных топологий репликации – например, консолидация нескольких баз в одной или двунаправленная репликация;
    • уменьшение объёма передаваемых данных;
    • репликация между разными версиями СУБД или даже между СУБД разных производителей;
    • обработка данных при репликации, в том числе изменение структуры, обогащение, сохранение истории.

    Есть и недостатки, которые не позволяют логической репликации вытеснить физическую:

    • все реплицируемые данные обязаны иметь первичные ключи;
    • логическая репликация поддерживает не все типы данных – например, возможны проблемы с BLOB’ами.
    • логическая репликация на практике не бывает полностью синхронной: время от получения изменений до их применения слишком велико, чтобы основная база могла ждать;
    • логическая репликация создаёт большую нагрузку на реплику;
    • при переключении приложение должно иметь возможность убедиться, что все изменения с основной базы, применены на реплике – СУБД зачастую сама не может этого определить, так как для неё режимы реплики и основной базы эквивалентны.

    Два последних недостатка существенно ограничивают использование логической реплики как средства отказоустойчивости. Если один запрос в основной базе изменяет сразу много строк, реплика может существенно отставать. А возможность смены ролей требует недюжинных усилий как со стороны разработчиков, так и со стороны администраторов.

    Есть несколько способов реализации логической репликации, и каждый из этих способов реализует одну часть возможностей и не реализует другую:

    • репликация триггерами;
    • использование журналов СУБД;
    • использование программного обеспечения класса CDC (change data capture);
    • прикладная репликация.

    Репликация триггерами

    Триггер – хранимая процедура, которая исполняется автоматически при каком-либо действии по модификации данных. Триггеру, который вызывается при изменении каждой записи, доступны ключ этой записи, а также старые и новые значения полей. При необходимости триггер может сохранять новые значения строк в специальную таблицу, откуда специальный процесс на стороне реплики будет их вычитывать. Объём кода в триггерах велик, поэтому существуют специальное программное обеспечение, генерирующее такие триггеры, например, «Репликация слиянием» (merge replication) – компонент Microsoft SQL Server или Slony-I – отдельный продукт для репликации PostgreSQL.

    Сильные стороны репликации триггерами:

    • независимость от версий основной базы и реплики;
    • широкие возможности преобразования данных.

    Недостатки:

    • нагрузка на основную базу;
    • большая задержка при репликации.

    Использование журналов СУБД

    Сами СУБД также могут предоставлять возможности логической репликации. Источником данных, как и для физической репликации, являются журналы. К информации о побайтовом изменении добавляется также информация об изменённых полях (supplemental logging в Oracle, wal_level = logical в PostgreSQL), а также значение уникального ключа, даже если он не меняется. В результате объём журналов БД увеличивается – по разным оценкам от 10 до 15%.

    Возможности репликации зависят от реализации в конкретной СУБД – если в Oracle можно построить logical standby, то в PostgreSQL или Microsoft SQL Server встроенными средствами платформы можно развернуть сложную систему взаимных подписок и публикаций. Кроме того, СУБД предоставляет встроенные средства мониторинга и управления репликацией.

    К недостаткам данного подхода можно отнести увеличение объёма журналов и возможное увеличение трафика между узлами.

    Использование CDC

    Существует целый класс программного обеспечения, предназначенного для организации логической репликации. Это ПО называется CDC, change data capture. Вот список наиболее известных платформ этого класса:

    • Oracle GoldenGate (компания GoldenGate приобретена в 2009 году);
    • IBM InfoSphere Data Replication (ранее – InfoSphere CDC; ещё ранее – DataMirror Transformation Server, компания DataMirror приобретена в 2007 году);
    • VisionSolutions DoubleTake/MIMIX (ранее – Vision Replicate1);
    • Qlik Data Integration Platform (ранее – Attunity);
    • Informatica PowerExchange CDC;
    • Debezium;
    • StreamSets Data Collector.

    В задачу платформы входит чтение журналов базы данных, преобразование информации, передача информации на реплику и применение. Как и в случае репликации средствами самой СУБД, журнал должен содержать информацию об изменённых полях. Использование дополнительного приложения позволяет «на лету» выполнять сложные преобразования реплицируемых данных и строить достаточно сложные топологии репликации.

    • возможность репликации между разными СУБД, в том числе загрузка данных в отчётные системы;
    • широчайшие возможности обработки и преобразования данных;
    • минимальный трафик между узлами – платформа отсекает ненужные данные и может сжимать трафик;
    • встроенные возможности мониторинга состояния репликации.

    Недостатков не так много:

    • увеличение объёма журналов, как при логической репликации средствами СУБД;
    • новое ПО – сложное в настройке и/или с дорогими лицензиями.

    Именно CDC-платформы традиционно используются для обновления корпоративных хранилищ данных в режиме, близком к реальному времени.

    Прикладная репликация

    Наконец, ещё один способ репликации – формирование векторов изменений непосредственно на стороне клиента. Клиент должен формировать детерминированные запросы, затрагивающие единственную запись. Добиться этого можно, используя специальную библиотеку работы с базой данных, например, Borland Database Engine (BDE) или Hibernate ORM.

    Когда приложение завершает транзакцию, подключаемый модуль Hibernate ORM записывает вектор изменений в очередь и выполняет транзакцию в базе данных. Специальный процесс-репликатор вычитывает векторы из очереди и выполняет транзакции в базе-реплике.
    Этот механизм хорош для обновления отчётных систем. Может он использоваться и для обеспечения отказоустойчивости, но в этом случае в приложении должен быть реализован контроль состояния репликации.

    Традиционно – сильные и слабые стороны данного подхода:

    • возможность репликации между разными СУБД, в том числе загрузка данных в отчётные системы;
    • возможность обработки и преобразования данных, мониторинга состояния и т. д.;
    • минимальный трафик между узлами – платформа отсекает ненужные данные и может сжимать трафик;
    • полная независимость от базы данных – как от формата, так и от внутренних механизмов.

    Достоинства этого способа бесспорны, однако есть два очень серьёзных недостатка:

    • ограничения на архитектуру приложения;
    • огромный объём собственного кода, обеспечивающего репликацию.

    Так что же лучше?

    Однозначного ответа на этот вопрос, как и на многие другие, не существует. Но надеюсь, что таблица ниже поможет сделать правильный выбор для каждой конкретной задачи:

    Источник