myphps / wing-binlog
基于mysql数据库binlog的增量订阅&消费,复制于https://github.com/jilieryuyi/wing-binlog
2.0.3
2023-05-22 10:35 UTC
Requires
- php: >=7.0
- ext-bcmath: *
- ext-curl: *
- ext-json: *
- myphps/myphp: ^2.6
README
从 https://github.com/jilieryuyi/wing-binlog 克隆修改的版本
复制账号需要以下权限:
Replication Salve
Replication Client
Select 或 使用 config/TableFields.sql 在mysql库中执行创建获取表字段信息存储过程
REPLICATION CLIENT
REPLICATION SLAVE
复制相关。一般复制账号需要这两个权限。
授予复制账号REPLICATION CLIENT权限,复制用户可以使用 SHOW MASTER STATUS, SHOW SLAVE STATUS和 SHOW BINARY LOGS来确定复制状态。
授予复制账号REPLICATION SLAVE权限,复制才能真正地工作
授予 Select 或 TableFields过程执行 权限,能通过information_schema.columns查询表的字段结构
todo:
指定同步库或忽略库 指定表或忽略表
基于mysql数据库binlog的增量订阅&消费
wing-binlog是一个高性能php中间件
wing-binlog是一个轻量化mysql数据库监控系统
wing-binlog可轻松实现不改变一句业务代码实现整库数据变化实时监控
......
2.2升级要点
- 去除本地redis依赖
- 支持websocket事件通知
- 支持tcp事件通知
- 简化安装流程
- 优化性能问题,使binlog处理速度能达到binlog的写入速度,避免延迟
- 支持windows
- mysql协议支持
安装
- 开启mysql binlog支持,并且指定格式为row,如下配置
[mysqld]
server_id = 1
log_bin = mysql-bin
binlog_format=ROW
- 将config下的配置文件.example去除后修改其配置为自己的配置
cd config && cp app.php.example app.php
- 执行 php wing start --debug 开启服务进程(需要预先安装composer和php,并将php和composer添加到环境变量),可选参数 --d 以守护进程执行, --debug 启用debug模式, --n 指定进程数量,如:
php wing start --d --debug --n 8
- clients下面有两个测试的客户端,一个websocket和一个php实现的tcp client
- 停止所有服务
php wing stop
- 查看服务状态
php wing status
- src/Subscribe目录为可选的订阅者服务插件,只需要配置到app.php的subscribe下即可!
wing-binlog提供tcp和websocket服务,可选使用go或者workerman,workerman仅支持linux,go支持所有的平台。
使用go服务需要安装go,已安装的忽略。
编译go服务(如需使用,请先编译后再启动Binlog服务):
cd services
go build -o tcp tcp.go
go build -o websocket websocket.go
使用场景
- 数据库实时备份 (按业务表自定义或者整库同步)
- 异地机房业务,双master机房(两地写入,互相同步)
- 业务cache/store数据更新 (根据数据库变更日志,直接更新内存cache或者分布式cache)
- 敏感业务数据变更服务(典型的就是金额变化通知,库存变化的通知)
- 实时数据增量计算统计
......