最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

學(xué)習(xí)日志 220105 flink mysql connector 問(wèn)題解決

2022-01-05 19:31 作者:mayoiwill  | 我要投稿

# 220105

- 問(wèn)題3

? - SQL錯(cuò)誤 不能是(?

? - 數(shù)據(jù)類型錯(cuò)誤 沒(méi)有DATETIME 改用 TIMESTAMP(3)

? - 目前使用數(shù)據(jù)類型有 BIGINT TIMESTAMP(原DATETIME) STRING(原TEXT)

- 問(wèn)題4

? - The primary key is necessary when enable 'Key: 'scan.incremental.snapshot.enabled'

? - 加上PRIMARY KEY聲明

- 問(wèn)題5

? - Flink doesn't support ENFORCED mode

? - https://cwiki.apache.org/confluence/display/FLINK/FLIP+87%3A+Primary+key+constraints+in+Table+API

? - Primary key validity checks

? - 在PRIMARY KEY聲明后加 NOT ENFORCED

? - 類似 `PRIMARY KEY(id) NOT ENFORCED,`

- 問(wèn)題6

? - 主進(jìn)程退出 退出碼 -17

? - 修改依賴

? ? - 示例中依賴是 org.apache.flink:flink-table-planner-blink_${scala.binary.version}

? ? - 改為 org.apache.flink:flink-table-planner_2.12

? ? - 版本號(hào)也升級(jí)為 1.14.2(當(dāng)前最新)

- 問(wèn)題7

? - Illegal reflective access by org.apache.flink.api.java.ClosureCleaner

? - https://stackoverflow.com/questions/60754821/illegal-reflective-access-by-org-apache-flink-api-java-closurecleaner

? - 降低運(yùn)行環(huán)境到 java8

? - 暫時(shí)無(wú)視? 只是警告

- 問(wèn)題8

? - log4j:WARN No appenders could be found for logger

? - 加log4j.properties 從 playgrounds里copy一個(gè)出來(lái)

? - 這個(gè)打包進(jìn)jar會(huì)不會(huì)影響在flink集群上運(yùn)行?

? - 參考 https://www.cnblogs.com/upupfeng/p/14489664.html

? - 應(yīng)該不影響

- 問(wèn)題9

? - Currently Flink MySql CDC connector only supports MySql whose version is larger or equal to 5.7, but actual is 5.6.

? - 方案一 重裝mysql 太麻煩了 不用

? ? - 1, 刪除mysql相關(guān)的service和sts

? ? - 2, 刪除mysql相關(guān)的pvc

? ? - 3, 重新編寫(xiě)k8s描述文件 升級(jí)mysql版本

? ? - 4, 重新執(zhí)行DDL 重新插入數(shù)據(jù)

? ? - 5, 重啟依賴mysql的服務(wù) springbootdemo

? - 方案二 升級(jí)

? ? - 參考 https://dev.mysql.com/doc/refman/5.7/en/docker-mysql-getting-started.html#docker-upgrading

? ? - 1, 關(guān)閉mysql集群? 重新apply -f應(yīng)該自動(dòng)關(guān)閉舊pod

? ? - 2, 編寫(xiě)k8s描述文件 升級(jí) 重新 apply -f

? ? - 3, 用exec執(zhí)行mysql_upgrade

? ? - 4, 重啟集群

? ? ? - `kubectl rollout restart sts/mycluster-mysql`

? ? ? - `kubectl rollout status sts/mycluster-mysql`

? ? - 5, 檢查java應(yīng)用使用數(shù)據(jù)的情況

? ? ? - springbootdemo的搜索功能正常

? - 開(kāi)發(fā)環(huán)境 重新運(yùn)行flink

- 問(wèn)題10

? ```

? Source: TableSourceScan(table=[[default_catalog, default_database, test_doc]], fields=[id, gmt_create, gmt_modify, doc]) -> WatermarkAssigner(rowtime=[gmt_modify], watermark=[(gmt_modify - 5000:INTERVAL SECOND)]) -> Sink: Sink(table=[default_catalog.default_database.print_table], fields=[id, gmt_create, gmt_modify, doc]) (8/16)#0 (5a897800a4d82dbaa5072840701c1041) switched from INITIALIZING to FAILED with failure cause: java.lang.NoSuchMethodError: org.apache.flink.api.connector.source.SourceReaderContext.metricGroup()Lorg/apache/flink/metrics/MetricGroup;

? ```

? - switched from INITIALIZING to FAILED with failure cause

? - java.lang.NoSuchMethodError: org.apache.flink.api.connector.source.SourceReaderContext.metricGroup()

? - 參考 https://ververica.github.io/flink-cdc-connectors/master/content/quickstart/mysql-postgres-tutorial.html

? - 只支持flink 1.13

? - flink 降到 1.13.5

- 問(wèn)題11

? - 又出現(xiàn)了問(wèn)題6的現(xiàn)象

? - 之前問(wèn)題6的修改 把 table-planner 從blink版本改到了不是blink的版本

? - 這個(gè)實(shí)際上是不行的, 還是要改回去

? - 問(wèn)題6的正確解決方法是問(wèn)題10的方法, 也就是把flink降到13.5

- 問(wèn)題12

? - Cannot read the binlog filename and position via 'SHOW MASTER STATUS'

? - mysql數(shù)據(jù)庫(kù)沒(méi)開(kāi)binlog 或者binlog格式不是row

? - 參考 https://www.jianshu.com/p/0a47e387de51

? - 查找my.cnf位置

? ? - 參考 https://stackoverflow.com/questions/38490785/where-is-mysql-5-7-my-cnf-file

? ? - mysqld --help --verbose|grep cnf

? ? - 有三個(gè)位置 挨個(gè)查一下 發(fā)現(xiàn)用的是第二個(gè) 即 /etc/mysql/my.cnf

? - 查看my.cnf中是否已有binlog相關(guān)配置

? ? - 沒(méi)有

? - 修改k8s描述文件

? ? - `cat << EOF >> /etc/mysql/my.cnf`

? ? - 支持多行命令 在yaml里換行接著寫(xiě)就行

? ? - 使用變量 ${HOSTNAME##*-} 來(lái)設(shè)置server_id

? ? - 設(shè)置initContainers的image為 busybox:1.28

? ? - 目前的段落如下

? ? ? ```

? ? ? initContainers:

? ? ? - name: enable-binlog

? ? ? ? image: busybox:1.28

? ? ? ? command:

? ? ? ? ? - sh

? ? ? ? ? - "-c"

? ? ? ? ? - |

? ? ? ? ? ? cat << EOF >> /etc/mysql/my.cnf

? ? ? ? ? ? server_id=${HOSTNAME##*-}

? ? ? ? ? ? log_bin=mysql-bin

? ? ? ? ? ? binlog_format=ROW

? ? ? ? ? ? expire_logs_days=30

? ? ? ? ? ? binlog_do_db=test_db

? ? ? ? ? ? EOF

? ? ? ```

? - 失敗 檢查日志

? ? - `kubectl logs mycluster-mysql-1 -c enable-binlog`

? ? - 指定initContainer 查看日志

? ? - sh: can't create /etc/mysql/my.cnf: nonexistent directory

? - 解決 /etc/mysql/my.cnf不存在的問(wèn)題

? ? - 參考 https://stackoverflow.com/questions/68646958/my-cnf-in-kubernetes-configmap-is-not-recognized-by-mysql-pod

? ? - 參考 https://www.jianshu.com/p/eec2fd2d7080

? ? - 參考 https://kubernetes.io/zh/docs/tasks/run-application/run-replicated-stateful-application/

? ? - 這里需要詳細(xì)說(shuō)明 見(jiàn)下一節(jié)

??

### 正確的配置mysql的方案

- 首先我們需要排除錯(cuò)誤的選項(xiàng)

? - 使用initContainers直接修改/etc/mysql/my.cnf

? - 原因 initContainers和實(shí)際的container并不是同一個(gè) 改了也互不影響

- 正確方案

? - mysql 的my.cnf會(huì)加載 /etc/mysql/conf.d目錄下的所有文件

? ? - `cat /etc/mysql/my.cnf|grep include`

? ? - 利用這個(gè)特性 我們可以mount一個(gè)volume到指定位置

? - k8s支持emptyDir 形式的volume 可以在initContainers和真正的container之間共享

? ? ```

? ? ? volumes:

? ? ? ? - name: conf

? ? ? ? ? emptyDir: { }

? ? ```

? ? - 也就是說(shuō), 我們按如下順序處理

? ? - 先把這個(gè)volume mount給initContainer

? ? - 從initContainer里往這個(gè)volume寫(xiě)一些文件

? ? - 再把這個(gè)volume mount到實(shí)際container的/etc/mysql/conf.d 目錄

? - 技術(shù)細(xì)節(jié)如下

? - mount volume conf給initContainer

? ? ```

? ? ? ? volumeMounts:

? ? ? ? ? - name: conf

? ? ? ? ? ? mountPath: /mnt/conf.d

? ? ```

? - 通過(guò)initContainer的command 多行指令寫(xiě)入配置文件 這里利用了yaml的|(豎線)特性

? ? ```

? ? ? ? command:

? ? ? ? ? - sh

? ? ? ? ? - "-c"

? ? ? ? ? - |

? ? ? ? ? ? cat << EOF > /mnt/conf.d/my.cnf

? ? ? ? ? ? [mysqld]

? ? ? ? ? ? server_id=${HOSTNAME##*-}

? ? ? ? ? ? log_bin=mysql-bin

? ? ? ? ? ? binlog_format=ROW

? ? ? ? ? ? expire_logs_days=30

? ? ? ? ? ? binlog_do_db=test_db

? ? ? ? ? ? EOF


? ? ```

? ? - 注意幾點(diǎn)

? ? - yaml的|豎線之下 保持縮進(jìn) 實(shí)際指行時(shí)這些縮進(jìn)會(huì)被移除

? ? - `<< EOF` 和 最后一行的 `EOF` 配對(duì) 表示中間的內(nèi)容從使用cat 指令輸出

? ? - 第一行 直接跟上 `>` 重定向輸出到文件 這里注意這段并不是放在最后

? ? - 根據(jù)mysql配置文件的格式, 必須指定 `[mysqld]` 區(qū)塊

? ? ? - 否則mysql會(huì)報(bào)錯(cuò) 登錄時(shí)也會(huì)報(bào)一行提示說(shuō)部分配置未能解析

? ? - 可以通過(guò)之前說(shuō)的查看initContainers日志的方法檢查

? - 在真正的container中, 把上述volume conf , mount 到 /etc/mysql/conf.d

? ? ```

? ? ? ? volumeMounts:

? ? ? ? - name: conf

? ? ? ? ? mountPath: /etc/mysql/conf.d

? ? ```?

? - 重新apply -f

- 校驗(yàn)

? - 登錄pod 的 bash, 再用mysql登錄數(shù)據(jù)庫(kù)

? - use test_db;

? - show master status;

? - 有輸出binlog文件和位點(diǎn)表示成功

- flink運(yùn)行校驗(yàn)

? - 進(jìn)程會(huì)持續(xù)運(yùn)行 不會(huì)退出

? - 日志中有類似如下的輸出

? ? ```

? ? 7> +I[681163714816618496, 2021-12-24T07:40:57.483, 2021-12-24T07:40:57.483, test content 002]

? ? 7> +I[681097728465809408, 2021-12-24T03:18:46.044, 2021-12-24T03:18:46.044, test content 001]

? ? ```

? - 表示相應(yīng)的數(shù)據(jù)變更已經(jīng)被CDC捕獲了 并輸出到了print的table上

- TODO

? - 接入elasticsearch的sink


學(xué)習(xí)日志 220105 flink mysql connector 問(wèn)題解決的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
集贤县| 南开区| 荥经县| 本溪市| 牙克石市| 内乡县| 铜陵市| 思南县| 洪洞县| 莎车县| 天津市| 门头沟区| 武城县| 凤翔县| 从化市| 建宁县| 大田县| 南漳县| 长春市| 汨罗市| 阿拉善左旗| 绥阳县| 曲水县| 玉门市| 华宁县| 灌阳县| 武平县| 松原市| 霞浦县| 芜湖县| 新干县| 辰溪县| 平和县| 车险| 中江县| 建湖县| 宁波市| 龙岩市| 富裕县| 通州市| 浮山县|