MySQL的binlog_row_image参数学习

MySQL的binlog_row_image参数学习

1 背景知识

MySQL的binlog格式有三种,分别是STATEMENTMIXEDROW,各有优劣。binlog_row_image这个参数是在MySQL 5.6版本新增加的参数,它有三个取值:FULLMINIMALNOBLOB,默认取值是FULL。要使用binlog_row_image参数,binlog的格式必须是MIXEDROW,不可以是STATEMENT格式。

1.1 名词解释

  1. 前镜像:数据库表中修改前的内容。
  2. 后镜像:数据库表中修改后的内容。

2 实验binlog_row_image的不同值

2.1 binlog_row_image = FULL

  1. 实验表有主键约束

    CREATE TABLE 'test1' (
        'id' int(11) NOT NULL,
        'name' varchar(10) DEFAULT NULL,
        primary key('id')
    );
    
    INSERT into test1 values(1,'jack'),(2,'mary');
    
    UPDATE test1 SET name='bob' WHERE id=2;
    

    解析binlog:

    mysqlbinlog --no-defaults --base64-output=DECODE-ROWS -v /home/mysql/mysql-bin.000196 >/home/mysqlbin_1.txt
    

    查看记录镜像信息如下:

    ### UPDATE 'test1','test1'
    ### WHERE
    ###	  @1=2
    ###   @2='mary'
    ### SET
    ###   @1=2
    ###   @2='bob'
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您的问题是关于Flink如何使用MySQLBinlog功能吗? 如果是的话,您可以按照以下步骤: 1. 在Flink中添加MySQL的依赖项,例如: ``` <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-jdbc_2.11</artifactId> <version>${flink.version}</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> ``` 2. 创建一个Flink的MySQL Source,例如: ``` JdbcSource<Row> mysqlSource = JdbcSource.<Row>builder() .setDrivername("com.mysql.jdbc.Driver") .setDBUrl("jdbc:mysql://localhost:3306/test") .setUsername("root") .setPassword("root") .setQuery("SELECT * FROM user") .setRowTypeInfo(new RowTypeInfo(Types.STRING, Types.INT)) .build(); ``` 3. 使用Flink的DataStream API,例如: ``` StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.addSource(mysqlSource).print(); env.execute(); ``` 4. 启用MySQLBinlog功能,例如: ``` SET binlog_format = 'ROW'; SET binlog_row_image = 'FULL'; SET @@global.binlog_expire_logs_seconds = 604800; SET @@global.max_binlog_size = 1073741824; ``` 5. 在Flink中使用MySQLBinlog Source,例如: ``` BinlogSource<Row> binlogSource = MySQLSource.<Row>builder() .hostname("localhost") .port(3306) .databaseList("test") .tableList("user") .username("root") .password("root") .serverId(1001L) .binlogFilename("mysql-bin.000001") .binlogPosition(4L) .build(); DataStreamSource<Row> streamSource = env.addSource(binlogSource); streamSource.print(); env.execute(); ``` 以上是Flink如何使用MySQLBinlog功能的简单介绍,希望能够帮助到您。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值