Как читать бинлог 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