1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/josinli-mbinlogmq

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

mbinlogmq: промежуточное ПО на основе MySQL binlog протокола

Что такое mbinlogmq?

mbinlogmq — это промежуточное программное обеспечение, разработанное на языке C, которое использует протокол MySQL binlog. Оно в реальном времени получает журналы MySQL binlog и отправляет данные изменений и SQL-запросы в RabbitMQ. Промежуточное ПО использует механизмы мониторинга и проверки для обеспечения 100% доставки данных в RMQ даже в случае сбоя системы.

Архитектура

Установка и компиляция

  • mbinlog зависит от некоторых сторонних библиотек:

Сначала установите необходимые программы: cURL, mysql и rabbitmq. После установки запомните пути установки.

  • Загрузите исходный код mbinlogmq:
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:
mbinlogmq -k start

Теперь вы можете выполнять операции в MySQL и одновременно проверять сообщения в RabbitMQ, чтобы убедиться, что они успешно доставлены. Обратите внимание, что текущая версия может иметь некоторые проблемы, поэтому не рекомендуется использовать её в производственной среде.

mbinlogmq генерирует четыре типа сообщений для разных журналов binlog:

Все сообщения представлены в формате JSON.

  1. UPDATE: etype = 1, содержит объекты pre и new, представляющие данные до и после изменения.
{
    "etype": 1,
    "data" : {
        "pre": {
            "id":1,
            "ad":2
        },
        "new": {
            "id":1,
            "ad":3
        }
    }
}
  1. INSERT: etype = 2.
{
    "etype": 2,
    "data" : {
        "id":1,
        "ad":3
    }
}
  1. DELETE: etype = 3.
{
    "etype": 3,
    "data" : {
        "id":1,
        "ad":3
    }
}
  1. SQL-запрос: etype = 4.
{
    "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 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
C и 2 других языков
BSD-3-Clause-Clear
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/josinli-mbinlogmq.git
git@api.gitlife.ru:oschina-mirror/josinli-mbinlogmq.git
oschina-mirror
josinli-mbinlogmq
josinli-mbinlogmq
release