国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證 flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證

這篇具有很好參考價(jià)值的文章主要介紹了flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證 flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

?搜索

flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證

文章目錄

  • 1. 前言
  • 2. 數(shù)據(jù)源安裝與配置
  • 2.1 MySQL
  • 2.1.1 安裝
  • 2.1.2 CDC 配置
  • 2.2 Postgresql
  • 2.2.1 安裝
  • 2.2.2 CDC 配置
  • 2.3 Oracle
  • 2.3.1 安裝
  • 2.3.2 CDC 配置
  • 2.4 SQLServer
  • 2.4.1 安裝
  • 2.4.2 CDC 配置
  • 3. 驗(yàn)證
  • 3.1 Flink版本與CDC版本的對(duì)應(yīng)關(guān)系
  • 3.2 下載相關(guān)包
  • 3.3 添加cdc jar 至lib目錄
  • 3.4 驗(yàn)證

本文目錄結(jié)構(gòu)

|___ 1. 前言
|___ 2. 數(shù)據(jù)源安裝與配置
|______ 2.1 MySQL
|_________ 2.1.1 安裝
|_________ 2.1.2 CDC 配置
|______ 2.2 Postgresql
|_________ 2.2.1 安裝
|_________ 2.2.2 CDC 配置
|______ 2.3 Oracle
|_________2.3.1 安裝
|_________2.3.2 CDC 配置
|_______2.4 SQLServer
|_________2.4.1 安裝
|_________2.4.2 CDC 配置
|___ 3. 驗(yàn)證
|_______3.1 Flink版本與CDC版本的對(duì)應(yīng)關(guān)系
|_______3.2 下載相關(guān)包
|_______3.3 添加cdc jar 至lib目錄
|_______3.4 驗(yàn)證


1. 前言

關(guān)于如何使用和配置flink cdc功能,其實(shí)在官方文檔(CDC Connectors for Apache Flink? — CDC Connectors for Apache Flink? documentation)有相關(guān)的教程了,如下:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

但是講解的不是很詳細(xì),比如數(shù)據(jù)源怎么安裝?怎么配置?都沒(méi)有很詳細(xì)的描述每一步驟,因此博主前面發(fā)布多篇文章以此來(lái)記錄flink cdc相關(guān)數(shù)據(jù)源以及其配置相關(guān)的文章,有興趣的同學(xué)可以參考下:

  • 《docker下安裝oracle11g(一次安裝成功)》
  • 《Docker下安裝SqlServer2019》
  • 《flink postgresql cdc實(shí)時(shí)同步(含pg安裝配置等)》
  • 《flink oracle cdc實(shí)時(shí)同步(超詳細(xì))》
  • 《flink sqlserver cdc實(shí)時(shí)同步(含sqlserver安裝配置等)》

本文主要就是記錄在docker下安裝和配置各種數(shù)據(jù)源,以實(shí)現(xiàn)flink cdc的功能,包含如下常見(jiàn)的數(shù)據(jù)源:

數(shù)據(jù)源 版本
MySQL 8.0.25
Postgresql 10.6
Oracle 11g
SqlServer 2019

2. 數(shù)據(jù)源安裝與配置

2.1 MySQL

版本:8.0.25

2.1.1 安裝

Step1: 拉取mysql鏡像:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull mysql:8.0.25
</code></span></span></span></span>

Step2: 創(chuàng)建并運(yùn)行 MySQL 容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-d</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30025</span>:3306 <span style="color:#ee9900">--name</span> mysql8.0.25 <span style="color:#ee9900">-e</span> <span style="color:#ee9900">MYSQL_ROOT_PASSWORD</span><span style="color:#6272a4">=</span>root mysql:8.0.25
</code></span></span></span></span>
  • 1

2.1.2?CDC?配置

Step1:進(jìn)入正在運(yùn)行的mysql容器:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> mysql8.0.25 mysql <span style="color:#ee9900">-uroot</span> <span style="color:#ee9900">-proot</span>
</code></span></span></span></span>
  • 1

Step2:配置 CDC

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 啟用二進(jìn)制日志</span>
mysql<span style="color:#6272a4">></span> <span style="color:#ff79c6">SET</span> <span style="color:#ff79c6">GLOBAL</span> log_bin <span style="color:#6272a4">=</span> <span style="color:#ff79c6">ON</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 設(shè)置二進(jìn)制日志格式為行級(jí)別</span>
mysql<span style="color:#6272a4">></span> <span style="color:#ff79c6">SET</span> <span style="color:#ff79c6">GLOBAL</span> binlog_format <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'ROW'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

Step3(非必要):如果配置沒(méi)生效,重啟容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> restart mysql8.0.25
</code></span></span></span></span>
  • 1

2.2 Postgresql

版本:PostgreSQL 10.6 (Debian 10.6-1.pgdg90+1)

2.2.1 安裝

Step1: 拉取 PostgreSQL 10.6 版本的鏡像:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull postgres:10.6
</code></span></span></span></span>
  • 1

Step2:創(chuàng)建并啟動(dòng)?PostgreSQL?容器,在這里,我們將把容器的端口 5432 映射到主機(jī)的端口 30028,賬號(hào)密碼設(shè)置為postgres,并將?pgoutput?插件加載到?PostgreSQL?實(shí)例中:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-d</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30028</span>:5432 <span style="color:#ee9900">--name</span> postgres-10.6 <span style="color:#ee9900">-e</span> <span style="color:#ee9900">POSTGRES_PASSWORD</span><span style="color:#6272a4">=</span>postgres postgres:10.6 <span style="color:#ee9900">-c</span> <span style="color:#f1fa8c">'shared_preload_libraries=pgoutput'</span>
</code></span></span></span></span>
  • 1

Step3: 查看容器是否創(chuàng)建成功:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#8be9fd">ps</span> <span style="color:#6272a4">|</span> <span style="color:#8be9fd">grep</span> postgres-10.6
</code></span></span></span></span>
  • 1

2.2.2 CDC 配置

Step1:docker進(jìn)去Postgresql數(shù)據(jù)的容器:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> postgres-10.6  <span style="color:#8be9fd">bash</span>
</code></span></span></span></span>
  • 1

Step2:編輯postgresql.conf配置文件:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">vi</span> /var/lib/postgresql/data/postgresql.conf 
</code></span></span></span></span>
  • 1

配置內(nèi)容如下:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-py"><span style="color:#6272a4"># 更改wal日志方式為logical(方式有:minimal、replica 、logical  )</span>
wal_level <span style="color:#6272a4">=</span> logical  

<span style="color:#6272a4"># 更改solts最大數(shù)量(默認(rèn)值為10),flink-cdc默認(rèn)一張表占用一個(gè)slots</span>
max_replication_slots <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">20</span>

<span style="color:#6272a4"># 更改wal發(fā)送最大進(jìn)程數(shù)(默認(rèn)值為10),這個(gè)值和上面的solts設(shè)置一樣</span>
max_wal_senders <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">20</span>     

<span style="color:#6272a4"># 中斷那些停止活動(dòng)超過(guò)指定毫秒數(shù)的復(fù)制連接,可以適當(dāng)設(shè)置大一點(diǎn)(默認(rèn)60s,0表示禁用)</span>
wal_sender_timeout <span style="color:#6272a4">=</span> 180s	          
</code></span></span></span></span>

Step3:重啟容器:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> restart postgres-10.6
</code></span></span></span></span>
  • 1

連接數(shù)據(jù)庫(kù),如果查詢一下語(yǔ)句,返回logical表示修改成功:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#ff79c6">SHOW</span> wal_level<span style="color:#999999">;</span>
</code></span></span></span></span>
  • 1

Step4:新建用戶并賦權(quán)。使用創(chuàng)建容器時(shí)的賬號(hào)密碼(postgres/postgres)登錄Postgresql數(shù)據(jù)庫(kù)。

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建數(shù)據(jù)庫(kù) test_db</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">DATABASE</span> test_db<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 連接到新創(chuàng)建的數(shù)據(jù)庫(kù) test_db</span>
\c test_db

<span style="color:#6272a4">-- 創(chuàng)建 t_user 表</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#f1fa8c">"public"</span><span style="color:#999999">.</span><span style="color:#f1fa8c">"t_user"</span> <span style="color:#999999">(</span>
    <span style="color:#f1fa8c">"id"</span> int8 <span style="color:#6272a4">NOT</span> <span style="color:#8be9fd">NULL</span><span style="color:#999999">,</span>
    <span style="color:#f1fa8c">"name"</span> <span style="color:#ff79c6">varchar</span><span style="color:#999999">(</span><span style="color:#f1fa8c">255</span><span style="color:#999999">)</span><span style="color:#999999">,</span>
    <span style="color:#f1fa8c">"age"</span> int2<span style="color:#999999">,</span>
    <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span> <span style="color:#999999">(</span><span style="color:#f1fa8c">"id"</span><span style="color:#999999">)</span>
