草庐IT

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

wudl 2023-09-28 原文

下载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

连接oracle.png

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:

flinkoracle 配置连接.png

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 10月 12 23:46 commons-cli-1.4.jar
-rw-r--r--. 1  502 games     85586 10月 12 23:46 flink-csv-1.14.5.jar
-rw-r--r--. 1  502 games 136098285 10月 12 23:47 flink-dist_2.12-1.14.5.jar
-rw-r--r--. 1 root root    7811484 10月 12 23:46 flink-doris-connector-1.14_2.12-1.0.3.jar
-rw-r--r--. 1  502 games    153142 10月 12 23:46 flink-json-1.14.5.jar
-rw-r--r--. 1 root root   59604787 10月 12 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 10月 12 23:46 flink-shaded-zookeeper-3.4.14.jar
-rw-r--r--. 1 root root   48743942 10月 12 23:47 flink-sql-connector-hive-3.1.2_2.12-1.14.5.jar
-rw-r--r--. 1 root root    3704679 10月 12 23:46 flink-sql-connector-kafka_2.12-1.14.5.jar
-rw-r--r--. 1 root root   22096298 10月 12 23:46 flink-sql-connector-mysql-cdc-2.2.1.jar
-rw-r--r--. 1 root root   25431450 10月 12 23:52 flink-sql-connector-oracle-cdc-2.2.1.jar
-rw-r--r--. 1 root root    5593716 10月 12 23:46 flink-sql-parquet_2.12-1.14.5.jar
-rw-r--r--. 1 root root     242013 10月 12 23:46 flink-statebackend-rocksdb_2.12-1.14.5.jar
-rw-r--r--. 1  502 games  39666418 10月 12 23:46 flink-table_2.12-1.14.5.jar
-rw-r--r--. 1 root root   40623961 10月 12 23:46 hive-exec-3.1.2.jar
-rw-r--r--. 1 root root   51706756 10月 12 23:46 hudi-flink1.14-bundle_2.12-0.11.1.jar
-rw-r--r--. 1 root root   40525420 10月 12 23:46 hudi-hadoop-mr-bundle-0.11.1.jar
-rw-r--r--. 1 root root   35202334 10月 12 23:46 hudi-hive-sync-bundle-0.11.1.jar
-rw-r--r--. 1 root root    7220435 10月 12 23:46 jvm-profiler-1.0.0.jar
-rw-r--r--. 1 root root    4614888 10月 12 23:46 kafka-clients-2.8.1.jar
-rw-r--r--. 1  502 games    208006 10月 12 23:46 log4j-1.2-api-2.17.1.jar
-rw-r--r--. 1  502 games    301872 10月 12 23:46 log4j-api-2.17.1.jar
-rw-r--r--. 1  502 games   1790452 10月 12 23:46 log4j-core-2.17.1.jar
-rw-r--r--. 1  502 games     24279 10月 12 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. 查看结果

flink-oracle -cdc 执行效果.png

有关FlinkSQL 14.5 CDC实现同步oracle11G 数据到mysql的更多相关文章

  1. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  2. ruby - 安装libv8(3.11.8.13)出错,Bundler无法继续 - 2

    运行bundleinstall后出现此错误:Gem::Package::FormatError:nometadatafoundin/Users/jeanosorio/.rvm/gems/ruby-1.9.3-p286/cache/libv8-3.11.8.13-x86_64-darwin-12.gemAnerroroccurredwhileinstallinglibv8(3.11.8.13),andBundlercannotcontinue.Makesurethat`geminstalllibv8-v'3.11.8.13'`succeedsbeforebundling.我试试gemin

  3. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  4. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  5. ruby - ri 有空文件 – Ubuntu 11.10, Ruby 1.9 - 2

    我正在运行Ubuntu11.10并像这样安装Ruby1.9:$sudoapt-getinstallruby1.9rubygems一切都运行良好,但ri似乎有空文档。ri告诉我文档是空的,我必须安装它们。我执行此操作是因为我读到它会有所帮助:$rdoc--all--ri现在,当我尝试打开任何文档时:$riArrayNothingknownaboutArray我搜索的其他所有内容都是一样的。 最佳答案 这个呢?apt-getinstallri1.8编辑或者试试这个:(非rvm)geminstallrdocrdoc-datardoc-da

  6. ruby - 在 Ubuntu 14.04 中使用 Curl 安装 RVM 时出错 - 2

    我试图在Ubuntu14.04中使用Curl安装RVM。我运行了以下命令:\curl-sSLhttps://get.rvm.io|bash-sstable出现如下错误:curl:(7)Failedtoconnecttoget.rvm.ioport80:Networkisunreachable非常感谢解决此问题的任何帮助。谢谢 最佳答案 在执行curl之前尝试这个:echoipv4>>~/.curlrc 关于ruby-在Ubuntu14.04中使用Curl安装RVM时出错,我们在Stack

  7. ruby - gem install pg error : couldn't understand kern. osversion `14.0.0' on Yosemite w/Ruby 2.1.5 - 2

    我使用RVM安装Ruby-2.1.5并再次运行bundle。现在pggem不会安装,我得到这个错误:geminstallpg-v'0.17.1'----with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configBuildingnativeextensionswith:'--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config'Thiscouldtakeawhile...ERROR:Error

  8. ruby - rails 3.2.2(或 3.2.1)+ Postgresql 9.1.3 + Ubuntu 11.10 连接错误 - 2

    我正在使用PostgreSQL9.1.3(x86_64-pc-linux-gnu上的PostgreSQL9.1.3,由gcc-4.6.real(Ubuntu/Linaro4.6.1-9ubuntu3)4.6.1,64位编译)和在ubuntu11.10上运行3.2.2或3.2.1。现在,我可以使用以下命令连接PostgreSQLsupostgres输入密码我可以看到postgres=#我将以下详细信息放在我的config/database.yml中并执行“railsdb”,它工作正常。开发:adapter:postgresqlencoding:utf8reconnect:falsedat

  9. ruby-on-rails - Ubuntu 14.04 Rails 丢失文件 - 2

    安装Rails时,一切都很好,但后来,我写道:rails-v和输出:/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`require':cannotloadsuchfile--rails/cli(LoadError)from/home/toshiba/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in`r

  10. 如何判断oracle是否启动及启动oracle数据库 - 2

    plsql连接Oracle超时,完犊子了肯定是服务器断电了。得马上检查Oracle服务器状态1、检查数据库是否启动su-oracle切换到Oracle用户,输入sqlplus/assysdba显示连接状态。如果末尾显示的状态是Connectedtoanidleinstance.证明未启动2、启动数据库startup启动数据库,末尾出现Databaseopened说明数据库启动成功3、查看数据库监听是否正常先quit;断开Oracle连接,使用lsnrctlstatus查看监听状态,如果出现TNS-开头的Nolistener、Connectionrefused等错误,说明监听未启动4、启动数据库

随机推荐