PHP解析MySQL Binlog,依赖于mysql-replication-listener库 
详见:https://github.com/bullsoft/php-binlog

Install MySQL Replication Listener

  1. unzip mysql-replication-listener-master.zip
  2. cd mysql-replication-listener-master
  3. cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql-replication
  4. make & make install
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Install php-binlog

  1. unzip php-binlog-master.zip
  2. cd php-binlog-master/ext
  3. /usr/local/php5.5.15/bin/phpize
  4. ./configure --with-php-config=/usr/local/php5.5.15/bin/php-config --with-mysql-binlog=/usr/local/mysql-replication
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

Examples

注:Binlog为行格式

  1. <?php
  2. $link = binlog_connect("mysql://root:cpyf@127.0.0.1:3306");
  3. //binlog_set_position($link, 4);
  4. //binlog_set_position($link, 4, 'mysql-bin.000006');
  5. while($event=binlog_wait_for_next_event($link)) {
  6. // it will block here
  7. switch($event['type_code']) {
  8. case BINLOG_DELETE_ROWS_EVENT:
  9. var_dump($event);
  10. // do what u want ...
  11. break;
  12. case BINLOG_WRITE_ROWS_EVENT:
  13. var_dump($event);
  14. // do what u want ...
  15. break;
  16. case BINLOG_UPDATE_ROWS_EVENT:
  17. var_dump($event);
  18. // do what u want ...
  19. break;
  20. default:
  21. // var_dump($event);
  22. break;
  23. }
  24. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

Update_rows

  1. update `type` set type_id = 22 WHERE id in (58, 59);
  • 1
  • 1
  1. array(5) {
  2. 'type_code' =>
  3. int(24)
  4. 'type_str' =>
  5. string(11) "Update_rows"
  6. 'db_name' =>
  7. string(5) "cloud"
  8. 'table_name' =>
  9. string(4) "type"
  10. 'rows' =>
  11. array(4) {
  12. [0] =>
  13. array(5) {
  14. [0] =>
  15. string(2) "58"
  16. [1] =>
  17. string(8) "adsfasdf"
  18. [2] =>
  19. string(4) "asdf"
  20. [3] =>
  21. string(2) "22"
  22. [4] =>
  23. string(1) "0"
  24. }
  25. [1] =>
  26. array(5) {
  27. [0] =>
  28. string(2) "58"
  29. [1] =>
  30. string(8) "adsfasdf"
  31. [2] =>
  32. string(4) "asdf"
  33. [3] =>
  34. string(1) "4"
  35. [4] =>
  36. string(1) "0"
  37. }
  38. [2] =>
  39. array(5) {
  40. [0] =>
  41. string(2) "59"
  42. [1] =>
  43. string(8) "adsfasdf"
  44. [2] =>
  45. string(4) "asdf"
  46. [3] =>
  47. string(2) "22"
  48. [4] =>
  49. string(1) "0"
  50. }
  51. [3] =>
  52. array(5) {
  53. [0] =>
  54. string(2) "59"
  55. [1] =>
  56. string(8) "adsfasdf"
  57. [2] =>
  58. string(4) "asdf"
  59. [3] =>
  60. string(1) "4"
  61. [4] =>
  62. string(1) "0"
  63. }
  64. }
  65. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

Delete_rows

  1. delete from `type` WHERE id in (58, 59);
  • 1
  • 1
  1. array(5) {
  2. 'type_code' =>
  3. int(25)
  4. 'type_str' =>
  5. string(11) "Delete_rows"
  6. 'db_name' =>
  7. string(5) "cloud"
  8. 'table_name' =>
  9. string(4) "type"
  10. 'rows' =>
  11. array(2) {
  12. [0] =>
  13. array(5) {
  14. [0] =>
  15. string(2) "58"
  16. [1] =>
  17. string(8) "adsfasdf"
  18. [2] =>
  19. string(4) "asdf"
  20. [3] =>
  21. string(2) "22"
  22. [4] =>
  23. string(1) "0"
  24. }
  25. [1] =>
  26. array(5) {
  27. [0] =>
  28. string(2) "59"
  29. [1] =>
  30. string(8) "adsfasdf"
  31. [2] =>
  32. string(4) "asdf"
  33. [3] =>
  34. string(2) "22"
  35. [4] =>
  36. string(1) "0"
  37. }
  38. }
  39. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39

Write_rows

  1. insert into type values (Null, "Hello, World", "Best world", 4, 0), (NULL, "你好,世界", "世界很美好", 3, 5);
  • 1
  • 1
  1. array(5) {
  2. 'type_code' =>
  3. int(23)
  4. 'type_str' =>
  5. string(10) "Write_rows"
  6. 'db_name' =>
  7. string(5) "cloud"
  8. 'table_name' =>
  9. string(4) "type"
  10. 'rows' =>
  11. array(2) {
  12. [0] =>
  13. array(5) {
  14. [0] =>
  15. string(2) "95"
  16. [1] =>
  17. string(12) "Hello, World"
  18. [2] =>
  19. string(10) "Best world"
  20. [3] =>
  21. string(1) "4"
  22. [4] =>
  23. string(1) "0"
  24. }
  25. [1] =>
  26. array(5) {
  27. [0] =>
  28. string(2) "96"
  29. [1] =>
  30. string(15) "你好,世界"
  31. [2] =>
  32. string(15) "世界很美好"
  33. [3] =>
  34. string(1) "3"
  35. [4] =>
  36. string(1) "5"
  37. }
  38. }
  39. }

PHP Client for Mysql Binlog的更多相关文章

  1. MySQL Binlog 解析工具 Maxwell 详解

    maxwell 简介 Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis.RabbitMQ.Redis.Goog ...

  2. 一个分布式 MySQL Binlog 存储系统的架构设计

    1. kingbus简介 1.1 kingbus是什么? kingbus是一个基于raft强一致协议实现的分布式MySQL binlog 存储系统.它能够充当一个MySQL Slave从真正的Mast ...

  3. 20180705关于mysql binlog的解析方式

    来自:https://blog.csdn.net/u012985132/article/details/74964366/ 关系型数据库和Hadoop生态的沟通越来越密集,时效要求也越来越高.本篇就来 ...

  4. 基于 MySQL Binlog 的 Elasticsearch 数据同步实践 原

    一.背景 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数据可以 ...

  5. Canal - 数据同步 - 阿里巴巴 MySQL binlog 增量订阅&消费组件

    背景 早期,阿里巴巴 B2B 公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求 ,主要是基于trigger的方式获取增量变更.从 2010 年开始,公司开始逐步尝试数据库日志解析,获取增量变 ...

  6. canal+kafka订阅Mysql binlog将数据异构到elasticsearch(或其他存储方式)

    canal本质就是"冒充"从库,通过订阅mysql bin-log来获取数据库的更改信息. mysql配置(my.cnf) mysql需要配置my.cnf开启bin-log日志并且 ...

  7. 基于MySQL Binlog的Elasticsearch数据同步实践

    一.为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品.订单等数据的多维度检索. 使用 Elasticsearch 存储业务数 ...

  8. MySql Binlog 说明 & Canal 集成MySql的更新异常说明 & MySql Binlog 常用命令汇总

    文章来源于本人的印象笔记,如出现格式问题可访问该链接查看原文 原创声明:作者:Arnold.zhao 博客园地址:https://www.cnblogs.com/zh94 目录 背景介绍 开启MySq ...

  9. Canal实时解析mysql binlog数据实战

    一.说明 通过canal实时监听mysql binlog日志文件的变化,并将数据解析出来 二.环境准备 1.创建maven项目并修改pom.xml配置文件 <dependencies> & ...

随机推荐

  1. 解决PHP在Windows IIS 上传的图片无法访问的问题

    最近在做一个网站项目遇到了一个很奇怪的问题,现记录下来希望可以帮助到其他的朋友   问题描述: 最近公司刚刚在香港购买了一个Windows Server 2008 服务器用于将一个客户的N个php网站 ...

  2. 安装apache+php记录

    安装apache yum install httpd 修改apache配置文件,可以修改apache的默认端口号,根目录等 /etc/httpd/conf/httpd.conf 启动/重启apache ...

  3. Linux下启动eclipse报错

    A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be avail   Java RunTime Environm ...

  4. 触发器五(建立INSTEAD OF触发器)(学习笔记)

    INSTEAD OF触发器 对于简单视图,可以直接执行INSERT,UPDATE和DELETE操作但是对于复杂视图,不允许直接执行INSERT,UPDATE和DELETE操作.为了在具有以上情况的复杂 ...

  5. Phpcms之L()函数

    .phpcms\languages\zh-cn    中文语言包2.phpcms\languages\en    英文语言包 phpcms v9语言包建立  在phpcms v9二次开发之模型类的应用 ...

  6. 高阶函数 实现sum(2)(3) 柯里化

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  7. maven 找不到或无法加载主类

      maven 找不到或无法加载主类 CreateTime--2018年4月19日22:58:14 Author:Marydon 1.情景还原: 在maven管理的web项目中,单独运行Java类报错 ...

  8. struts2接收参数的几种形式

    1.使用属性 HTML: <form action="login" method="post" name="form1"> 用户 ...

  9. spring mvc中@requesMapping的可配置参数和标注的处理方法的可选参数

    @RequestMapping的可选参数 value:表示需要匹配的url的格式. method:表示所需处理请求的http 协议(如get,post,put,delete等),可选值为Request ...

  10. python之模块csv之CSV文件一次写入多行

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #CSV文件一次写入多行 import csv #csv文件,是一种常用的文本格式,用以存储表格数据,很多程序 ...