<span style="color:#999999">)</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- pg新建用戶</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">USER</span> test1 <span style="color:#ff79c6">WITH</span> PASSWORD <span style="color:#f1fa8c">'test123'</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 給用戶復(fù)制流權(quán)限</span>
<span style="color:#ff79c6">ALTER</span> ROLE test1 <span style="color:#ff79c6">replication</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 給用戶登錄數(shù)據(jù)庫(kù)權(quán)限</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CONNECT</span> <span style="color:#ff79c6">ON</span> <span style="color:#ff79c6">DATABASE</span> test_db <span style="color:#ff79c6">to</span> test1<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 把當(dāng)前庫(kù)public下所有表查詢權(quán)限賦給用戶</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">ALL</span> <span style="color:#ff79c6">PRIVILEGES</span> <span style="color:#ff79c6">ON</span> <span style="color:#ff79c6">ALL</span> <span style="color:#ff79c6">TABLES</span> <span style="color:#6272a4">IN</span> <span style="color:#ff79c6">SCHEMA</span> <span style="color:#ff79c6">public</span> <span style="color:#ff79c6">TO</span> test1<span style="color:#999999">;</span>

</code></span></span></span></span>

Step4:發(fā)布表:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 設(shè)置發(fā)布為true</span>
<span style="color:#ff79c6">update</span> pg_publication <span style="color:#ff79c6">set</span> puballtables<span style="color:#6272a4">=</span><span style="color:#8be9fd">true</span> <span style="color:#ff79c6">where</span> pubname <span style="color:#6272a4">is</span> <span style="color:#6272a4">not</span> <span style="color:#8be9fd">null</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 把所有表進(jìn)行發(fā)布</span>
<span style="color:#ff79c6">CREATE</span> PUBLICATION dbz_publication <span style="color:#ff79c6">FOR</span> <span style="color:#ff79c6">ALL</span> <span style="color:#ff79c6">TABLES</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 查詢哪些表已經(jīng)發(fā)布</span>
<span style="color:#ff79c6">select</span> <span style="color:#6272a4">*</span> <span style="color:#ff79c6">from</span> pg_publication_tables<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 更改復(fù)制標(biāo)識(shí)包含更新和刪除之前值(目的是為了確保表 t_user 在實(shí)時(shí)同步過(guò)程中能夠正確地捕獲并同步更新和刪除的數(shù)據(jù)變化。如果不執(zhí)行這兩條語(yǔ)句,那么 t_user 表的復(fù)制標(biāo)識(shí)可能默認(rèn)為 NOTHING,這可能導(dǎo)致實(shí)時(shí)同步時(shí)丟失更新和刪除的數(shù)據(jù)行信息,從而影響同步的準(zhǔn)確性)</span>
<span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">TABLE</span> t_user REPLICA <span style="color:#ff79c6">IDENTITY</span> <span style="color:#ff79c6">FULL</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 查看復(fù)制標(biāo)識(shí)(為f標(biāo)識(shí)說(shuō)明設(shè)置成功,f(表示 full),否則為 n(表示 nothing),即復(fù)制標(biāo)識(shí)未設(shè)置)</span>
<span style="color:#ff79c6">select</span> relreplident <span style="color:#ff79c6">from</span> pg_class <span style="color:#ff79c6">where</span> relname<span style="color:#6272a4">=</span><span style="color:#f1fa8c">'t_user'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

2.3 Oracle

版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

2.3.1 安裝

Step1:拉取 oracle 11g 鏡像(有6g,要等較長(zhǎng)的時(shí)間)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
</code></span></span></span></span>
  • 1

Step2:執(zhí)行以下命令以創(chuàng)建并運(yùn)行 Oracle 11g 容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-d</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30026</span>:1521 <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">8081</span>:8080 <span style="color:#999999">\</span>
<span style="color:#ee9900">--name</span> oracle_11g <span style="color:#999999">\</span>
<span style="color:#ee9900">-e</span> <span style="color:#ee9900">ORACLE_HOME</span><span style="color:#6272a4">=</span>/home/oracle/app/oracle/product/11.2.0/dbhome_2 <span style="color:#999999">\</span>
<span style="color:#ee9900">-e</span> <span style="color:#ee9900">ORACLE_SID</span><span style="color:#6272a4">=</span>helowin <span style="color:#999999">\</span>
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
</code></span></span></span></span>

Step3:查看容器是否啟動(dòng)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#8be9fd">ps</span> -a<span style="color:#6272a4">|</span><span style="color:#8be9fd">grep</span> oracle_11g
</code></span></span></span></span>

Step4:進(jìn)入容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> oracle_11g <span style="color:#8be9fd">bash</span>
</code></span></span></span></span>

**Step5:**設(shè)置賬號(hào)密碼

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#6272a4"># 1. 切換至root用戶(默認(rèn)是oracle用戶),密碼為helowin</span>
<span style="color:#8be9fd">su</span> root

<span style="color:#6272a4"># 2. 創(chuàng)建軟鏈接</span>
<span style="color:#8be9fd">ln</span> <span style="color:#ee9900">-s</span> <span style="color:#ee9900">$ORACLE_HOME</span>/bin/sqlplus /usr/bin

<span style="color:#6272a4"># 3.切換回oracle用戶</span>
<span style="color:#8be9fd">su</span> oracle

<span style="color:#6272a4"># 4. 登錄sql plus</span>
sqlplus /nolog
conn /as sysdba
<span style="color:#6272a4">## 4.1 修改system用戶密碼為system</span>
alter user system identified by system<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.2 修改sys用戶密碼為system</span>
alter user sys identified by system<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.3 新增一個(gè)測(cè)試用戶(用戶名:test,密碼:test123);</span>
create user <span style="color:#f1fa8c">test</span> identified by test123<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.4 將dba權(quán)限給內(nèi)部管理員賬號(hào)和密碼</span>
grant connect,resource,dba to <span style="color:#f1fa8c">test</span><span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.5 修改密碼策略規(guī)則為:密碼永不過(guò)期</span>
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.6 修改數(shù)據(jù)庫(kù)最大連接數(shù);</span>
alter system <span style="color:#f1fa8c">set</span> <span style="color:#ee9900">processes</span><span style="color:#6272a4">=</span><span style="color:#f1fa8c">1000</span> <span style="color:#ee9900">scope</span><span style="color:#6272a4">=</span>spfile<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.7 最后重啟數(shù)據(jù)庫(kù);</span>
<span style="color:#8be9fd">shutdown</span> immediate<span style="color:#999999">;</span>
startup<span style="color:#999999">;</span>

<span style="color:#6272a4"># 5.退出</span>
<span style="color:#f1fa8c">exit</span>
</code></span></span></span></span>

2.3.2 CDC 配置

Step1:進(jìn)入容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> oracle_11g <span style="color:#8be9fd">bash</span>
</code></span></span></span></span>

Step2:以DBA的權(quán)限登錄數(shù)據(jù)庫(kù)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql">sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> sys<span style="color:#6272a4">/</span>system <span style="color:#ff79c6">AS</span> SYSDBA
</code></span></span></span></span>

Step3:?jiǎn)⒂萌罩練w檔

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 設(shè)置數(shù)據(jù)庫(kù)恢復(fù)文件目標(biāo)大小為10G</span>
<span style="color:#ff79c6">alter</span> system <span style="color:#ff79c6">set</span> db_recovery_file_dest_size <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">10</span>G<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 設(shè)置數(shù)據(jù)庫(kù)恢復(fù)文件目標(biāo)路徑</span>
<span style="color:#ff79c6">alter</span> system <span style="color:#ff79c6">set</span> db_recovery_file_dest <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'/home/oracle/app/oracle/product/11.2.0'</span> scope<span style="color:#6272a4">=</span>spfile<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 立即關(guān)閉數(shù)據(jù)庫(kù)</span>
<span style="color:#ff79c6">shutdown</span> immediate<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 以mount模式啟動(dòng)數(shù)據(jù)庫(kù)</span>
startup mount<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 啟用數(shù)據(jù)庫(kù)歸檔日志模式</span>
<span style="color:#ff79c6">alter</span> <span style="color:#ff79c6">database</span> archivelog<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 打開(kāi)數(shù)據(jù)庫(kù),允許用戶訪問(wèn)</span>
<span style="color:#ff79c6">alter</span> <span style="color:#ff79c6">database</span> <span style="color:#ff79c6">open</span><span style="color:#999999">;</span>
</code></span></span></span></span>

Step4:查看日志歸檔是否啟用(如果顯示“Archive Mode”表示已經(jīng)啟用)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql">archive log list<span style="color:#999999">;</span>
</code></span></span></span></span>
  • 1

Step5:創(chuàng)建表空間

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 以DBA的權(quán)限登錄數(shù)據(jù)庫(kù)</span>
sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> sys<span style="color:#6272a4">/</span>system <span style="color:#ff79c6">AS</span> SYSDBA
<span style="color:#6272a4">-- 創(chuàng)建一個(gè)名為"logminer_tbs"的表空間</span>
<span style="color:#6272a4">-- 指定表空間的數(shù)據(jù)文件路徑為"/home/oracle/app/oracle/product/11.2.0/logminer_tbs.dbf",其中"/home/oracle/app/oracle/product/11.2.0"是數(shù)據(jù)文件存儲(chǔ)的目錄,"logminer_tbs.dbf"是數(shù)據(jù)文件的文件名</span>
<span style="color:#6272a4">-- 設(shè)置表空間的初始大小為25MB</span>
<span style="color:#6272a4">-- 如果數(shù)據(jù)文件已經(jīng)存在且可重用,將其重用,否則創(chuàng)建一個(gè)新的數(shù)據(jù)文件</span>
<span style="color:#6272a4">-- 啟用表空間的自動(dòng)擴(kuò)展功能,即當(dāng)表空間空間不足時(shí),自動(dòng)增加數(shù)據(jù)文件的大小</span>
<span style="color:#6272a4">-- 設(shè)置表空間的最大允許大小為無(wú)限,即表空間可以無(wú)限制地自動(dòng)擴(kuò)展</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLESPACE</span> logminer_tbs DATAFILE <span style="color:#f1fa8c">'/home/oracle/app/oracle/product/11.2.0/logminer_tbs.dbf'</span> SIZE <span style="color:#f1fa8c">25</span>M REUSE AUTOEXTEND <span style="color:#ff79c6">ON</span> MAXSIZE UNLIMITED<span style="color:#999999">;</span>
</code></span></span></span></span>

