flink sql同步mysql数据表到mysql

在这里插入图片描述

1. 关闭防火墙和selinux

systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld

2.安装java8

yum list java-1.8* yum install java-1.8.0-openjdk* -yjava -version

3.下载和部署mysql

yum -y install wget
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz /usr/local/
cd /usr/local/
tar xvJf mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz
mv mysql-8.0.28-linux-glibc2.12-x86_64 mysql-8.0
mkdir data
groupadd mysql
chown -R mysql.mysql /usr/local/mysql-8.0
cd mysql-8.0/bin/
mkdir data
./mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data/ --initialize

圈起来的部分为后面数据库登陆的初始密码

vi /etc/my.cnf
basedir=/usr/local/mysql-8.0/
datadir=/usr/local/mysql-8.0/data/
socket=/tmp/mysql.sock
character-set-server=UTF8MB4cp -a .././support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql
chkconfig --add mysql
service mysql status
service mysql start
ln -s /usr/local/mysql-8.0/bin/mysql /usr/bin

登陆

mysql -u root -p

在这里插入图片描述
输入之前初始化给的初始密码

修改mysql密码
在这里插入图片描述

登陆
在这里插入图片描述

4.下载部署flink

flink下载地址:

https://www.apache.org/dyn/closer.lua/flink/flink-1.18.1/flink-1.18.1-bin-scala_2.12.tgz

下载flink sql所需驱动

1.	flink-connector-jdbc-3.1.1-1.17.jar 下载地址:https://repo1.maven.org/maven2/org/apache/flink/flink-connector-jdbc/3.1.1-1.17/  
2.	flink-sql-connector-mysql-cdc-3.0.1.jar 下载地址:https://github.com/ververica/flink-cdc-connectors/releases  
3.	mysql-connector-java-8.0.28.jar 下载地址:https://repo.maven.apache.org/maven2/mysql/mysql-connector-java/8.0.28/  

上传flink压缩包并解压

tar -zxvf flink-1.18.1-bin-scala_2.12.tgz

进入flink的lib目录上传三个依赖

cd flink-1.18.1/lib/

需要修改一下flink配置文件
不然会出现以下情况
在这里插入图片描述

vi flink-1.18.1/conf/flink-conf.yaml

原本是localhost修改为ip
在这里插入图片描述

./flink-1.18.1/bin/start-cluster.sh

访问 192.168.207.193:8081 (默认是8081端口 可在配置文件里修改)
在这里插入图片描述

5.实时同步mysql数据表

数据库先创建一个库,在库里创建表再添加数据

create database ljq;use ljqCREATE TABLE players (
player_id INT NOT NULL AUTO_INCREMENT,
team_id INT,
player_name VARCHAR(255),
height FLOAT(53),
PRIMARY KEY (player_id)
);;
insert into players (player_id,team_id,player_name,height) values 
(1001,1001,'韦德','1.93'),
(1002,1002,'雷吉','1.91'),
(1003,1003,'安德烈','2.11'),
(1004,1004,'索恩','2.16'),
(1005,1005,'兰斯顿','1.88'),
(1006,1006,'格伦','1.98'),
(1007,1007,'伊斯梅尔','1.83'),
(1008,1008,'扎扎','2.11'),
(1009,1009,'乔恩','2.08');
select * from players;

在这里插入图片描述

再创一个表不插入数据

CREATE TABLE players2 (
player_id INT NOT NULL AUTO_INCREMENT,
team_id INT,
player_name VARCHAR(255),
height FLOAT(53),
PRIMARY KEY (player_id)
);

启动flink-sql

./flink-1.18.1/bin/sql-client.sh embedded

根据需要同步的数据创建源表

CREATE TABLE nbaplayers (
player_id INT,
team_id INT,
player_name VARCHAR,
height FLOAT,
PRIMARY KEY (player_id) NOT ENFORCED
) WITH (
'connector' = 'mysql-cdc',
'hostname' = '192.168.207.193',
'port' = '3306',
'username' = 'root',
'password' = 'linux123',
'database-name' = 'ljq',
'table-name' = 'players',
'server-time-zone' = 'Asia/Shanghai'
);

在这里插入图片描述

查看表时出现报错!

解决方法:修改为允许所有ip访问
在这里插入图片描述

use mysql;
select user,host from user;
update user set host = '%' where user = 'root';
flush privileges;
select user,host from user;

