zoukankan      html  css  js  c++  java
  • PHP Client for Mysql Binlog

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

    Install MySQL Replication Listener

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

    Install php-binlog

    unzip php-binlog-master.zip
    cd php-binlog-master/ext
    /usr/local/php5.5.15/bin/phpize
    ./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为行格式

    <?php
    
    $link = binlog_connect("mysql://root:cpyf@127.0.0.1:3306");
    //binlog_set_position($link, 4);  
    //binlog_set_position($link, 4, 'mysql-bin.000006');                           
    
    while($event=binlog_wait_for_next_event($link)) {
        // it will block here                                 
        switch($event['type_code']) {
            case BINLOG_DELETE_ROWS_EVENT:
                var_dump($event);
                // do what u want ...                           
                break;
            case BINLOG_WRITE_ROWS_EVENT:
                var_dump($event);
                // do what u want ...                           
                break;
            case BINLOG_UPDATE_ROWS_EVENT:
                var_dump($event);
                // do what u want ...                           
                break;
            default:
                // var_dump($event);                            
                break;
        }
    }
    
    • 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

    update `type` set type_id = 22 WHERE id in (58, 59);
    • 1
    • 1
    array(5) {
      'type_code' =>
      int(24)
      'type_str' =>
      string(11) "Update_rows"
      'db_name' =>
      string(5) "cloud"
      'table_name' =>
      string(4) "type"
      'rows' =>
      array(4) {
        [0] =>
        array(5) {
          [0] =>
          string(2) "58"
          [1] =>
          string(8) "adsfasdf"
          [2] =>
          string(4) "asdf"
          [3] =>
          string(2) "22"
          [4] =>
          string(1) "0"
        }
        [1] =>
        array(5) {
          [0] =>
          string(2) "58"
          [1] =>
          string(8) "adsfasdf"
          [2] =>
          string(4) "asdf"
          [3] =>
          string(1) "4"
          [4] =>
          string(1) "0"
        }
        [2] =>
        array(5) {
          [0] =>
          string(2) "59"
          [1] =>
          string(8) "adsfasdf"
          [2] =>
          string(4) "asdf"
          [3] =>
          string(2) "22"
          [4] =>
          string(1) "0"
        }
        [3] =>
        array(5) {
          [0] =>
          string(2) "59"
          [1] =>
          string(8) "adsfasdf"
          [2] =>
          string(4) "asdf"
          [3] =>
          string(1) "4"
          [4] =>
          string(1) "0"
        }
      }
    }
    • 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

    delete from `type` WHERE id in (58, 59);
    • 1
    • 1
    array(5) {
      'type_code' =>
      int(25)
      'type_str' =>
      string(11) "Delete_rows"
      'db_name' =>
      string(5) "cloud"
      'table_name' =>
      string(4) "type"
      'rows' =>
      array(2) {
        [0] =>
        array(5) {
          [0] =>
          string(2) "58"
          [1] =>
          string(8) "adsfasdf"
          [2] =>
          string(4) "asdf"
          [3] =>
          string(2) "22"
          [4] =>
          string(1) "0"
        }
        [1] =>
        array(5) {
          [0] =>
          string(2) "59"
          [1] =>
          string(8) "adsfasdf"
          [2] =>
          string(4) "asdf"
          [3] =>
          string(2) "22"
          [4] =>
          string(1) "0"
        }
      }
    }
    • 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

    insert into type values (Null, "Hello, World", "Best world", 4, 0), (NULL, "你好,世界", "世界很美好", 3, 5);
    • 1
    • 1
    array(5) {
      'type_code' =>
      int(23)
      'type_str' =>
      string(10) "Write_rows"
      'db_name' =>
      string(5) "cloud"
      'table_name' =>
      string(4) "type"
      'rows' =>
      array(2) {
        [0] =>
        array(5) {
          [0] =>
          string(2) "95"
          [1] =>
          string(12) "Hello, World"
          [2] =>
          string(10) "Best world"
          [3] =>
          string(1) "4"
          [4] =>
          string(1) "0"
        }
        [1] =>
        array(5) {
          [0] =>
          string(2) "96"
          [1] =>
          string(15) "你好,世界"
          [2] =>
          string(15) "世界很美好"
          [3] =>
          string(1) "3"
          [4] =>
          string(1) "5"
        }
      }
    }
  • 相关阅读:
    java的学习笔记
    tomcat配置方法
    《编写高质量代码》学习笔记
    Servlet的学习笔记
    Http协议的学习笔记
    树莓派开箱使用分享以及一些心得
    树莓派的骚操作
    Linux的学习笔记
    msyql高级的学习笔记
    项目业务记录
  • 原文地址:https://www.cnblogs.com/sandea/p/6831018.html
Copyright © 2011-2022 走看看