Дебезиум не удался - не может реплицироваться, потому что мастер удалил необходимые двоичные журналы - PullRequest
0 голосов
/ 28 июня 2019

Я использую debezium-kafka для записи изменений в MySQL. Для MySQL я использую AWS RDS. У меня есть конфигурация master и slave (read-replica) с включенным GTID. Я связал дебезий с РАБОМ.

Но после нескольких дней работы дебезиум вышел из строя с ошибкой:

org.apache.kafka.connect.errors.ConnectException: Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup. Consider increasing the master's binary log expiration period. To find the missing transactions, see the master's error log or the manual for GTID_SUBTRACT. Error code: 1236; SQLSTATE: HY000.
tat io.debezium.connector.mysql.AbstractReader.wrap(AbstractReader.java:230)
tat io.debezium.connector.mysql.AbstractReader.failed(AbstractReader.java:197)
tat io.debezium.connector.mysql.BinlogReader$ReaderThreadLifecycleListener.onCommunicationFailure(BinlogReader.java:1018)
tat com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:950)
tat com.github.shyiko.mysql.binlog.BinaryLogClient.connect(BinaryLogClient.java:580)
tat com.github.shyiko.mysql.binlog.BinaryLogClient$7.run(BinaryLogClient.java:825)
tat java.base/java.lang.Thread.run(Thread.java:834)
aused by: com.github.shyiko.mysql.binlog.network.ServerException: Cannot replicate because the master purged required binary logs. Replicate the missing transactions from elsewhere, or provision a new slave from backup. Consider increasing the master's binary log expiration period. To find the missing transactions, see the master's error log or the manual for GTID_SUBTRACT.
tat com.github.shyiko.mysql.binlog.BinaryLogClient.listenForEventPackets(BinaryLogClient.java:914)
t... 3 more

Я не могу выяснить, что является причиной проблемы, и MYSQL master и slave исправны, оба работают и работают. Тогда почему дебезиум не удался?

1 Ответ

0 голосов
/ 07 июля 2019

ОК. Я нашел решение, я использую Amazon RDS MySQL. Amazon RDS обычно удаляет двоичный журнал как можно скорее. Из-за чего GTID очищался перед потреблением Debezium.

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

call mysql.rds_set_configuration('binlog retention hours', 24);

Ссылка: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_LogAccess.Concepts.MySQL.html

...