定制 ridibooks/php-binlog-collector 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

ridibooks/php-binlog-collector

Composer 安装命令:

composer require ridibooks/php-binlog-collector

包简介

Ridibooks PHP Binlog Collector

README 文档

README

Build Status Latest Stable Version License

PHP로 만들어진 MySQL/MariaDB 복제 프로토콜 라이브러리를 이용한, MariaDB Binlog 기반의 변경사항 수집 응용 어플리케이션으로 분석 범위를 분할하는 Partitioner와 실제 변경사항 데이터를 수집하는 Worker로 구성되어 있습니다.

주요 사용 라이브러리: php-mysql-replication

Installation

  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 가 필요합니다.

DB 연결 설정

.env.local는 아래와 같습니다.

BINLOG_MYSQL_TARGET는 분석할 DB, BINLOG_MYSQL_HISTORY_WRITE는 분석 위치 및 이력 데이터를 저장할 DB 입니다.

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 설정

default 설정정보이며, 외부에서 설정을 변경할 수 있습니다.

설정 정보 디폴트 값 사용 설명
gtid_partition_max_count 1000 Partitioner 파티션 최대 개수
jump_offset_for_next_partition 10000 Partitioner 파티션을 나누기 위한 값
tables_only X Worker 타겟 테이블명들
databases_only X Worker 타겟 데이터베이스명들
child_process_max_count 10 Worker 동시에 실행할 워커 수
once_processed_max_event_count_in_gtid 100 Worker 한 트랜잭션에 한 번에 저장할 이벤트 수
gtid_count_for_persist_per_partition 500 Worker 분석시 위치 갱신을 위한 Gtid 갯수
is_all_print_event false ALL 디버깅 사용여부

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. 이미 분석을 시작했다면, 아래 명령어로 DB에 저장된 위치로부터 계속 분석 범위를 나눕니다.
php [every]binlog_collect_partitioner.php continue
  1. Partitioner가 나눈 범위에 대해서 Binlog Collector Worker가 병렬적으로 처리합니다.
php [every]binlog_collector_worker.php

데모

모든 데모들은 demo directory 에서 이용할 수 있고, docker 기반의 mariadb 환경 및 실제 구동은 travis-ci를 통해서 테스트 해볼 수 있습니다. MariaDB Binlog을 이용한 변경사항 추적 에서 설계 내용을 확인 할 수 있습니다.

ridibooks/php-binlog-collector 适用场景与选型建议

ridibooks/php-binlog-collector 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 74 次下载、GitHub Stars 达 12, 最近一次更新时间为 2018 年 01 月 04 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 ridibooks/php-binlog-collector 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 ridibooks/php-binlog-collector 我们能提供哪些服务?
定制开发 / 二次开发

基于 ridibooks/php-binlog-collector 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 74
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 12
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 12
  • Watchers: 4
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2018-01-04