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.
You can comment after Login
Inappropriate content may be displayed here and will not be shown on the page. You can check and modify it through the relevant editing function
If you confirm that the content does not involve inappropriate language/advertisement redirection/violence/vulgar pornography/infringement/piracy/false/insignificant or illegal content related to national laws and regulations, you can click submit to make an appeal, and we will handle it as soon as possible.
Comments ( 0 )