Step6:創(chuàng)建用戶并賦權(quán)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建一個(gè)名為"flinkuser"的用戶,密碼為"flinkpw",將其默認(rèn)表空間設(shè)置為"LOGMINER_TBS",并在該表空間上設(shè)置無(wú)限配額。</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">USER</span> flinkuser IDENTIFIED <span style="color:#ff79c6">BY</span> flinkpw <span style="color:#ff79c6">DEFAULT</span> <span style="color:#ff79c6">TABLESPACE</span> LOGMINER_TBS QUOTA UNLIMITED <span style="color:#ff79c6">ON</span> LOGMINER_TBS<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶創(chuàng)建會(huì)話,即允許該用戶連接到數(shù)據(jù)庫(kù)。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">SESSION</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- (不支持Oracle 11g)允許"flinkuser"用戶在多租戶數(shù)據(jù)庫(kù)(CDB)中設(shè)置容器。</span>
<span style="color:#6272a4">-- GRANT SET CONTAINER TO flinkuser;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$DATABASE視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)實(shí)例的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$<span style="color:#ff79c6">DATABASE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶執(zhí)行任何表的閃回操作。</span>
<span style="color:#ff79c6">GRANT</span> FLASHBACK <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢?nèi)魏伪淼臄?shù)據(jù)。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶擁有SELECT_CATALOG_ROLE角色,該角色允許查詢數(shù)據(jù)字典和元數(shù)據(jù)。</span>
<span style="color:#ff79c6">GRANT</span> SELECT_CATALOG_ROLE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶擁有EXECUTE_CATALOG_ROLE角色,該角色允許執(zhí)行一些數(shù)據(jù)字典中的過(guò)程和函數(shù)。</span>
<span style="color:#ff79c6">GRANT</span> EXECUTE_CATALOG_ROLE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢?nèi)魏问聞?wù)。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TRANSACTION</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- (不支持Oracle 11g)允許"flinkuser"用戶進(jìn)行數(shù)據(jù)變更追蹤(LogMiner)。</span>
<span style="color:#6272a4">-- GRANT LOGMINING TO flinkuser;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶創(chuàng)建表。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶鎖定任何表。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">LOCK</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶修改任何表。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶創(chuàng)建序列。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CREATE</span> SEQUENCE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶執(zhí)行DBMS_LOGMNR包中的過(guò)程。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">EXECUTE</span> <span style="color:#ff79c6">ON</span> DBMS_LOGMNR <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶執(zhí)行DBMS_LOGMNR_D包中的過(guò)程。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">EXECUTE</span> <span style="color:#ff79c6">ON</span> DBMS_LOGMNR_D <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOG視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOG <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOG_HISTORY視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)歷史日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOG_HISTORY <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGMNR_LOGS視圖,該視圖包含有關(guān)LogMiner日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGMNR_LOGS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGMNR_CONTENTS視圖,該視圖包含LogMiner日志文件的內(nèi)容。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGMNR_CONTENTS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGMNR_PARAMETERS視圖,該視圖包含有關(guān)LogMiner的參數(shù)信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGMNR_PARAMETERS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGFILE視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGFILE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$ARCHIVED_LOG視圖,該視圖包含已歸檔的數(shù)據(jù)庫(kù)日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$ARCHIVED_LOG <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$ARCHIVE_DEST_STATUS視圖,該視圖包含有關(guān)歸檔目標(biāo)狀態(tài)的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$ARCHIVE_DEST_STATUS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>
</code></span></span></span></span>

Step7:數(shù)據(jù)庫(kù)和表啟用增量日志

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 切換至flinkuser用戶</span>
sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> flinkuser<span style="color:#6272a4">/</span>flinkpw

<span style="color:#6272a4">-- 創(chuàng)建customers表</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> customers <span style="color:#999999">(</span>
    customer_id NUMBER <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span><span style="color:#999999">,</span>
    customer_name VARCHAR2<span style="color:#999999">(</span><span style="color:#f1fa8c">50</span><span style="color:#999999">)</span><span style="color:#999999">,</span>
    email VARCHAR2<span style="color:#999999">(</span><span style="color:#f1fa8c">100</span><span style="color:#999999">)</span><span style="color:#999999">,</span>
    phone VARCHAR2<span style="color:#999999">(</span><span style="color:#f1fa8c">20</span><span style="color:#999999">)</span>
<span style="color:#999999">)</span> <span style="color:#ff79c6">TABLESPACE</span> LOGMINER_TBS<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 查看LOGMINER_TBS表空間下的所有表</span>
<span style="color:#ff79c6">select</span> tablespace_name<span style="color:#999999">,</span> table_name <span style="color:#ff79c6">from</span> user_tables
<span style="color:#ff79c6">where</span> tablespace_name <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'LOGMINER_TBS'</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 以DBA的權(quán)限登錄數(shù)據(jù)庫(kù)</span>
sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> sys<span style="color:#6272a4">/</span>system <span style="color:#ff79c6">AS</span> SYSDBA

<span style="color:#6272a4">-- 為L(zhǎng)OGMINER_TBS表空間下的customers表啟用增強(qiáng)日志記錄</span>
<span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">TABLE</span> FLINKUSER<span style="color:#999999">.</span>CUSTOMERS <span style="color:#ff79c6">ADD</span> SUPPLEMENTAL LOG <span style="color:#ff79c6">DATA</span> <span style="color:#999999">(</span><span style="color:#ff79c6">ALL</span><span style="color:#999999">)</span> <span style="color:#ff79c6">COLUMNS</span>

<span style="color:#6272a4">-- 為數(shù)據(jù)庫(kù)啟用增強(qiáng)日志記錄:</span>
<span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">DATABASE</span> <span style="color:#ff79c6">ADD</span> SUPPLEMENTAL LOG <span style="color:#ff79c6">DATA</span><span style="color:#999999">;</span>
</code></span></span></span></span>

2.4 SQLServer

版本:Microsoft SQL Server 2019 (RTM-CU21) (KB5025808) - 15.0.4316.3 (X64)

2.4.1 安裝

Step1:拉取SQL Server 2019 鏡像

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull mcr.microsoft.com/mssql/server:2019-latest
</code></span></span></span></span>

Step2:運(yùn)行 SQL Server 容器(密碼必須是8個(gè)字符,并包含字母、數(shù)字和特殊字符,如:abc@123456 ,下面映射主機(jī)端口為30027)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-e</span> <span style="color:#f1fa8c">'ACCEPT_EULA=Y'</span> <span style="color:#ee9900">-e</span> <span style="color:#f1fa8c">'SA_PASSWORD=abc@123456'</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30027</span>:1433 <span style="color:#ee9900">--name</span> sql_server_2019 <span style="color:#ee9900">-d</span> mcr.microsoft.com/mssql/server:2019-latest
</code></span></span></span></span>

Step3:驗(yàn)證 SQL Server 容器是否正在運(yùn)行

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code>docker ps -a|grep sql_server_2019
</code></span></span></span></span>

2.4.2 CDC 配置

Step1:開(kāi)啟SQLServer代理

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#6272a4">## 使用root用戶登錄容器</span>
<span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> <span style="color:#ee9900">--user</span> root sql_server_2019 <span style="color:#8be9fd">bash</span>

<span style="color:#6272a4">## 進(jìn)入容器后,執(zhí)行命令啟用Agent</span>
/opt/mssql/bin/mssql-conf <span style="color:#f1fa8c">set</span> sqlagent.enabled <span style="color:#8be9fd">true</span>

<span style="color:#6272a4">## 退出,重啟容器</span>
<span style="color:#f1fa8c">exit</span>
<span style="color:#8be9fd">docker</span> restart sql_server_2019
</code></span></span></span></span>

Step2:創(chuàng)建’cdc_test’測(cè)試數(shù)據(jù)庫(kù),并使用連接工具登錄該數(shù)據(jù)庫(kù),使用以下 SQL 命令啟用 CDC 功能

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建數(shù)據(jù)庫(kù)</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">DATABASE</span> cdc_test<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 啟用CDC功能</span>
<span style="color:#ff79c6">EXEC</span> sys<span style="color:#999999">.</span>sp_cdc_enable_db<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 判斷當(dāng)前數(shù)據(jù)庫(kù)是否啟用了CDC(如果返回1,表示已啟用)</span>
<span style="color:#ff79c6">SELECT</span> is_cdc_enabled <span style="color:#ff79c6">FROM</span> sys<span style="color:#999999">.</span><span style="color:#ff79c6">databases</span> <span style="color:#ff79c6">WHERE</span> name <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'cdc_test'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