在这里插入图片描述
在这里插入图片描述

重新查看表 select * from nbaplayers;·
在这里插入图片描述

创建结果表

CREATE TABLE nba (
player_id INT,
team_id INT,
player_name VARCHAR,
height FLOAT,
PRIMARY KEY (player_id) NOT ENFORCED
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://192.168.207.193:3306/ljq?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&tinyInt1isBit=false&serverTimezone=Asia/Shanghai&useSSL=true&dontTrackOpenResources=true&defaultFetchSize=10000&useCursorFetch=true',
'driver' = 'com.mysql.cj.jdbc.Driver',
'username' = 'root',
'password' = 'linux123',
'table-name' = 'players2'
);

在这里插入图片描述

执行从源表插入结果表操作,生成同步作业

INSERT INTO nba
SELECT
player_id,
team_id,
player_name,
height
FROM nbaplayers;

在这里插入图片描述

Web端查看
在这里插入图片描述

查看是否同步数据到players2
在这里插入图片描述

如发现height同步数据有很多位小数点
解决方法:

ALTER TABLE players2 MODIFY height DOUBLE(3,2);

在这里插入图片描述
在这里插入图片描述

测试一下增删改是否同步

增 insert into players (player_id,team_id,player_name,height) values (10001,10002,'韦德2','1.95');

在这里插入图片描述
在这里插入图片描述

删delete from players where player_id = 10001;
改update players set player_name='姚明' where player_id=1001;

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/60383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Rust枚举之卧龙凤雏(Rust Option枚举、Rust Result枚举)(Rust Enum、Some(T)、Ok(T)、Err(E))链式操作

文章目录 Rust 枚举之卧龙凤雏枚举的基本概念枚举定义示例 Result 枚举:凤雏Result 枚举的定义Result 的使用场景示例 1:文件读取示例 2:链式操作与错误处理 Option 枚举:卧龙Option 枚举的定义Option 的使用场景示例 1&#xff1…

计算机网络-1.2分层结构

