ridibooks/php-binlog-collector

Ridibooks PHP Binlog Collector

1.4.0 2020-04-21 06:22 UTC

This package is auto-updated.

Last update: 2024-09-15 11:19:17 UTC


README

Build Status Latest Stable Version License

该应用是一个使用MySQL/MariaDB复制协议库编写的应用,基于MariaDB Binlog进行更改数据收集,由用于分割分析范围的Partitioner和用于收集实际更改数据的Worker组成。

主要使用库: php-mysql-replication

安装

  1. 使用Composer
composer require ridibooks/php-binlog-collector
  1. 直接使用GitHub
git clone https://github.com/ridi/php-binlog-collector.git
composer install -o

MariaDB使用限制

php-mysql-replication相同。

TARGET_DB需要设置为binlog-format: row才能运行。

TARGET_DB需要具有REPLICATION SLAVE, REPLICATION CLIENT, SELECT权限。

数据库连接设置

.env.local文件如下。

BINLOG_MYSQL_TARGET是分析数据库,BINLOG_MYSQL_HISTORY_WRITE是存储分析位置和历史数据的数据库。

BINLOG_ENABLE_SENTRY=0
BINLOG_SENTRY_KEY= 
BINLOG_MYSQL_TARGET_HOST=127.0.0.1
BINLOG_MYSQL_TARGET_USER=repl
BINLOG_MYSQL_TARGET_PORT=3307
BINLOG_MYSQL_TARGET_PASSWORD=1234
BINLOG_MYSQL_TARGET_DBNAME=php_mysql_replication
BINLOG_MYSQL_TARGET_DRIVER=pdo_mysql
BINLOG_MYSQL_TARGET_CHARSET=utf8

BINLOG_MYSQL_HISTORY_WRITE_HOST=127.0.0.1
BINLOG_MYSQL_HISTORY_WRITE_USER=testUser
BINLOG_MYSQL_HISTORY_WRITE_PORT=3308
BINLOG_MYSQL_HISTORY_WRITE_PASSWORD=testUser
BINLOG_MYSQL_HISTORY_WRITE_DBNAME=platform
BINLOG_MYSQL_HISTORY_WRITE_DRIVER=pdo_mysql
BINLOG_MYSQL_HISTORY_WRITE_CHARSET=utf8

这些设置信息是demo中基于docker的基本连接信息。

如果存在.env文件,则使用该文件。

Partitioner/Worker设置

默认设置信息,外部可以修改设置。

Partitioner/Worker执行

  1. 在Binlog Collector Partitioner中输入首次分析的位置,以分割分析范围。
php [every]binlog_collect_partitioner.php change_pos [binLogFileName] [binLogPosition]
    'ex) php [every]binlog_collect_partitioner.php change_pos mariadb-bin.000003 36755'
  1. 如果已经开始了分析,可以使用以下命令从已存储的位置继续分割分析范围。
php [every]binlog_collect_partitioner.php continue
  1. Binlog Collector Worker会并行处理Partitioner分割的范围。
php [every]binlog_collector_worker.php

演示

所有演示都可以在demo目录中找到,可以使用基于docker的mariadb环境,并通过travis-ci进行实际运行测试。使用MariaDB Binlog进行更改跟踪中可以查看设计内容。