Step3:選擇要進(jìn)行 CDC 跟蹤的表(這里使用orders表作為演示

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建示例表(orders)</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> orders <span style="color:#999999">(</span>
     id <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     order_date <span style="color:#ff79c6">date</span><span style="color:#999999">,</span>
     purchaser <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     quantity <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     product_id <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span> <span style="color:#999999">(</span><span style="color:#999999">[</span>id<span style="color:#999999">]</span><span style="color:#999999">)</span>
<span style="color:#999999">)</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- schema_name 是表所屬的架構(gòu)(schema)的名稱。</span>
<span style="color:#6272a4">-- table_name 是要啟用 CDC 跟蹤的表的名稱。</span>
<span style="color:#6272a4">-- cdc_role 是 CDC 使用的角色的名稱。如果沒(méi)有指定角色名稱,系統(tǒng)將創(chuàng)建一個(gè)默認(rèn)角色。</span>
<span style="color:#ff79c6">EXEC</span> sys<span style="color:#999999">.</span>sp_cdc_enable_table
  <span style="color:#ee9900">@source_schema</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'dbo'</span><span style="color:#999999">,</span>
  <span style="color:#ee9900">@source_name</span>   <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'orders'</span><span style="color:#999999">,</span>
  <span style="color:#ee9900">@role_name</span>     <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'cdc_role'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

3. 驗(yàn)證

如果要驗(yàn)證flink cdc的功能,需要先下載flink的安裝包,然后下載相應(yīng)的cdc jar包并依賴,最后使用安裝包里面的sql-client寫相關(guān)的flink sql即可驗(yàn)證。

3.1 Flink版本與CDC版本的對(duì)應(yīng)關(guān)系

下載Flink安裝包以及jar包前,必須確定Flink CDC與Flink版本關(guān)系:

Flink CDC 版本 Flink 版本
1.0.0 1.11.*
1.1.0 1.11.*
1.2.0 1.12.*
1.3.0 1.12.*
1.4.0 1.13.*
2.0.* 1.13.*
2.1.* 1.13.*
2.2.* 1.13.*,?1.14.*
2.3.* 1.13.*,?1.14.*,?1.15.*,?1.16.0
2.4.* 1.13.*,?1.14.*,?1.15.*,?1.16.*,?1.17.0

本文以?Flink1.13.6?+?Flink CDC 2.2.0?版本為例子演示。

3.2 下載相關(guān)包

flink 安裝包下載,下載地址:Downloads | Apache Flink
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

下載cdc相關(guān)的jar,根據(jù)自己的需求,下載相關(guān)的cdc jar:Central Repository: com/ververica
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

3.3 添加cdc jar 至lib目錄

把需要驗(yàn)證的cdc jar放到flink安裝包解壓之后的lib目錄(<FLINK_HOME>/lib/):
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

3.4 驗(yàn)證

使用下面的命令啟動(dòng) Flink 集群:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell">./bin/start-cluster.sh
</code></span></span></span></span>

啟動(dòng)成功,可以訪問(wèn)?http://localhost:8081?訪問(wèn)到 Flink Web UI:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
使用下面的命令啟動(dòng) Flink SQL CLI :

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell">./bin/sql-client.sh
</code></span></span></span></span>

展示如下頁(yè)面,表示啟動(dòng)flink客戶端成功:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
執(zhí)行如下FlinkSQL:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> t_source_sqlserver <span style="color:#999999">(</span>
   id <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    order_date <span style="color:#ff79c6">DATE</span><span style="color:#999999">,</span>
    purchaser <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    quantity <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    product_id <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span> <span style="color:#999999">(</span>id<span style="color:#999999">)</span> <span style="color:#6272a4">NOT</span> ENFORCED
<span style="color:#999999">)</span> <span style="color:#ff79c6">WITH</span> <span style="color:#999999">(</span>
  <span style="color:#f1fa8c">'connector'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'sqlserver-cdc'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'hostname'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'10.194.183.120'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'port'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'30027'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'username'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'sa'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'password'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'abc@123456'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'database-name'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'cdc_test'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'schema-name'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'dbo'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'table-name'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'orders'</span>
<span style="color:#999999">)</span><span style="color:#999999">;</span>
</code></span></span></span></span>

可以看到執(zhí)行成功了:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
執(zhí)行select 語(yǔ)句,以便實(shí)時(shí)查看該表的數(shù)據(jù)變動(dòng):

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#ff79c6">select</span> <span style="color:#6272a4">*</span> <span style="color:#ff79c6">from</span> t_source_sqlserver<span style="color:#999999">;</span>
</code></span></span></span></span>

從下圖,可以看出,只要修改左邊的數(shù)據(jù),會(huì)在控制臺(tái)實(shí)時(shí)顯示新增刪除的數(shù)據(jù)。
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
同時(shí),也能在Flink web頁(yè)面看到任務(wù)正在運(yùn)行:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

最后,可以通過(guò)如下命令關(guān)閉掉Flink啟動(dòng)的集群:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-703092.html

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell">./stop-cluster.sh
</code></span></span></span></span>

文章目錄

  • 1. 前言
  • 2. 數(shù)據(jù)源安裝與配置
  • 2.1 MySQL
  • 2.1.1 安裝
  • 2.1.2 CDC 配置
  • 2.2 Postgresql
  • 2.2.1 安裝
  • 2.2.2 CDC 配置
  • 2.3 Oracle
  • 2.3.1 安裝
  • 2.3.2 CDC 配置
  • 2.4 SQLServer
  • 2.4.1 安裝
  • 2.4.2 CDC 配置
  • 3. 驗(yàn)證
  • 3.1 Flink版本與CDC版本的對(duì)應(yīng)關(guān)系
  • 3.2 下載相關(guān)包
  • 3.3 添加cdc jar 至lib目錄
  • 3.4 驗(yàn)證

本文目錄結(jié)構(gòu)

|___ 1. 前言
|___ 2. 數(shù)據(jù)源安裝與配置
|______ 2.1 MySQL
|_________ 2.1.1 安裝
|_________ 2.1.2 CDC 配置
|______ 2.2 Postgresql
|_________ 2.2.1 安裝
|_________ 2.2.2 CDC 配置
|______ 2.3 Oracle
|_________2.3.1 安裝
|_________2.3.2 CDC 配置
|_______2.4 SQLServer
|_________2.4.1 安裝
|_________2.4.2 CDC 配置
|___ 3. 驗(yàn)證
|_______3.1 Flink版本與CDC版本的對(duì)應(yīng)關(guān)系
|_______3.2 下載相關(guān)包
|_______3.3 添加cdc jar 至lib目錄
|_______3.4 驗(yàn)證


1. 前言

關(guān)于如何使用和配置flink cdc功能,其實(shí)在官方文檔(CDC Connectors for Apache Flink? — CDC Connectors for Apache Flink? documentation)有相關(guān)的教程了,如下:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

但是講解的不是很詳細(xì),比如數(shù)據(jù)源怎么安裝?怎么配置?都沒(méi)有很詳細(xì)的描述每一步驟,因此博主前面發(fā)布多篇文章以此來(lái)記錄flink cdc相關(guān)數(shù)據(jù)源以及其配置相關(guān)的文章,有興趣的同學(xué)可以參考下:

  • 《docker下安裝oracle11g(一次安裝成功)》
  • 《Docker下安裝SqlServer2019》
  • 《flink postgresql cdc實(shí)時(shí)同步(含pg安裝配置等)》
  • 《flink oracle cdc實(shí)時(shí)同步(超詳細(xì))》
  • 《flink sqlserver cdc實(shí)時(shí)同步(含sqlserver安裝配置等)》

本文主要就是記錄在docker下安裝和配置各種數(shù)據(jù)源,以實(shí)現(xiàn)flink cdc的功能,包含如下常見(jiàn)的數(shù)據(jù)源:

數(shù)據(jù)源 版本
MySQL 8.0.25
Postgresql 10.6
Oracle 11g
SqlServer 2019

2. 數(shù)據(jù)源安裝與配置

2.1 MySQL

版本:8.0.25

2.1.1 安裝

Step1: 拉取mysql鏡像:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull mysql:8.0.25
</code></span></span></span></span>

Step2: 創(chuàng)建并運(yùn)行 MySQL 容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-d</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30025</span>:3306 <span style="color:#ee9900">--name</span> mysql8.0.25 <span style="color:#ee9900">-e</span> <span style="color:#ee9900">MYSQL_ROOT_PASSWORD</span><span style="color:#6272a4">=</span>root mysql:8.0.25
</code></span></span></span></span>
  • 1

2.1.2?CDC?配置

Step1:進(jìn)入正在運(yùn)行的mysql容器:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> mysql8.0.25 mysql <span style="color:#ee9900">-uroot</span> <span style="color:#ee9900">-proot</span>
</code></span></span></span></span>
  • 1

Step2:配置 CDC

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 啟用二進(jìn)制日志</span>
mysql<span style="color:#6272a4">></span> <span style="color:#ff79c6">SET</span> <span style="color:#ff79c6">GLOBAL</span> log_bin <span style="color:#6272a4">=</span> <span style="color:#ff79c6">ON</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 設(shè)置二進(jìn)制日志格式為行級(jí)別</span>
mysql<span style="color:#6272a4">></span> <span style="color:#ff79c6">SET</span> <span style="color:#ff79c6">GLOBAL</span> binlog_format <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'ROW'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

Step3(非必要):如果配置沒(méi)生效,重啟容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> restart mysql8.0.25
</code></span></span></span></span>
  • 1

2.2 Postgresql

版本:PostgreSQL 10.6 (Debian 10.6-1.pgdg90+1)

2.2.1 安裝

Step1: 拉取 PostgreSQL 10.6 版本的鏡像:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull postgres:10.6
</code></span></span></span></span>
  • 1

Step2:創(chuàng)建并啟動(dòng)?PostgreSQL?容器,在這里,我們將把容器的端口 5432 映射到主機(jī)的端口 30028,賬號(hào)密碼設(shè)置為postgres,并將?pgoutput?插件加載到?PostgreSQL?實(shí)例中:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-d</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30028</span>:5432 <span style="color:#ee9900">--name</span> postgres-10.6 <span style="color:#ee9900">-e</span> <span style="color:#ee9900">POSTGRES_PASSWORD</span><span style="color:#6272a4">=</span>postgres postgres:10.6 <span style="color:#ee9900">-c</span> <span style="color:#f1fa8c">'shared_preload_libraries=pgoutput'</span>
</code></span></span></span></span>
  • 1

Step3: 查看容器是否創(chuàng)建成功:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#8be9fd">ps</span> <span style="color:#6272a4">|</span> <span style="color:#8be9fd">grep</span> postgres-10.6
</code></span></span></span></span>
  • 1

2.2.2 CDC 配置

Step1:docker進(jìn)去Postgresql數(shù)據(jù)的容器:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> postgres-10.6  <span style="color:#8be9fd">bash</span>
</code></span></span></span></span>
  • 1

Step2:編輯postgresql.conf配置文件:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">vi</span> /var/lib/postgresql/data/postgresql.conf 
</code></span></span></span></span>
  • 1

配置內(nèi)容如下:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-py"><span style="color:#6272a4"># 更改wal日志方式為logical(方式有:minimal、replica 、logical  )</span>
wal_level <span style="color:#6272a4">=</span> logical  

<span style="color:#6272a4"># 更改solts最大數(shù)量(默認(rèn)值為10),flink-cdc默認(rèn)一張表占用一個(gè)slots</span>
max_replication_slots <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">20</span>

<span style="color:#6272a4"># 更改wal發(fā)送最大進(jìn)程數(shù)(默認(rèn)值為10),這個(gè)值和上面的solts設(shè)置一樣</span>
max_wal_senders <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">20</span>     

<span style="color:#6272a4"># 中斷那些停止活動(dòng)超過(guò)指定毫秒數(shù)的復(fù)制連接,可以適當(dāng)設(shè)置大一點(diǎn)(默認(rèn)60s,0表示禁用)</span>
wal_sender_timeout <span style="color:#6272a4">=</span> 180s	          
</code></span></span></span></span>

Step3:重啟容器:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> restart postgres-10.6
</code></span></span></span></span>
  • 1

連接數(shù)據(jù)庫(kù),如果查詢一下語(yǔ)句,返回logical表示修改成功:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#ff79c6">SHOW</span> wal_level<span style="color:#999999">;</span>
</code></span></span></span></span>
  • 1

Step4:新建用戶并賦權(quán)。使用創(chuàng)建容器時(shí)的賬號(hào)密碼(postgres/postgres)登錄Postgresql數(shù)據(jù)庫(kù)。

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建數(shù)據(jù)庫(kù) test_db</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">DATABASE</span> test_db<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 連接到新創(chuàng)建的數(shù)據(jù)庫(kù) test_db</span>
\c test_db

<span style="color:#6272a4">-- 創(chuàng)建 t_user 表</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#f1fa8c">"public"</span><span style="color:#999999">.</span><span style="color:#f1fa8c">"t_user"</span> <span style="color:#999999">(</span>
    <span style="color:#f1fa8c">"id"</span> int8 <span style="color:#6272a4">NOT</span> <span style="color:#8be9fd">NULL</span><span style="color:#999999">,</span>
    <span style="color:#f1fa8c">"name"</span> <span style="color:#ff79c6">varchar</span><span style="color:#999999">(</span><span style="color:#f1fa8c">255</span><span style="color:#999999">)</span><span style="color:#999999">,</span>
    <span style="color:#f1fa8c">"age"</span> int2<span style="color:#999999">,</span>
    <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span> <span style="color:#999999">(</span><span style="color:#f1fa8c">"id"</span><span style="color:#999999">)</span>
<span style="color:#999999">)</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- pg新建用戶</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">USER</span> test1 <span style="color:#ff79c6">WITH</span> PASSWORD <span style="color:#f1fa8c">'test123'</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 給用戶復(fù)制流權(quán)限</span>
<span style="color:#ff79c6">ALTER</span> ROLE test1 <span style="color:#ff79c6">replication</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 給用戶登錄數(shù)據(jù)庫(kù)權(quán)限</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CONNECT</span> <span style="color:#ff79c6">ON</span> <span style="color:#ff79c6">DATABASE</span> test_db <span style="color:#ff79c6">to</span> test1<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 把當(dāng)前庫(kù)public下所有表查詢權(quán)限賦給用戶</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">ALL</span> <span style="color:#ff79c6">PRIVILEGES</span> <span style="color:#ff79c6">ON</span> <span style="color:#ff79c6">ALL</span> <span style="color:#ff79c6">TABLES</span> <span style="color:#6272a4">IN</span> <span style="color:#ff79c6">SCHEMA</span> <span style="color:#ff79c6">public</span> <span style="color:#ff79c6">TO</span> test1<span style="color:#999999">;</span>

