Exemple de démonstration de démarrage rapide Flink CDC2.0 (amarrage Jar, non-SQL)

important!

  Le nom Flink CDC porte Flink, mais faites attention ! ! ! Lorsque nous construisons une démo simple localement, nous pouvons l'exécuter localement sans télécharger l'environnement flink .

  FlinkCDC est un package jar.Après l'avoir présenté, écrivez une méthode principale pour afficher ses fonctions simples. (En tant que novice, je considérais FlinkCDC comme un plug-in similaire à la segmentation de mots ik, j'ai donc d'abord téléchargé Flink...)

Préparation

  • Il faut savoir utiliser maven
  • ≤La version FlinkCDC 1.4.0 peut utiliser MySQL5.6+, FlinkCDC doit être 5.7+

  Bien que Flink CDC nécessite officiellement MySQL 5.7+, la version 1.4 de Flink CDC n'a actuellement aucun problème à fonctionner sur MySQL 5.6. Il suffit de créer une démo. Si vous créez un environnement de production en utilisant 5.6, veuillez le tester attentivement !

Activer le journal binaire

Vous devez modifier le fichier de configuration MySQL my.cnf, veuillez y ajouter ou ajouter le contenu suivant :

[mysqld]
log-bin=mysql-bin
server-id=1
binlog_format=ROW

Les utilisateurs MAC doivent créer manuellement ce fichier dans le répertoire etc. Les utilisateurs Windows peuvent se référer à d'autres blogs pour activer binlog (cette étape est très simple, il y a donc plus de contenu)

Vérifier le journal binaire

Vous devez redémarrer MySQL

Exécutez ensuite l'instruction suivante pour voir si elle est activée avec succès :

show variables like '%log_bin%';

Après l'exécution, il devrait montrer que log_bin est activé

show variables like 'binlog_format';

Après l'exécution, il devrait montrer que binlog_format est ROW

Si le résultat de l'exécution est correct, vous pouvez passer à l'étape suivante. S'il est incorrect, veuillez d'abord le corriger.

Créer un nouveau projet et tester

Ouvrez l'EDI et créez un nouveau projet Maven vierge.

Ici, mes Flink CDC version 1.4.0 et Flink CDC 2.0 peuvent être utilisés normalement. Vous pouvez choisir vous-même (pour les amis avec des versions plus anciennes, commentez les coordonnées 2.0.x et remplacez-les par celles dans les commentaires ci-dessous)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>flinkcdc-test</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>lib/</classpathPrefix>
                            <mainClass>*.dsp.redispositive.Application</mainClass>
                            <useUniqueVersions>false</useUniqueVersions>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <properties>
        <flink-version>1.13.0</flink-version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-java</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-streaming-java_2.12</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-clients_2.12</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.44</version>
        </dependency>
        <dependency>
            <groupId>org.apache.flink</groupId>
            <artifactId>flink-table-planner-blink_2.12</artifactId>
            <version>${flink-version}</version>
        </dependency>
        <dependency>
            <groupId>com.ververica</groupId>
            <artifactId>flink-connector-mysql-cdc</artifactId>
            <version>2.0.2</version>
        </dependency>
        <!--老版本的用户打开这个注释,把上面2.0注释掉
        <dependency>
            <groupId>com.alibaba.ververica</groupId>
            <artifactId>flink-connector-mysql-cdc</artifactId>
            <version>1.4.0</version>
        </dependency>-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>
    </dependencies>
</project>

 Nous créons une nouvelle méthode principale de test :

 Remarque : Le nom du package Flink CDC2.0 a été modifié et "alibaba" n'est pas inclus dans l'importation. Vous pouvez coller le code pour lui permettre d'importer automatiquement le package.

import com.alibaba.ververica.cdc.connectors.mysql.table.StartupOptions;
import com.alibaba.ververica.cdc.debezium.StringDebeziumDeserializationSchema;
import org.apache.commons.collections.CollectionUtils;
import org.apache.flink.api.common.functions.MapFunction;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.api.functions.source.SourceFunction;
import com.alibaba.ververica.cdc.connectors.mysql.MySQLSource;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MySqlSourceExample {

	public static void main(String[] args) throws Exception {

		SourceFunction<String> sourceFunction = MySQLSource.<String>builder()
				.hostname("localhost")
				.port(3306)
				.databaseList("cdc_test") //订阅的库
				.username("root")
				.password("root")
				.deserializer(new StringDebeziumDeserializationSchema())
				.build();

		StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

		env.addSource(sourceFunction)
				.print()
				.setParallelism(1);

		env.execute();
	}
}

effectuer des tests

Nous exécutons la méthode principale, le démarrage est lent, veuillez patienter !

Si les éléments suivants apparaissent, ils n'affecteront pas le fonctionnement de la démo et peuvent être ignorés : 

Modifiez simplement la bibliothèque de surveillance de la base de données et consultez les informations du journal binlog suivantes, ce qui signifie le succès !

❤ Si cela peut vous aider, cliquez trois fois de suite ~~

Je suppose que tu aimes

Origine blog.csdn.net/qq_20051535/article/details/121071915
conseillé
Classement