文章目录 三种分层结构OSI 七层模型(Open Systems Interconnection Model)TCP/IP 四层模型混合模型各层之间的关系PDU,SDU,PCIPDU(Protocol Data Unit)SDU(Service Data Unit)PCI(Protocol Cont…

6.2 对角化矩阵(2)

五、不能对角化的矩阵 假设 λ \lambda λ 是 A A A 的一个特征值,我们从两个方面发现这个事实: 特征向量(几何的): A x λ x A\boldsymbol x\lambda\boldsymbol x Axλx 有非零解。特征值(代数的&…

C++玩转物联网-从零开始:树莓派Pico的“Hello World”项目入门指南

树莓派Pico是一款功能强大且价格实惠的微控制器,非常适合编程初学者和电子爱好者。本文将以“Hello World”项目为例,带您快速入门树莓派Pico的基本操作和配置,为日后探索更复杂的项目奠定基础。 1. 项目概述 “Hello World”项目是树莓派P…

启动本地开发环境(自带热启动)yarn serve

文章目录 1. 安装 Yarn使用 npm 安装 Yarn使用 Chocolatey 安装 Yarn(Windows 用户)使用 Homebrew 安装 Yarn(macOS 用户) 2. 安装项目依赖3. 启动项目开发模式启动生产模式启动 4. 构建项目开发模式构建生产模式构建 5. 其他常用…

nodejs 020: React语法规则 props和state

props和state 在 React 中,props 和 state 是管理数据流的两种核心机制。理解它们之间的区别和用途是构建 React 应用程序的基础。 一、props 和 state的区别 特性propsstate定义方式由父组件传递给子组件的数据组件内部管理的本地数据是否可修改不可变&#xff…

架构师备考-概念背诵(软件工程)

软件工程 软件开发生命周期: 软件定义时期:包括可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目标,具体可分成问题定义、可行性研究、需求分析等。软件开发时期:就是软件的设计与实现,可分成概要设计、详细设计、编码、测试等。软件运行和维护:就是…

刷题强训(day06) -- 大数加法、链表相加、大数乘法

目录 1、大数加法 1.1 题目 1.2 思路 1.3 代码实现 2、链表相加(二) 2.1 题目 2.2 思路 2.3 代码实现 3、大数乘法 3.1 题目 3.2 思路 3.3 代码实现 1、大数加法 1.1 题目 1.2 思路 这道题可以模拟列竖式相加解答, 将每一位都转…

Java多线程编程(四)- 阻塞队列,生产者消费者模型,线程池

目录: 一.阻塞队列 二.线程池 一.阻塞队列 1.阻塞队列是⼀种特殊的队列. 也遵守 "先进先出" 的原则 阻塞队列能是⼀种线程安全的数据结构, 并且具有以下特性: 1.1.当队列满的时候, 继续入队列就会阻塞, 直到有其他线程从队列中取走元素 1.…

JSP执行过程及其与Servlet执行效率的比较

JSP(Java Server Pages)和Servlet都是Java Web开发中常用的技术,它们都用于动态生成Web页面。然而,JSP和Servlet在执行过程和效率上存在一些差异。本文将详细探讨JSP的执行过程,并比较JSP与Servlet的执行效率。 一、J…

open3d

open3d open3d用于 3D 数据处理的现代库。 简介 Open3D 是一个开源库,支持快速开发处理 3D 数据的软件。Open3D 前端公开了一组精心挑选的 C 和 Python 数据结构和算法。后端经过高度优化,并设置为并行化。Open3D 是从零开始开发的,具有一更…

洞察鸿蒙生态,把握开发新机遇

随着科技的不断进步,鸿蒙系统以其独特的分布式架构和跨设备协同能力,逐渐在智能手机、智能穿戴、车载、家居等多个领域崭露头角,与安卓、iOS形成三足鼎立之势。作为一名开发者,我对鸿蒙生态的认知和了解如下: 一、鸿蒙…

adb 如何通过wifi连接手机

1. 电脑通过USB线连接手机 1.1手机开启开发者模式 以小米手机为例:连续点击OS版本系统(设置–>我的设备–>全部参数) 1.2在开发者模式下,启动允许USB安装与USB调试 操作步骤:设置>更多设置>开发者选项&g…

【webrtc】 RTP 中的 MID(Media Stream Identifier)

RTP 中的 MID(Media Stream Identifier) RID及其与MID的区别 cname与mid的对比【webrtc】CNAME 是rtprtcp中的Canonical Name(规范化名称) 同样都是RTP头部扩展: 基于mediasoup的最新的代码,学习,发现mid在创建RtpSendStream时是必须传递的参数: 例如 D:\XTRANS\soup\…

brother:什么是兄弟,你悟了吗?

brother(兄弟)这个单词好奇怪哦,它为什么就会是兄弟呢?为什么这样书写、这些字母组合在一起,就是兄弟呢?而且,西方人的兄弟brother一词和姐妹sister一词,并不是像中国人所称呼明确指…

如何在谷歌浏览器中优化内存使用

在日常使用电脑的过程中,我们经常会遇到系统资源被大量占用的情况,尤其是内存。谷歌浏览器作为一个广泛使用的网络浏览器,其内存占用问题也备受关注。本文将详细介绍如何在谷歌浏览器中优化内存使用,以提升浏览体验和系统性能。&a…

计算机低能儿从0刷leetcode | 38.外观数列

题目:38. 外观数列 思路:这一题感觉仅仅难在了阅读理解上,搬了评论里一位朋友的中译中: 1 11 21 1211 111221 一步一步来 给一个数,这个数是1描述上一步的数,这个数是 1 即一个1,故写作11…

iSCSI 和SCSI的概述

一、定义与基础 SCSI 定义:SCSI是一种并行接口标准,用于连接高性能设备,如硬盘驱动器、磁带机和光驱等。基础:SCSI设备通过控制器与计算机系统通信,具有很高的数据传输速率和可靠性。 iSCSI 定义:iSCSI是一…

关于 Oracle Database Express Edition 的功能和安装

Oracle Database Express Edition,简称 Oracle Database XE。是一个免费的版本,主要用于培训和一些功能要求比较简单,又需要免费分发的场景。 看看官方的说明: Whether you are a developer, a DBA, a data scientist, an educat…

谷歌浏览器支持的开发者工具详解

谷歌浏览器(Google Chrome)是全球最受欢迎的网页浏览器之一,它不仅提供了快速、安全的浏览体验,还为开发者提供了强大的开发者工具。本文将详细介绍如何使用谷歌浏览器的开发者工具,并解答一些常见问题。(本…