FlinkSQL 14.5 CDC实现同步oracle11G 数据到mysql

下载oracle

1.实现功能

oracle 11G —> flink sql ----> mysql

2. 版本

组件 版本
flink flink-1.14.5-bin-scala_2.12.tgz
flink cdc flink-sql-connector-oracle-cdc-2.2.1.jar
oracle oracle 11G

3. docker 安装oracle 11G

3.1 拉去 oracle 11G 镜像

docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

3.2 查看镜像

[root@basenode ~]# docker images
REPOSITORY                                             TAG                    IMAGE ID       CREATED         SIZE
apache/apisix                                          latest                 8ba480e550e8   5 weeks ago     249MB
myjenkinsnew                                           latest                 be1d616a2850   7 months ago    449MB
myspringbootdocker                                     1.6                    3f4e689e54db   7 months ago    682MB
centosjava8                                            1.5                    14fad190b338   8 months ago    801MB
nacos/nacos-server                                     v2.0.4                 ea54f31c46e4   8 months ago    1.07GB
jenkins/jenkins                                        latest                 55860ee0cd73   9 months ago    442MB
zookeeper                                              3.4.14                 4b03fe5b3f64   17 months ago   260MB
kibana                                                 7.12.0                 7a6b1047dd48   19 months ago   1.05GB
elasticsearch                                          7.12.0                 9337ed510a0c   19 months ago   830MB
redis                                                  6.0.8                  16ecd2772934   23 months ago   104MB
nacos/nacos-server                                     1.2.0                  763941e566bb   2 years ago     732MB
registry.cn-hangzhou.aliyuncs.com/anoy/yapi            latest                 76d11bb7c386   2 years ago     170MB
centos/mysql-57-centos7                                latest                 f83a2938370c   3 years ago     452MB
mobz/elasticsearch-head                                5                      b19a5c98e43b   5 years ago     824MB
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g   latest                 3fa112fd3642   6 years ago     6.85GB

3.3 创建容器

docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g

3.4 查看镜像id

[root@basenode ~]# docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED              STATUS              PORTS                                                                                        NAMES
efdac06ae182   registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g   "/bin/sh -c '/home/o…"   About a minute ago   Up About a minute   0.0.0.0:1521->1521/tcp, :::1521->1521/tcp                                                    oracle11g
                                                                                
[root@basenode ~]#

3.5 进入镜像进行设置

 docker exec -it efdac06ae182 bash
 su root 
# 输入密码:helowin



vi /etc/profile
# 在文件最后写上下面内容
export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2
export ORACLE_SID=helowin
export PATH=$ORACLE_HOME/bin:$PATH

# 保存后执行source /etc/profile 加载环境变量




3.6 创建软连接

ln -s $ORACLE_HOME/bin/sqlplus /usr/bin

3.7 切换oracle用户

su - oracle
 # 密码 helowin

3.8 登录sqlplus

sqlplus /nolog

SQL> conn /as sysdba

3.9 连接oracle

密码是: helowin
在这里插入图片描述

4. 进入容器配置 oracle

参考资料 https://ververica.github.io/flink-cdc-connectors/release-2.2/content/connectors/oracle-cdc.html

docker exec -it efdac06ae182 bash
# 切换到oracle用户
su - oracle
# 创建数据需要的目录,需要提前创建,否则报错目录不存在
mkdir /home/oracle/oracle-data-test
sqlplus /nolog
# 以 DBA 身份连接到数据库
SQL> conn /as sysdba

4.1 进行配置相关的参数

-- 启用日志归档
alter system set db_recovery_file_dest_size = 10G;
alter system set db_recovery_file_dest = '/home/oracle/oracle-data-test' scope=spfile;
shutdown immediate;
startup mount;
alter database archivelog;
alter database open;

-- 检查日志归档是否开启
archive log list;

-- 为捕获的数据库启用补充日志记录,以便数据更改捕获更改的数据库行之前的状态,下面说明了如何在数据库级别进行配置。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

-- 创建表空间
CREATE TABLESPACE logminer_tbs DATAFILE '/home/oracle/logminer_tbs.dbf' SIZE 25M REUSE AUTOEXTEND ON MAXSIZE UNLIMITED;

-- 创建用户family绑定表空间LOGMINER_TBS
CREATE USER family IDENTIFIED BY zyhcdc DEFAULT TABLESPACE LOGMINER_TBS QUOTA UNLIMITED ON LOGMINER_TBS;

-- 授予family用户dba的权限
 grant connect,resource,dba to family;

-- 并授予权限
  GRANT CREATE SESSION TO family;
  GRANT SELECT ON V_$DATABASE to family;
  GRANT FLASHBACK ANY TABLE TO family;
  GRANT SELECT ANY TABLE TO family;
  GRANT SELECT_CATALOG_ROLE TO family;
  GRANT EXECUTE_CATALOG_ROLE TO family;
  GRANT SELECT ANY TRANSACTION TO family;
  GRANT EXECUTE ON SYS.DBMS_LOGMNR TO family;
  GRANT SELECT ON V_$LOGMNR_CONTENTS TO family;
  GRANT CREATE TABLE TO family;
  GRANT LOCK ANY TABLE TO family;
  GRANT ALTER ANY TABLE TO family;
  GRANT CREATE SEQUENCE TO family;

  GRANT EXECUTE ON DBMS_LOGMNR TO family;
  GRANT EXECUTE ON DBMS_LOGMNR_D TO family;

  GRANT SELECT ON V_$LOG TO family;
  GRANT SELECT ON V_$LOG_HISTORY TO family;
  GRANT SELECT ON V_$LOGMNR_LOGS TO family;
  GRANT SELECT ON V_$LOGMNR_CONTENTS TO family;
  GRANT SELECT ON V_$LOGMNR_PARAMETERS TO family;
  GRANT SELECT ON V_$LOGFILE TO family;
  GRANT SELECT ON V_$ARCHIVED_LOG TO family;
  GRANT SELECT ON V_$ARCHIVE_DEST_STATUS TO family;

