2017 © Pedro Pelรกez
 

library php-binlog-collector

Ridibooks PHP Binlog Collector

image

ridibooks/php-binlog-collector

Ridibooks PHP Binlog Collector

  • Monday, February 5, 2018
  • by blu
  • Repository
  • 4 Watchers
  • 2 Stars
  • 17 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 1 Forks
  • 0 Open issues
  • 6 Versions
  • 0 % Grown

The README.md

php-binlog-collector

Build Status Latest Stable Version License, (*1)

PHP๋กœ ๋งŒ๋“ค์–ด์ง„ MySQL/MariaDB ๋ณต์ œ ํ”„๋กœํ† ์ฝœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•œ, MariaDB Binlog ๊ธฐ๋ฐ˜์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ˆ˜์ง‘ ์‘์šฉ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋ถ„์„ ๋ฒ”์œ„๋ฅผ ๋ถ„ํ• ํ•˜๋Š” Partitioner์™€ ์‹ค์ œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” Worker๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค., (*2)

์ฃผ์š” ์‚ฌ์šฉ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: php-mysql-replication, (*3)

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 ์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค., (*4)

TARGET_DB๋Š” binlog-format: row ๋กœ ์„ค์ •๋˜์–ด ์šด์˜์ค‘์ด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค., (*5)

TARGET_DB ์ ‘๊ทผ ๊ถŒํ•œ์€ REPLICATION SLAVE, REPLICATION CLIENT, SELECT ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค., (*6)

DB ์—ฐ๊ฒฐ ์„ค์ •

.env.local๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค., (*7)

BINLOG_MYSQL_TARGET๋Š” ๋ถ„์„ํ•  DB, BINLOG_MYSQL_HISTORY_WRITE๋Š” ๋ถ„์„ ์œ„์น˜ ๋ฐ ์ด๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  DB ์ž…๋‹ˆ๋‹ค., (*8)

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 ๊ธฐ๋ฐ˜ ํ™˜๊ฒฝ์— ๋“ค์–ด ์žˆ๋Š” ๊ธฐ๋ณธ ์—ฐ๊ฒฐ ์ •๋ณด์ž…๋‹ˆ๋‹ค., (*9)

๋งŒ์•ฝ .env ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ํ•ด๋‹น ํŒŒ์ผ๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค., (*10)

Partitioner/Worker ์„ค์ •

default ์„ค์ •์ •๋ณด์ด๋ฉฐ, ์™ธ๋ถ€์—์„œ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., (*11)

์„ค์ • ์ •๋ณด ๋””ํดํŠธ ๊ฐ’ ์‚ฌ์šฉ ์„ค๋ช…
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์„ ์ด์šฉํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ถ”์  ์—์„œ ์„ค๊ณ„ ๋‚ด์šฉ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค., (*12)

The Versions

05/02 2018