</code></span></span></span></span>

Step4:發(fā)布表:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 設(shè)置發(fā)布為true</span>
<span style="color:#ff79c6">update</span> pg_publication <span style="color:#ff79c6">set</span> puballtables<span style="color:#6272a4">=</span><span style="color:#8be9fd">true</span> <span style="color:#ff79c6">where</span> pubname <span style="color:#6272a4">is</span> <span style="color:#6272a4">not</span> <span style="color:#8be9fd">null</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 把所有表進(jìn)行發(fā)布</span>
<span style="color:#ff79c6">CREATE</span> PUBLICATION dbz_publication <span style="color:#ff79c6">FOR</span> <span style="color:#ff79c6">ALL</span> <span style="color:#ff79c6">TABLES</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 查詢哪些表已經(jīng)發(fā)布</span>
<span style="color:#ff79c6">select</span> <span style="color:#6272a4">*</span> <span style="color:#ff79c6">from</span> pg_publication_tables<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 更改復(fù)制標(biāo)識(shí)包含更新和刪除之前值(目的是為了確保表 t_user 在實(shí)時(shí)同步過(guò)程中能夠正確地捕獲并同步更新和刪除的數(shù)據(jù)變化。如果不執(zhí)行這兩條語(yǔ)句,那么 t_user 表的復(fù)制標(biāo)識(shí)可能默認(rèn)為 NOTHING,這可能導(dǎo)致實(shí)時(shí)同步時(shí)丟失更新和刪除的數(shù)據(jù)行信息,從而影響同步的準(zhǔn)確性)</span>
<span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">TABLE</span> t_user REPLICA <span style="color:#ff79c6">IDENTITY</span> <span style="color:#ff79c6">FULL</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 查看復(fù)制標(biāo)識(shí)(為f標(biāo)識(shí)說(shuō)明設(shè)置成功,f(表示 full),否則為 n(表示 nothing),即復(fù)制標(biāo)識(shí)未設(shè)置)</span>
<span style="color:#ff79c6">select</span> relreplident <span style="color:#ff79c6">from</span> pg_class <span style="color:#ff79c6">where</span> relname<span style="color:#6272a4">=</span><span style="color:#f1fa8c">'t_user'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

2.3 Oracle

版本:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

2.3.1 安裝

Step1:拉取 oracle 11g 鏡像(有6g,要等較長(zhǎng)的時(shí)間)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
</code></span></span></span></span>
  • 1

Step2:執(zhí)行以下命令以創(chuàng)建并運(yùn)行 Oracle 11g 容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-d</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30026</span>:1521 <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">8081</span>:8080 <span style="color:#999999">\</span>
<span style="color:#ee9900">--name</span> oracle_11g <span style="color:#999999">\</span>
<span style="color:#ee9900">-e</span> <span style="color:#ee9900">ORACLE_HOME</span><span style="color:#6272a4">=</span>/home/oracle/app/oracle/product/11.2.0/dbhome_2 <span style="color:#999999">\</span>
<span style="color:#ee9900">-e</span> <span style="color:#ee9900">ORACLE_SID</span><span style="color:#6272a4">=</span>helowin <span style="color:#999999">\</span>
registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
</code></span></span></span></span>

Step3:查看容器是否啟動(dòng)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#8be9fd">ps</span> -a<span style="color:#6272a4">|</span><span style="color:#8be9fd">grep</span> oracle_11g
</code></span></span></span></span>

Step4:進(jìn)入容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> oracle_11g <span style="color:#8be9fd">bash</span>
</code></span></span></span></span>

**Step5:**設(shè)置賬號(hào)密碼

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#6272a4"># 1. 切換至root用戶(默認(rèn)是oracle用戶),密碼為helowin</span>
<span style="color:#8be9fd">su</span> root

<span style="color:#6272a4"># 2. 創(chuàng)建軟鏈接</span>
<span style="color:#8be9fd">ln</span> <span style="color:#ee9900">-s</span> <span style="color:#ee9900">$ORACLE_HOME</span>/bin/sqlplus /usr/bin

<span style="color:#6272a4"># 3.切換回oracle用戶</span>
<span style="color:#8be9fd">su</span> oracle

<span style="color:#6272a4"># 4. 登錄sql plus</span>
sqlplus /nolog
conn /as sysdba
<span style="color:#6272a4">## 4.1 修改system用戶密碼為system</span>
alter user system identified by system<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.2 修改sys用戶密碼為system</span>
alter user sys identified by system<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.3 新增一個(gè)測(cè)試用戶(用戶名:test,密碼:test123);</span>
create user <span style="color:#f1fa8c">test</span> identified by test123<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.4 將dba權(quán)限給內(nèi)部管理員賬號(hào)和密碼</span>
grant connect,resource,dba to <span style="color:#f1fa8c">test</span><span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.5 修改密碼策略規(guī)則為:密碼永不過(guò)期</span>
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.6 修改數(shù)據(jù)庫(kù)最大連接數(shù);</span>
alter system <span style="color:#f1fa8c">set</span> <span style="color:#ee9900">processes</span><span style="color:#6272a4">=</span><span style="color:#f1fa8c">1000</span> <span style="color:#ee9900">scope</span><span style="color:#6272a4">=</span>spfile<span style="color:#999999">;</span>
<span style="color:#6272a4">## 4.7 最后重啟數(shù)據(jù)庫(kù);</span>
<span style="color:#8be9fd">shutdown</span> immediate<span style="color:#999999">;</span>
startup<span style="color:#999999">;</span>

<span style="color:#6272a4"># 5.退出</span>
<span style="color:#f1fa8c">exit</span>
</code></span></span></span></span>

2.3.2 CDC 配置

Step1:進(jìn)入容器

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> oracle_11g <span style="color:#8be9fd">bash</span>
</code></span></span></span></span>

Step2:以DBA的權(quán)限登錄數(shù)據(jù)庫(kù)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql">sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> sys<span style="color:#6272a4">/</span>system <span style="color:#ff79c6">AS</span> SYSDBA
</code></span></span></span></span>

Step3:?jiǎn)⒂萌罩練w檔

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 設(shè)置數(shù)據(jù)庫(kù)恢復(fù)文件目標(biāo)大小為10G</span>
<span style="color:#ff79c6">alter</span> system <span style="color:#ff79c6">set</span> db_recovery_file_dest_size <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">10</span>G<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 設(shè)置數(shù)據(jù)庫(kù)恢復(fù)文件目標(biāo)路徑</span>
<span style="color:#ff79c6">alter</span> system <span style="color:#ff79c6">set</span> db_recovery_file_dest <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'/home/oracle/app/oracle/product/11.2.0'</span> scope<span style="color:#6272a4">=</span>spfile<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 立即關(guān)閉數(shù)據(jù)庫(kù)</span>
<span style="color:#ff79c6">shutdown</span> immediate<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 以mount模式啟動(dòng)數(shù)據(jù)庫(kù)</span>
startup mount<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 啟用數(shù)據(jù)庫(kù)歸檔日志模式</span>
<span style="color:#ff79c6">alter</span> <span style="color:#ff79c6">database</span> archivelog<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 打開(kāi)數(shù)據(jù)庫(kù),允許用戶訪問(wèn)</span>
<span style="color:#ff79c6">alter</span> <span style="color:#ff79c6">database</span> <span style="color:#ff79c6">open</span><span style="color:#999999">;</span>
</code></span></span></span></span>

Step4:查看日志歸檔是否啟用(如果顯示“Archive Mode”表示已經(jīng)啟用)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql">archive log list<span style="color:#999999">;</span>
</code></span></span></span></span>
  • 1

Step5:創(chuàng)建表空間

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 以DBA的權(quán)限登錄數(shù)據(jù)庫(kù)</span>
sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> sys<span style="color:#6272a4">/</span>system <span style="color:#ff79c6">AS</span> SYSDBA
<span style="color:#6272a4">-- 創(chuàng)建一個(gè)名為"logminer_tbs"的表空間</span>
<span style="color:#6272a4">-- 指定表空間的數(shù)據(jù)文件路徑為"/home/oracle/app/oracle/product/11.2.0/logminer_tbs.dbf",其中"/home/oracle/app/oracle/product/11.2.0"是數(shù)據(jù)文件存儲(chǔ)的目錄,"logminer_tbs.dbf"是數(shù)據(jù)文件的文件名</span>
<span style="color:#6272a4">-- 設(shè)置表空間的初始大小為25MB</span>
<span style="color:#6272a4">-- 如果數(shù)據(jù)文件已經(jīng)存在且可重用,將其重用,否則創(chuàng)建一個(gè)新的數(shù)據(jù)文件</span>
<span style="color:#6272a4">-- 啟用表空間的自動(dòng)擴(kuò)展功能,即當(dāng)表空間空間不足時(shí),自動(dòng)增加數(shù)據(jù)文件的大小</span>
<span style="color:#6272a4">-- 設(shè)置表空間的最大允許大小為無(wú)限,即表空間可以無(wú)限制地自動(dòng)擴(kuò)展</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLESPACE</span> logminer_tbs DATAFILE <span style="color:#f1fa8c">'/home/oracle/app/oracle/product/11.2.0/logminer_tbs.dbf'</span> SIZE <span style="color:#f1fa8c">25</span>M REUSE AUTOEXTEND <span style="color:#ff79c6">ON</span> MAXSIZE UNLIMITED<span style="color:#999999">;</span>
</code></span></span></span></span>

Step6:創(chuàng)建用戶并賦權(quán)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建一個(gè)名為"flinkuser"的用戶,密碼為"flinkpw",將其默認(rèn)表空間設(shè)置為"LOGMINER_TBS",并在該表空間上設(shè)置無(wú)限配額。</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">USER</span> flinkuser IDENTIFIED <span style="color:#ff79c6">BY</span> flinkpw <span style="color:#ff79c6">DEFAULT</span> <span style="color:#ff79c6">TABLESPACE</span> LOGMINER_TBS QUOTA UNLIMITED <span style="color:#ff79c6">ON</span> LOGMINER_TBS<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶創(chuàng)建會(huì)話,即允許該用戶連接到數(shù)據(jù)庫(kù)。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">SESSION</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- (不支持Oracle 11g)允許"flinkuser"用戶在多租戶數(shù)據(jù)庫(kù)(CDB)中設(shè)置容器。</span>
<span style="color:#6272a4">-- GRANT SET CONTAINER TO flinkuser;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$DATABASE視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)實(shí)例的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$<span style="color:#ff79c6">DATABASE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶執(zhí)行任何表的閃回操作。</span>
<span style="color:#ff79c6">GRANT</span> FLASHBACK <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢?nèi)魏伪淼臄?shù)據(jù)。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶擁有SELECT_CATALOG_ROLE角色,該角色允許查詢數(shù)據(jù)字典和元數(shù)據(jù)。</span>
<span style="color:#ff79c6">GRANT</span> SELECT_CATALOG_ROLE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶擁有EXECUTE_CATALOG_ROLE角色,該角色允許執(zhí)行一些數(shù)據(jù)字典中的過(guò)程和函數(shù)。</span>
<span style="color:#ff79c6">GRANT</span> EXECUTE_CATALOG_ROLE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢?nèi)魏问聞?wù)。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TRANSACTION</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- (不支持Oracle 11g)允許"flinkuser"用戶進(jìn)行數(shù)據(jù)變更追蹤(LogMiner)。</span>
<span style="color:#6272a4">-- GRANT LOGMINING TO flinkuser;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶創(chuàng)建表。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶鎖定任何表。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">LOCK</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶修改任何表。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">ANY</span> <span style="color:#ff79c6">TABLE</span> <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶創(chuàng)建序列。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">CREATE</span> SEQUENCE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶執(zhí)行DBMS_LOGMNR包中的過(guò)程。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">EXECUTE</span> <span style="color:#ff79c6">ON</span> DBMS_LOGMNR <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶執(zhí)行DBMS_LOGMNR_D包中的過(guò)程。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">EXECUTE</span> <span style="color:#ff79c6">ON</span> DBMS_LOGMNR_D <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOG視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOG <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOG_HISTORY視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)歷史日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOG_HISTORY <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGMNR_LOGS視圖,該視圖包含有關(guān)LogMiner日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGMNR_LOGS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGMNR_CONTENTS視圖,該視圖包含LogMiner日志文件的內(nèi)容。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGMNR_CONTENTS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGMNR_PARAMETERS視圖,該視圖包含有關(guān)LogMiner的參數(shù)信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGMNR_PARAMETERS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$LOGFILE視圖,該視圖包含有關(guān)數(shù)據(jù)庫(kù)日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$LOGFILE <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$ARCHIVED_LOG視圖,該視圖包含已歸檔的數(shù)據(jù)庫(kù)日志文件的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$ARCHIVED_LOG <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 允許"flinkuser"用戶查詢V_$ARCHIVE_DEST_STATUS視圖,該視圖包含有關(guān)歸檔目標(biāo)狀態(tài)的信息。</span>
<span style="color:#ff79c6">GRANT</span> <span style="color:#ff79c6">SELECT</span> <span style="color:#ff79c6">ON</span> V_$ARCHIVE_DEST_STATUS <span style="color:#ff79c6">TO</span> flinkuser<span style="color:#999999">;</span>
</code></span></span></span></span>

Step7:數(shù)據(jù)庫(kù)和表啟用增量日志

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 切換至flinkuser用戶</span>
sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> flinkuser<span style="color:#6272a4">/</span>flinkpw

