mbinlogmq: промежуточное ПО на основе MySQL binlog протокола
mbinlogmq — это промежуточное программное обеспечение, разработанное на языке C, которое использует протокол MySQL binlog. Оно в реальном времени получает журналы MySQL binlog и отправляет данные изменений и SQL-запросы в RabbitMQ. Промежуточное ПО использует механизмы мониторинга и проверки для обеспечения 100% доставки данных в RMQ даже в случае сбоя системы.
Сначала установите необходимые программы: cURL
, mysql
и rabbitmq
. После установки запомните пути установки.
git clone https://gitee.com/josinli/mbinlogmq.git
CMakeLists.txt
, указав следующие строки с путями вашей системы:set(MYSQL_INCLUDE /usr/local/mysql/include) # Путь к заголовкам MySQL в вашей системе
set(MYSQL_LIBRARY_DIR /usr/local/mysql/lib) # Путь к библиотекам MySQL в вашей системе
set(CURL_DIR /usr/local/Cellar/curl/7.58.0) # Путь установки curl в вашей системе
mkdir build
cd build
cmake .. && make && sudo make install
/etc/mbinlogmq/binlog.xml
с вашими конфигурационными данными:<?xml version="1.0" encoding="UTF-8" author="Josin" date="2019-07-22"?>
<!--Этот файл конфигурации находится по адресу: /etc/mbinlogmq/binlog.xml-->
<!--Информация о подключении к главному серверу для репликации slave-->
<!--Пожалуйста, не добавляйте информацию о узлах, система проверит её самостоятельно-->
<system for="slave">
<mode>rabbitmq</mode> <!-- В настоящее время поддерживается только rabbitmq -->
<host>127.0.0.1</host>
<user>root</user>
<password>3333</password>
<port>3306</port>
<server_id>6</server_id>
<daemon>1</daemon>
</system>
<!--Необходимо настроить параметры rabbitmq, указанные ниже-->
<rabbitmq>
<host>127.0.0.1</host>
<user>guest</user>
<password>guest</password>
<port>15672</port>
<delivery_mode>1</delivery_mode>
<name>amq.default</name>
<payload>Invalid</payload>
<routing_key>fanout</routing_key>
<vhost>/</vhost>
</rabbitmq>
mbinlogmq -k start
Теперь вы можете выполнять операции в MySQL и одновременно проверять сообщения в RabbitMQ, чтобы убедиться, что они успешно доставлены. Обратите внимание, что текущая версия может иметь некоторые проблемы, поэтому не рекомендуется использовать её в производственной среде.
mbinlogmq генерирует четыре типа сообщений для разных журналов binlog:
Все сообщения представлены в формате JSON.
pre
и new
, представляющие данные до и после изменения.{
"etype": 1,
"data" : {
"pre": {
"id":1,
"ad":2
},
"new": {
"id":1,
"ad":3
}
}
}
{
"etype": 2,
"data" : {
"id":1,
"ad":3
}
}
{
"etype": 3,
"data" : {
"id":1,
"ad":3
}
}
{
"etype": 4,
"data": "ALTER TABLE `books`.`test_at` MODIFY COLUMN `cc` datetime(0) NULL DEFAULT NULL AFTER `bb`"
}
Пример сообщения:
[x] Received {"etype":4,"data":"ALTER TABLE `books`.`test_at` \nMODIFY COLUMN `bb` date NULL DEFAULT NULL AFTER `aa`"}
[x] Received {"etype":4,"data":"ALTER TABLE `books`.`test_at` \nMODIFY COLUMN `bb` date NOT NULL AFTER `aa`"}
[x] Received {"etype":4,"data":"BEGIN"}
[x] Received {"etype":1,"data":{"pre":{"id":1,"book_name":"傲世丹神1","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 14:28:43","author_name":"寂小贼111","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"},"new":{"id":1,"book_name":"傲世丹神1","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 21:47:36","author_name":"寂小贼","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"}}}
[x] Received {"etype":4,"data":"COMMIT"}
[x] Received {"etype":4,"data":"BEGIN"}
[x] Received {"etype":1,"data":{"pre":{"id":1,"book_name":"傲世丹神1","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 21:47:36","author_name":"寂小贼","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"},"new":{"id":1,"book_name":"傲世丹神","book_cover":"http://img.c0m.io/quanben.io/upload/thumbnail/book_0_999/book_1.jpg","add_time":"2019-7-23 21:47:54","author_name":"寂小贼","introduction":"废柴少年得无上传承,获逆天神脉,学绝世神功,掌握超绝丹术,这使他...","test_date":"2019-7-29"}}}
[x] Received {"etype":4,"data":"COMMIT"}
Если у вас есть вопросы, вы можете обратиться через ISSUE.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )