Как читать бинлог MySQL

Я хочу написать сервис для хвоста журнала bin MySQL, чтобы получать уведомления об изменениях базы данных.

Есть ли библиотека с открытым исходным кодом, которая читает и анализирует журнал bin MySQL в формате ROW?

5 ответов

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

Бинарный журнал сервера состоит из файлов, содержащих "события", которые описывают изменения содержимого базы данных. Сервер записывает эти файлы в двоичном формате. Чтобы отобразить их содержимое в текстовом формате, используйте утилиту mysqlbinlog. Вы также можете использовать mysqlbinlog для отображения содержимого файлов журналов ретрансляции, записанных подчиненным сервером в настройке репликации, поскольку журналы ретрансляции имеют тот же формат, что и двоичные журналы.

Источник: https://dev.mysql.com/doc/refman/5.6/en/mysqlbinlog.html

Я использую этот: https://github.com/alibaba/canal.

Он написан на Java, и после нескольких изменений в файле conf вы готовы к работе, внутренние детали позаботятся о вас.

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

Два проекта, написанные на java из github: mysql-binlog-connector-java и mysql-binlog-connector-java , могут помочь вам разобрать бинарный журнал mysql.

Вы можете использовать следующую команду для чтения файла bin-log:

read -p "Enter the Log File Name : " logfilename; mysqlbinlog $logfilename | grep -i ^use | sort | uniq -c | sort -rn

Вы можете использовать https://github.com/monothorn/mysql-parser Он основан на sqlparse в python. Поскольку у вас включен формат строки binlog, вы можете оформить заказ https://github.com/noplay/python-mysql-replication

Другие вопросы по тегам