4.1.1 出现一个错误 需要重启启动 startup

[root@efdac06ae182 /]# su - oracle
[oracle@efdac06ae182 ~]$ sqlplus /nolog

SQL*Plus: Release 11.2.0.1.0 Production on Wed Oct 12 23:39:21 2022

Copyright (c) 1982, 2009, Oracle.  All rights reserved.

SQL> conn /as sysdba
Connected to an idle instance.
SQL> alter system set db_recovery_file_dest_size = 10G;
alter system set db_recovery_file_dest_size = 10G
*
ERROR at line 1:
ORA-01034: ORACLE not available
Process ID: 0
Session ID: 0 Serial number: 0


SQL> startup
ORACLE instance started.

Total System Global Area 1603411968 bytes
Fixed Size		    2213776 bytes
Variable Size		  402655344 bytes
Database Buffers	 1191182336 bytes
Redo Buffers		    7360512 bytes
Database mounted.
Database opened.
SQL> 

4.2Navcat连接oracle:

在这里插入图片描述

5.flink jar 包

Flink 14.5 对应jar 包

5.1 对应下载flink cdc 包

https://ververica.github.io/flink-cdc-connectors/release-2.2/content/connectors/oracle-cdc.html

5.2 查看flink 包

[root@basenode lib]# ll
总用量 526884
-rw-r--r--. 1 root root      53820 1012 23:46 commons-cli-1.4.jar
-rw-r--r--. 1  502 games     85586 1012 23:46 flink-csv-1.14.5.jar
-rw-r--r--. 1  502 games 136098285 1012 23:47 flink-dist_2.12-1.14.5.jar
-rw-r--r--. 1 root root    7811484 1012 23:46 flink-doris-connector-1.14_2.12-1.0.3.jar
-rw-r--r--. 1  502 games    153142 1012 23:46 flink-json-1.14.5.jar
-rw-r--r--. 1 root root   59604787 1012 23:46 flink-shaded-hadoop-3-uber-3.1.1.7.2.9.0-173-9.0.jar
-rw-r--r--. 1  502 games   7709731 1012 23:46 flink-shaded-zookeeper-3.4.14.jar
-rw-r--r--. 1 root root   48743942 1012 23:47 flink-sql-connector-hive-3.1.2_2.12-1.14.5.jar
-rw-r--r--. 1 root root    3704679 1012 23:46 flink-sql-connector-kafka_2.12-1.14.5.jar
-rw-r--r--. 1 root root   22096298 1012 23:46 flink-sql-connector-mysql-cdc-2.2.1.jar
-rw-r--r--. 1 root root   25431450 1012 23:52 flink-sql-connector-oracle-cdc-2.2.1.jar
-rw-r--r--. 1 root root    5593716 1012 23:46 flink-sql-parquet_2.12-1.14.5.jar
-rw-r--r--. 1 root root     242013 1012 23:46 flink-statebackend-rocksdb_2.12-1.14.5.jar
-rw-r--r--. 1  502 games  39666418 1012 23:46 flink-table_2.12-1.14.5.jar
-rw-r--r--. 1 root root   40623961 1012 23:46 hive-exec-3.1.2.jar
-rw-r--r--. 1 root root   51706756 1012 23:46 hudi-flink1.14-bundle_2.12-0.11.1.jar
-rw-r--r--. 1 root root   40525420 1012 23:46 hudi-hadoop-mr-bundle-0.11.1.jar
-rw-r--r--. 1 root root   35202334 1012 23:46 hudi-hive-sync-bundle-0.11.1.jar
-rw-r--r--. 1 root root    7220435 1012 23:46 jvm-profiler-1.0.0.jar
-rw-r--r--. 1 root root    4614888 1012 23:46 kafka-clients-2.8.1.jar
-rw-r--r--. 1  502 games    208006 1012 23:46 log4j-1.2-api-2.17.1.jar
-rw-r--r--. 1  502 games    301872 1012 23:46 log4j-api-2.17.1.jar
-rw-r--r--. 1  502 games   1790452 1012 23:46 log4j-core-2.17.1.jar
-rw-r--r--. 1  502 games     24279 1012 23:46 log4j-slf4j-impl-2.17.1.jar
[root@basenode lib]# 

5.2 启动flink 执行sql


Flink SQL> SET sql-client.execution.result-mode = tableau;
[INFO] Session property has been set.

Flink SQL> CREATE TABLE student_info(
>   SID INT NOT NULL,          
>   SNAME STRING,
>   SEX STRING,
>   PRIMARY KEY(SID) NOT ENFORCED
>   ) WITH (
>   'connector' = 'oracle-cdc',
>   'hostname' = '192.168.1.180',
>   'port' = '1521',
>   'username' = 'family',
>   'password' = 'zyhcdc',
>   'database-name' = 'helowin',
>   'schema-name' = 'FAMILY',
>   'table-name' = 'STUDENT_INFO',
>   'debezium.log.mining.continuous.mine'='true',
>   'debezium.log.mining.strategy'='online_catalog',
>   'debezium.database.tablename.case.insensitive'='false',
>   'scan.startup.mode' = 'initial');
[INFO] Execute statement succeed.

Flink SQL> select * from  student_info;
+----+-------------+--------------------------------+--------------------------------+
| op |         SID |                          SNAME |                            SEX |
+----+-------------+--------------------------------+--------------------------------+
| +I |           1 |                          flink |                             nv |
| +I |           2 |                       flinksql |                             na |

6. 查看结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/wudonglianga/article/details/127292792