赞
踩
前面转载了Flink CDC的机制文章,原理看起来还是比较好理解的,那么接下来很多人肯定都跃跃欲试了。
这篇文章分享一下MySQL作为源端,使用Flink SQL如何读取MySQL数据。
注意:如果经验有限,在进行所有的软件安装配置操作之前,请先仔细阅读一遍Flink CDC官方文档,目的主要是从文档中获取到Flink CDC与Flink版本对照关系及其他软件的支持版本。
本文章使用的软件版本如下:
在进行配置之前,首先你需要自行安装MySQL,具体步骤这里不展开说了,大家如果安装MySQL有困难还请自己去百度一下。
当前Flink CDC官方宣称支持的MySQL版本信息如下:
我这边测试过程中使用的是MariaDB 10,也是支持的。
修改my.cnf文件,增加如下信息:
- server_id=1
- log_bin=mysql-bin
- binlog_format=ROW
- expire_logs_days=30
- binlog_do_db=db_a
- binlog_do_db=db_b
配置项的解释如下:
配置文件修改完毕后保存并重启MySQL。然后进入MySQL命令行,验证是否已启用binlog:
- SELECT variable_value as "BINARY LOGGING STATUS (log-bin) ::"
- FROM information_schema.global_variables WHERE variable_name='log_bin';
返回结果如果显示ON则表示binlog启用。
在MySQL中创建测试数据库和测试表demo.products,语句如下:
- create database demo;
- use demo;
- CREATE TABLE `products` (
- `id` int(11) NOT NULL,
- `name` varchar(20) DEFAULT NULL,
- `description` varchar(20) DEFAULT NULL,
- `weight` decimal(10,3) DEFAULT NULL,
- PRIMARY KEY (`id`)
- ) ;
- INSERT INTO demo.products
- (id, name, description, weight)
- VALUES(1, 'a', 'a', 20.000);
- INSERT INTO demo.products
- (id, name, description, weight)
- VALUES(2, 'b', 'b', 30.000);
- INSERT INTO demo.products
- (id, name, description, weight)
- VALUES(3, 'c', 'c', 40.000);
- INSERT INTO demo.products
- (id, name, description, weight)
- VALUES(4, 'd', 'd', 50.000);
到Flink官方网站下载flink-1.13.3软件包,我这里下载的版本如下:
将下载的软件包解压缩到你习惯使用的软件目录,我这里就直接放在Downloads目录下了。
到flink cdc的github release页面下载最新的jar包flink-sql-connector-mysql-cdc-2.0.2.jar。
将下载好的jar包,放到2.1步解压后flink文件夹的lib目录下。
进入flink/bin目录,执行[./start-cluster.sh]启动flink测试环境。
进入flink/bin目录,执行[./sql-client.sh]启动Flink SQL。
- CREATE TABLE mysql_binlog (
- id INT NOT NULL,
- name STRING,
- description STRING,
- weight DECIMAL(10,3),
- PRIMARY KEY(id) NOT ENFORCED
- ) WITH (
- 'connector' = 'mysql-cdc',
- 'hostname' = '192.168.0.200',
- 'port' = '3306',
- 'username' = 'root',
- 'password' = 'passwd',
- 'database-name' = 'demo',
- 'table-name' = 'products'
- );
SELECT id, UPPER(name), description, weight FROM mysql_binlog;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。