1、开启binlog修改mysql配置文件
log-bin=mysql-bin
binlog-format=Row
server-id=180
binlog-do-db=test
2、
package FlinkCDC;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.TableEnvironment;
import org.apache.flink.table.api.bridge.java.StreamTableEnvironment;
//配置mysql
//https://www.jianshu.com/p/72b833309bc7
//https://www.jianshu.com/p/0a47e387de51
public class mysqlCDC {
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment environment = StreamExecutionEnvironment.getExecutionEnvironment();
StreamTableEnvironment tEnv = StreamTableEnvironment.create(environment);
environment.setParallelism(1);
tEnv.executeSql("CREATE TABLE test01 \n" +
"( \n" +
"id INT, \n" +
"name STRING,\n" +
"age int\n" +
") WITH \n" +
"(\n" +
"'connector' = 'mysql-cdc',\n" +
"'hostname' = 'localhost',\n" +
"'port' = '3306',\n" +
"'username' = 'root',\n" +
"'password' = 'root1234',\n" +
"'database-name' = 'test',\n" +
"'table-name' = 'test01' \n" +
")");
tEnv.executeSql("CREATE TABLE test02(id int,\n" +
" name String,\n" +
" age int,\n" +
" primary key(id) NOT ENFORCED\n" +
" )with(\n" +
" 'connector'='sqlserver-x',\n" +
" 'username'='SA',\n" +
" 'password'='Isysc0re',\n" +
" 'url' = 'jdbc:sqlserver://ip:1433;databaseName=add;useLOBs=false',\n" +
" 'schema'='dbo',\n" +
" 'table-name'='STD_CDC'\n" +
" )");
tEnv.executeSql("insert into test02(id,name, age) select id,name,age from test01");
}
}
3、
<dependency>
<groupId>com.alibaba.ververica</groupId>
<artifactId>flink-connector-mysql-cdc</artifactId>
<version>1.3.0</version>
</dependency>