Вы можете регулярно проверять, что происходят изменения данных, хотя это может быть сложным в зависимости от вашего приложения.
Если у вас есть какая-либо форма таблицы аудита, которая очень регулярно обновляется (т.е. наш основной продукт имеет базовую таблицу аудита, в которой перечислены все действия, которые приводят к обновлению или удалению данных), тогда вы можете запросить эту таблицу на оба сервера и убедитесь, что результат, который вы получите, тот же. Что-то вроде:
SELECT CHECKSUM_AGG(*)
FROM audit_base
WHERE action_timestamp BETWEEN <time1> AND BETWEEN <time2>
где и являются круглыми значениями, позволяющими различать задержки при обращении к базам данных. Например, если вы проверяете десять часов назад, вы можете проверять элементы с самого начала в последний час до начала этого часа. Теперь у вас есть два небольших значения, которые вы можете передать где-нибудь и сравнить.Если они отличаются друг от друга, то что-то, скорее всего, пошло не так в процессе репликации - что бы вы ни делали, проверка/сравнение посылают вам почту и SMS, чтобы вы знали, чтобы проверить и исправить любую проблему, требующую внимания.
С помощью SELECT CHECKSUM_AGG (*) объем данных для каждой таблицы очень мал, поэтому использование пропускной способности проверок будет незначительным. Вам просто нужно убедиться, что ваши чеки не слишком дороги в нагрузке, которые применяются к серверам, и что вы не проверяете данные, которые могут быть частью открытых транзакций репликации, поэтому в этот момент можно ожидать, что они будут отличаться (следовательно, проверка контрольный след несколько минут назад во времени, а не сейчас в моем примере), иначе вы получите слишком много ложных тревог.
В зависимости от структуры вашей базы данных вышеуказанное может быть непрактичным. Для таблиц, которые не являются вставками (без обновлений или удалений) в течение таймфрейма вашего чека (например, контрольный трюк, как указано выше), разработка того, что можно безопасно сравнить, избегая ложных тревог, скорее всего, будет сложной и дорогостоящей, если на самом деле невозможно сделать надежно.
Вы можете изготовить таблицу с подвижной вставкой только в том случае, если у вас ее еще нет, имея небольшую таблицу (содержащую только индексированную временную колонку), к которой вы добавляете одну строку регулярно - эти данные не имеют никакой цели, кроме как существуют, чтобы вы могли проверять, что обновления в таблице получают репликацию. Вы можете удалить данные старше вашего окна проверки, поэтому таблица не должна увеличиваться. Только тестирование одной таблицы не доказывает, что все остальные таблицы реплицируются (или любые другие таблицы в этом отношении), но поиск ошибки в этой таблице будет хорошей проверкой «canery» (если эта таблица не обновляется в реплике, то остальные, вероятно, тоже не).
Этот тип проверки имеет то преимущество, что он не зависит от процесса репликации - вы не ожидаете, что процесс репликации будет записывать исключения в журналах, вместо этого вы проактивно проверяете некоторые фактические данные.
У вас есть информация о том, что на самом деле представляет собой провал? Часто, когда резервное копирование работает в ночное время, пропускная способность предотвращает репликацию немедленно. Это нормально, пока он догоняет, поэтому нам не нужно предупреждение. Я думаю, что это балансирующий акт ... – Damovisa
Честно говоря, мы тоже этого не поняли. Иногда срабатывает предупреждение, но в конце концов репликация завершится успешно. И в основном у нас есть ложные предупреждения, когда наши снимки генерируются (мы делаем это еженедельно). Когда конкретный агент объединения запускается и выходит из строя, предупреждение является истинным и имеет смысл (обычно не удается подключиться к проблемам типа издателя). –