SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Заполнение журнала транзакций REPLICATION (Механизм очистки журнала транзакций)
Заполнение журнала транзакций REPLICATION [сообщение #6216] Fri, 05 September 2025 20:00 Переход к следующему сообщению
ch0s3n0n3 в настоящее время не в онлайне  ch0s3n0n3
Сообщений: 1
Зарегистрирован: September 2025
Junior Member
Всем доброго времени суток

Столкнулся со следующей проблемой - легла база из-за переполненного журнала транзакций REPLICATION, в связи с чем пришлось восстанавливать базу из бэкапа
На БД включена репликация, а так же из нее стягиваются данные через debezium в Clickhouse. Два дня назад в ходе работ тушился сетевой интерфейс на хосте с MSSQL и судя по датам записей в репликации и клике - в это же время перестали поступать транзакции в реплику и клик
CDC retention period равен 8 часам
Я правильно понимаю, что в независимости от ретеншн периода транзакции будут храниться в журнале до тех пор, пока подписчики их не «скушают»? Соответственно эти два дня простоя репликации и дебезиума транзакции накапливались в журнале, пока не переполнили его?
Просьба продвинутым экспертам MSSQL объяснить механизм работы всего этого чуда. Заранее благодарю Smile
Re: Заполнение журнала транзакций REPLICATION [сообщение #6220 является ответом на сообщение #6216] Sun, 07 September 2025 11:55 Переход к предыдущему сообщению
BlackEric в настоящее время не в онлайне  BlackEric
Сообщений: 393
Зарегистрирован: June 2022
Senior Member
Когда два дня «упал» сетевой интерфейс, лог-ридер (и Debezium) остановились - никто не съедал LSN.
При этом, если лог-бэкапы либо не делались, либо они не могли откатить эти неподтверждённые сегменты, журнал тупо рос до переполнения.

Да, вы правильно понимаете: записи лога живут до тех пор, пока ВСЕ подписчики (репликация, Capture Agent и пр.) не «проглотят» соответствующие LSN, и одновременно вы не выполните бэкап лога, позволяющий усечь старые записи.
CDC retention ни в коей мере не освобождает место в транзакционном логе — это просто срок жизни строк в таблицах.
Чтобы избежать повторения настройте регулярные бэкапы лога (каждые, скажем, 15–30 мин).
Мониторьте статус Log-Reader Agent/Capture Agent и вовремя реагируйте на их падения.
При долгих простоях репликации/CDC можно временно приостановить её, но логовые бэкапы всё равно должны идти, чтобы старые записи очищались.
При необходимости - увеличьте retention CDC-таблиц, но главное - обеспечить беспрерывное потребление лога и бэкапы лога.
Предыдущая тема: Найти разницу между поступлением и реализацией в таблице
Переход к форуму:
  


Текущее время: Sun Sep 07 21:34:13 GMT+3 2025

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