<span style="color:#6272a4">-- 創(chuàng)建customers表</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> customers <span style="color:#999999">(</span>
    customer_id NUMBER <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span><span style="color:#999999">,</span>
    customer_name VARCHAR2<span style="color:#999999">(</span><span style="color:#f1fa8c">50</span><span style="color:#999999">)</span><span style="color:#999999">,</span>
    email VARCHAR2<span style="color:#999999">(</span><span style="color:#f1fa8c">100</span><span style="color:#999999">)</span><span style="color:#999999">,</span>
    phone VARCHAR2<span style="color:#999999">(</span><span style="color:#f1fa8c">20</span><span style="color:#999999">)</span>
<span style="color:#999999">)</span> <span style="color:#ff79c6">TABLESPACE</span> LOGMINER_TBS<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 查看LOGMINER_TBS表空間下的所有表</span>
<span style="color:#ff79c6">select</span> tablespace_name<span style="color:#999999">,</span> table_name <span style="color:#ff79c6">from</span> user_tables
<span style="color:#ff79c6">where</span> tablespace_name <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'LOGMINER_TBS'</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- 以DBA的權(quán)限登錄數(shù)據(jù)庫(kù)</span>
sqlplus <span style="color:#6272a4">/</span>nolog
<span style="color:#ff79c6">CONNECT</span> sys<span style="color:#6272a4">/</span>system <span style="color:#ff79c6">AS</span> SYSDBA

<span style="color:#6272a4">-- 為L(zhǎng)OGMINER_TBS表空間下的customers表啟用增強(qiáng)日志記錄</span>
<span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">TABLE</span> FLINKUSER<span style="color:#999999">.</span>CUSTOMERS <span style="color:#ff79c6">ADD</span> SUPPLEMENTAL LOG <span style="color:#ff79c6">DATA</span> <span style="color:#999999">(</span><span style="color:#ff79c6">ALL</span><span style="color:#999999">)</span> <span style="color:#ff79c6">COLUMNS</span>

<span style="color:#6272a4">-- 為數(shù)據(jù)庫(kù)啟用增強(qiáng)日志記錄:</span>
<span style="color:#ff79c6">ALTER</span> <span style="color:#ff79c6">DATABASE</span> <span style="color:#ff79c6">ADD</span> SUPPLEMENTAL LOG <span style="color:#ff79c6">DATA</span><span style="color:#999999">;</span>
</code></span></span></span></span>

2.4 SQLServer

版本:Microsoft SQL Server 2019 (RTM-CU21) (KB5025808) - 15.0.4316.3 (X64)

2.4.1 安裝

Step1:拉取SQL Server 2019 鏡像

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> pull mcr.microsoft.com/mssql/server:2019-latest
</code></span></span></span></span>

Step2:運(yùn)行 SQL Server 容器(密碼必須是8個(gè)字符,并包含字母、數(shù)字和特殊字符,如:abc@123456 ,下面映射主機(jī)端口為30027)

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#8be9fd">docker</span> run <span style="color:#ee9900">-e</span> <span style="color:#f1fa8c">'ACCEPT_EULA=Y'</span> <span style="color:#ee9900">-e</span> <span style="color:#f1fa8c">'SA_PASSWORD=abc@123456'</span> <span style="color:#ee9900">-p</span> <span style="color:#f1fa8c">30027</span>:1433 <span style="color:#ee9900">--name</span> sql_server_2019 <span style="color:#ee9900">-d</span> mcr.microsoft.com/mssql/server:2019-latest
</code></span></span></span></span>

Step3:驗(yàn)證 SQL Server 容器是否正在運(yùn)行

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code>docker ps -a|grep sql_server_2019
</code></span></span></span></span>

2.4.2 CDC 配置

Step1:開(kāi)啟SQLServer代理

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell"><span style="color:#6272a4">## 使用root用戶登錄容器</span>
<span style="color:#8be9fd">docker</span> <span style="color:#f1fa8c">exec</span> <span style="color:#ee9900">-it</span> <span style="color:#ee9900">--user</span> root sql_server_2019 <span style="color:#8be9fd">bash</span>

<span style="color:#6272a4">## 進(jìn)入容器后,執(zhí)行命令啟用Agent</span>
/opt/mssql/bin/mssql-conf <span style="color:#f1fa8c">set</span> sqlagent.enabled <span style="color:#8be9fd">true</span>

<span style="color:#6272a4">## 退出,重啟容器</span>
<span style="color:#f1fa8c">exit</span>
<span style="color:#8be9fd">docker</span> restart sql_server_2019
</code></span></span></span></span>

Step2:創(chuàng)建’cdc_test’測(cè)試數(shù)據(jù)庫(kù),并使用連接工具登錄該數(shù)據(jù)庫(kù),使用以下 SQL 命令啟用 CDC 功能

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建數(shù)據(jù)庫(kù)</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">DATABASE</span> cdc_test<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 啟用CDC功能</span>
<span style="color:#ff79c6">EXEC</span> sys<span style="color:#999999">.</span>sp_cdc_enable_db<span style="color:#999999">;</span>

<span style="color:#6272a4">-- 判斷當(dāng)前數(shù)據(jù)庫(kù)是否啟用了CDC(如果返回1,表示已啟用)</span>
<span style="color:#ff79c6">SELECT</span> is_cdc_enabled <span style="color:#ff79c6">FROM</span> sys<span style="color:#999999">.</span><span style="color:#ff79c6">databases</span> <span style="color:#ff79c6">WHERE</span> name <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'cdc_test'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

Step3:選擇要進(jìn)行 CDC 跟蹤的表(這里使用orders表作為演示

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#6272a4">-- 創(chuàng)建示例表(orders)</span>
<span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> orders <span style="color:#999999">(</span>
     id <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     order_date <span style="color:#ff79c6">date</span><span style="color:#999999">,</span>
     purchaser <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     quantity <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     product_id <span style="color:#ff79c6">int</span><span style="color:#999999">,</span>
     <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span> <span style="color:#999999">(</span><span style="color:#999999">[</span>id<span style="color:#999999">]</span><span style="color:#999999">)</span>
<span style="color:#999999">)</span><span style="color:#999999">;</span>

<span style="color:#6272a4">-- schema_name 是表所屬的架構(gòu)(schema)的名稱。</span>
<span style="color:#6272a4">-- table_name 是要啟用 CDC 跟蹤的表的名稱。</span>
<span style="color:#6272a4">-- cdc_role 是 CDC 使用的角色的名稱。如果沒(méi)有指定角色名稱,系統(tǒng)將創(chuàng)建一個(gè)默認(rèn)角色。</span>
<span style="color:#ff79c6">EXEC</span> sys<span style="color:#999999">.</span>sp_cdc_enable_table
  <span style="color:#ee9900">@source_schema</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'dbo'</span><span style="color:#999999">,</span>
  <span style="color:#ee9900">@source_name</span>   <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'orders'</span><span style="color:#999999">,</span>
  <span style="color:#ee9900">@role_name</span>     <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'cdc_role'</span><span style="color:#999999">;</span>
</code></span></span></span></span>

3. 驗(yàn)證

如果要驗(yàn)證flink cdc的功能,需要先下載flink的安裝包,然后下載相應(yīng)的cdc jar包并依賴,最后使用安裝包里面的sql-client寫相關(guān)的flink sql即可驗(yàn)證。

3.1 Flink版本與CDC版本的對(duì)應(yīng)關(guān)系

下載Flink安裝包以及jar包前,必須確定Flink CDC與Flink版本關(guān)系:

Flink CDC 版本 Flink 版本
1.0.0 1.11.*
1.1.0 1.11.*
1.2.0 1.12.*
1.3.0 1.12.*
1.4.0 1.13.*
2.0.* 1.13.*
2.1.* 1.13.*
2.2.* 1.13.*,?1.14.*
2.3.* 1.13.*,?1.14.*,?1.15.*,?1.16.0
2.4.* 1.13.*,?1.14.*,?1.15.*,?1.16.*,?1.17.0

本文以?Flink1.13.6?+?Flink CDC 2.2.0?版本為例子演示。

3.2 下載相關(guān)包

flink 安裝包下載,下載地址:Downloads | Apache Flink
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

下載cdc相關(guān)的jar,根據(jù)自己的需求,下載相關(guān)的cdc jar:Central Repository: com/ververica
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

3.3 添加cdc jar 至lib目錄

把需要驗(yàn)證的cdc jar放到flink安裝包解壓之后的lib目錄(<FLINK_HOME>/lib/):
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

3.4 驗(yàn)證

使用下面的命令啟動(dòng) Flink 集群:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell">./bin/start-cluster.sh
</code></span></span></span></span>

啟動(dòng)成功,可以訪問(wèn)?http://localhost:8081?訪問(wèn)到 Flink Web UI:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
使用下面的命令啟動(dòng) Flink SQL CLI :

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell">./bin/sql-client.sh
</code></span></span></span></span>

展示如下頁(yè)面,表示啟動(dòng)flink客戶端成功:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
執(zhí)行如下FlinkSQL:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#ff79c6">CREATE</span> <span style="color:#ff79c6">TABLE</span> t_source_sqlserver <span style="color:#999999">(</span>
   id <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    order_date <span style="color:#ff79c6">DATE</span><span style="color:#999999">,</span>
    purchaser <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    quantity <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    product_id <span style="color:#ff79c6">INT</span><span style="color:#999999">,</span>
    <span style="color:#ff79c6">PRIMARY</span> <span style="color:#ff79c6">KEY</span> <span style="color:#999999">(</span>id<span style="color:#999999">)</span> <span style="color:#6272a4">NOT</span> ENFORCED
<span style="color:#999999">)</span> <span style="color:#ff79c6">WITH</span> <span style="color:#999999">(</span>
  <span style="color:#f1fa8c">'connector'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'sqlserver-cdc'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'hostname'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'10.194.183.120'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'port'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'30027'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'username'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'sa'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'password'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'abc@123456'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'database-name'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'cdc_test'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'schema-name'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'dbo'</span><span style="color:#999999">,</span>
  <span style="color:#f1fa8c">'table-name'</span> <span style="color:#6272a4">=</span> <span style="color:#f1fa8c">'orders'</span>
<span style="color:#999999">)</span><span style="color:#999999">;</span>
</code></span></span></span></span>

可以看到執(zhí)行成功了:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
執(zhí)行select 語(yǔ)句,以便實(shí)時(shí)查看該表的數(shù)據(jù)變動(dòng):

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-sql"><span style="color:#ff79c6">select</span> <span style="color:#6272a4">*</span> <span style="color:#ff79c6">from</span> t_source_sqlserver<span style="color:#999999">;</span>
</code></span></span></span></span>

從下圖,可以看出,只要修改左邊的數(shù)據(jù),會(huì)在控制臺(tái)實(shí)時(shí)顯示新增刪除的數(shù)據(jù)。
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)
同時(shí),也能在Flink web頁(yè)面看到任務(wù)正在運(yùn)行:
flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證,Flink-cdc,flink,大數(shù)據(jù)

最后,可以通過(guò)如下命令關(guān)閉掉Flink啟動(dòng)的集群:

<span style="color:rgba(0, 0, 0, 0.75)"><span style="background-color:#ffffff"><span style="color:#000000"><span style="background-color:#282a36"><code class="language-shell">./stop-cluster.sh
</code></span></span></span></span>

到了這里,關(guān)于flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證 flink cdc多種數(shù)據(jù)源安裝、配置與驗(yàn)證的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Doris1.1.1多種異構(gòu)數(shù)據(jù)源數(shù)據(jù)導(dǎo)入方案

    Doris1.1.1多種異構(gòu)數(shù)據(jù)源數(shù)據(jù)導(dǎo)入方案

    ????????Apache Doris 是一個(gè)基于 MPP 架構(gòu)的高性能、實(shí)時(shí)的分析型數(shù)據(jù)庫(kù),以極速易用的特點(diǎn)被人們所熟知,僅需亞秒級(jí)響應(yīng)時(shí)間即可返回海量數(shù)據(jù)下的查詢結(jié)果,不僅可以支持高并發(fā)的點(diǎn)查詢場(chǎng)景,也能支持高吞吐的復(fù)雜分析場(chǎng)景?;诖耍珹pache Doris 能夠較好的滿足報(bào)表

    2024年02月03日
    瀏覽(18)
  • Flink 定時(shí)加載數(shù)據(jù)源

    Flink 定時(shí)加載數(shù)據(jù)源

    一、簡(jiǎn)介 flink 自定義實(shí)時(shí)數(shù)據(jù)源使用流處理比較簡(jiǎn)單,比如 Kafka、MQ 等,如果使用 MySQL、redis 批處理也比較簡(jiǎn)單 如果需要定時(shí)加載數(shù)據(jù)作為 flink 數(shù)據(jù)源使用流處理,比如定時(shí)從 mysql 或者 redis 獲取一批數(shù)據(jù),傳入 flink 做處理,如下簡(jiǎn)單實(shí)現(xiàn) 二、pom.xml 文件 注意 flink 好多包

    2024年02月05日
    瀏覽(18)
  • Flink學(xué)習(xí)之旅:(三)Flink源算子(數(shù)據(jù)源)

    Flink學(xué)習(xí)之旅:(三)Flink源算子(數(shù)據(jù)源)

    ? ? ? ? Flink可以從各種數(shù)據(jù)源獲取數(shù)據(jù),然后構(gòu)建DataStream 進(jìn)行處理轉(zhuǎn)換。source就是整個(gè)數(shù)據(jù)處理程序的輸入端。 數(shù)據(jù)集合 數(shù)據(jù)文件 Socket數(shù)據(jù) kafka數(shù)據(jù) 自定義Source ? ? ? ? 創(chuàng)建 FlinkSource_List 類,再創(chuàng)建個(gè) Student 類(姓名、年齡、性別三個(gè)屬性就行,反正測(cè)試用) 運(yùn)行結(jié)果

    2024年02月06日
    瀏覽(28)
  • 美國(guó)Linux服務(wù)器安裝Grafana和配置zabbix數(shù)據(jù)源的教程

    美國(guó)Linux服務(wù)器的Grafana工具是跨平臺(tái)、開(kāi)源、時(shí)序和可視化面板Dashboard監(jiān)控平臺(tái)工具,是在日常管理中幫忙提高效率的實(shí)用工具,可以通過(guò)將采集的美國(guó)Linux服務(wù)器系統(tǒng)數(shù)據(jù)查詢后,進(jìn)行可視化的展示及通知,本文小編就來(lái)介紹下美國(guó)Linux服務(wù)器安裝Grafana工具和配置zabbix數(shù)據(jù)

    2024年02月13日
    瀏覽(36)
  • docker安裝nacos配置外部數(shù)據(jù)源mysql,解決no DataSource set 問(wèn)題

    docker安裝nacos配置外部數(shù)據(jù)源mysql,解決no DataSource set 問(wèn)題

    1.之前一直看的別人的nacos配置教程,都感覺(jué)不全面。同時(shí)啟動(dòng)時(shí)莫名會(huì)出現(xiàn)no datasource set問(wèn)題,前兩天為了看了各方面的教程,也寫了 nacos docker v2.1.2啟動(dòng)報(bào)錯(cuò)數(shù)據(jù)源未設(shè)置no datasource set文章。 2.昨天nacos突然宕機(jī)了,試了各種方法,還是no datasource set;現(xiàn)在綜合各方面的教程

    2024年02月02日
    瀏覽(26)
  • flink重溫筆記(二):Flink 流批一體 API 開(kāi)發(fā)——Source 數(shù)據(jù)源操作

    前言:今天是第二天啦!開(kāi)始學(xué)習(xí) Flink 流批一體化開(kāi)發(fā)知識(shí)點(diǎn),重點(diǎn)學(xué)習(xí)了各類數(shù)據(jù)源的導(dǎo)入操作,我發(fā)現(xiàn)學(xué)習(xí)編程需要分類記憶,一次一次地猜想 api 作用,然后通過(guò)敲代碼印證自己的想法,以此理解知識(shí)點(diǎn),加深對(duì)api的理解和應(yīng)用。 Tips:我覺(jué)得學(xué)習(xí) Flink 還是挺有意思的

    2024年02月19日
    瀏覽(24)
  • flink如何初始化kafka數(shù)據(jù)源的消費(fèi)偏移

    我們知道在日常非flink場(chǎng)景中消費(fèi)kafka主題時(shí),我們只要指定了消費(fèi)者組,下次程序重新消費(fèi)時(shí)是可以從上次消費(fèi)停止時(shí)的消費(fèi)偏移開(kāi)始繼續(xù)消費(fèi)的,這得益于kafka的_offset_主題保存的關(guān)于消費(fèi)者組和topic偏移位置的具體偏移信息,那么flink應(yīng)用中重啟flink應(yīng)用時(shí),flink是從topic的什

    2024年02月16日
    瀏覽(30)
  • flink執(zhí)行環(huán)境和讀取kafka以及自定義數(shù)據(jù)源操作

    flink執(zhí)行環(huán)境和讀取kafka以及自定義數(shù)據(jù)源操作

    目錄 創(chuàng)建執(zhí)行環(huán)境 1. getExecutionEnvironment 2. createLocalEnvironment 3. createRemoteEnvironment ?執(zhí)行模式(Execution Mode) 1. BATCH 模式的配置方法 2. 什么時(shí)候選擇 BATCH 模式 觸發(fā)程序執(zhí)行 數(shù)據(jù)源操作 讀取kafka數(shù)據(jù)源操作? 自定義Source ? ????????編 寫 Flink 程 序 的 第 一 步 , 就 是 創(chuàng) 建 執(zhí)

    2023年04月10日
    瀏覽(40)
  • flink cep數(shù)據(jù)源keyby union后 keybe失效

    問(wèn)題背景:cep模板 對(duì)數(shù)據(jù)源設(shè)置分組條件后,告警的數(shù)據(jù),和分組條件對(duì)不上, 摻雜了,其他的不同組的數(shù)據(jù),產(chǎn)生了告警 策略條件: 選擇了兩個(gè)kafka的的topic的數(shù)據(jù)作為數(shù)據(jù)源, 對(duì)A 數(shù)據(jù)源 test-topic1, 進(jìn)行條件過(guò)濾, 過(guò)濾條件為:login_type? = 1 對(duì)B 數(shù)據(jù)源 test-topic2,進(jìn)行

    2024年02月01日
    瀏覽(24)
  • Flink讀取數(shù)據(jù)的5種方式(文件,Socket,Kafka,MySQL,自定義數(shù)據(jù)源)

    這是最簡(jiǎn)單的數(shù)據(jù)讀取方式。當(dāng)需要進(jìn)行功能測(cè)試時(shí),可以將數(shù)據(jù)保存在文件中,讀取后驗(yàn)證流處理的邏輯是否符合預(yù)期。 程序代碼: 輸出結(jié)果 用于驗(yàn)證一些通過(guò)Socket傳輸數(shù)據(jù)的場(chǎng)景非常方便。 程序代碼: 測(cè)試時(shí),需要先在 172.16.3.6 的服務(wù)器上啟動(dòng) nc ,然后再啟動(dòng)Flink讀

    2024年02月16日
    瀏覽(21)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包