mysql binlog record insert update delete の記録方法が flink sql と異なる

シリーズ記事ディレクトリ

Practice Data Lake iceberg レッスン 1 はじめに
Practice Data Lake iceberg レッスン 2 Iceberg は Hadoop の基礎となるデータ形式に基づいています
実践 data lake
iceberg sqlclient で、SQL を使用して Kafka から iceberg にデータを読み取ります (バージョンを flink1.12.7 にアップグレードします)
実践 data lake iceberg レッスン 5 ハイブ カタログの特徴演習データ lake iceberg レッスン 6 kafka からiceberg への書き込み
失敗問題解決の演習データファイル演習データ lake iceberg レッスン 10 スナップショット 削除演習データ lake iceberg レッスン 11 テスト パーティション テーブルの整合性 プロセス (数値の作成、テーブルの作成、マージ、およびスナップショットの削除)演習データ lake iceberg レッスン 12 カタログとは 演習データlake iceberg レッスン 13 メタデータデータファイルよりも何倍も大きい演習 data lake iceberg レッスン 14 データマージ (時間の経過とともにメタデータが拡張する問題を解決するため)演習 data lake iceberg レッスン 15 spark インストールと統合 iceberg (jersey パッケージの競合)演習 data lake iceberg レッスン 16 spark3 Door による氷山の認識










演習 data lake iceberg レッスン 17 Hadoop2.7、spark3 on yarn run iceberg 構成
演習 data lake iceberg 演習 18 複数のクライアントが iceberg とやり取りする 開始コマンド (よく使われるコマンド)
演習 data lake iceberg レッスン 19 flink count iceberg , 結果が出ない問題の
演習 data lake iceberg レッスン 20 flink + iceberg CDC シナリオ (バージョンの問題、テスト失敗)
練習データ lake iceberg レッスン 21 flink1.13.5 + iceberg0.131 CDC (テスト成功 INSERT、変更操作失敗)
練習データ lake iceberg レッスン 22 flink1.13.5 + iceberg0. 131 CDC (CRUD テスト成功)
練習データ lake iceberg レッスン 23 flink-sql
チェックポイントから練習データ lake iceberg を再開する レッスン 24 iceberg メタデータの詳細 練習
データ lake iceberg を分析する レッスン 25 flink sql をバックグラウンドで実行する 追加、削除、変更の効果
実践 data lake iceberg レッスン 26 チェックポイントの設定方法
実践 data lake iceberg レッスン 27 Flink cdc テスト プログラムの失敗 再起動: 前回のチェックポイントから再起動して作業を続行できる
実践 data lake iceberg レッスン 28 公共の倉庫に存在しないパッケージをローカルにデプロイする倉庫
の実践 data lake iceberg レッスン 29 flink jobId をエレガントかつ効率的に取得する方法
data lake iceberg レッスン 30 mysql binlog record insert update delete の記録方法は flink sql の記録方法とは異なります



序文

mysqlのbinlogにinsert、update、deleteがどのように記録されているか確認する
flink sqlではupdateがdeleteとinsertに変換されるので、mysqlのbinlogがどのように記録されているか確認したい


1. テーブル ステートメントを作成する

テスト用の挿入、更新、削除のシナリオを構築する

CREATE TABLE `test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `age` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into test values(1,11,'星星之火');
update test set name='星星'  where id=1;
delete from test where id=1;

二、バイナリログ情報

次のコマンドを使用して binlog を確認します。

[root@hadoop103 mysql]# mysqlbinlog -v --base64-output=decode-rows mysql-bin.000002 
CREATE TABLE `test` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `age` int(11) DEFAULT NULL,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
/*!*/;
# at 8899204
#220420 15:47:25 server id 1  end_log_pos 8899269 CRC32 0x9eb77eea      Anonymous_GTID  last_committed=14326    sequence_number=14327   rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 8899269
#220420 15:47:25 server id 1  end_log_pos 8899347 CRC32 0x4668adc8      Query   thread_id=69258 exec_time=0     error_code=0
SET TIMESTAMP=1650440845/*!*/;
BEGIN
/*!*/;
# at 8899347
#220420 15:47:25 server id 1  end_log_pos 8899404 CRC32 0xa1553fa2      Table_map: `xxzh_stock`.`test` mapped to number 265
# at 8899404
#220420 15:47:25 server id 1  end_log_pos 8899466 CRC32 0xadefe641      Write_rows: table id 265 flags: STMT_END_F
### INSERT INTO `xxzh_stock`.`test`
### SET
###   @1=1
###   @2=11
###   @3='星星之火'
# at 8899466
#220420 15:47:25 server id 1  end_log_pos 8899497 CRC32 0xef6b3913      Xid = 13347790
COMMIT/*!*/;
# at 8899497
#220420 15:47:25 server id 1  end_log_pos 8899562 CRC32 0xdd949283      Anonymous_GTID  last_committed=14327    sequence_number=14328   rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 8899562
#220420 15:47:25 server id 1  end_log_pos 8899640 CRC32 0x384e2f34      Query   thread_id=69258 exec_time=0     error_code=0
SET TIMESTAMP=1650440845/*!*/;
BEGIN
/*!*/;
# at 8899640
#220420 15:47:25 server id 1  end_log_pos 8899697 CRC32 0x50755998      Table_map: `xxzh_stock`.`test` mapped to number 265
# at 8899697
#220420 15:47:25 server id 1  end_log_pos 8899781 CRC32 0x65d5e7ac      Update_rows: table id 265 flags: STMT_END_F
### UPDATE `xxzh_stock`.`test`
### WHERE
###   @1=1
###   @2=11
###   @3='星星之火'
### SET
###   @1=1
###   @2=11
###   @3='星星'
# at 8899781
#220420 15:47:25 server id 1  end_log_pos 8899812 CRC32 0xa8f1b87f      Xid = 13347791
COMMIT/*!*/;
# at 8899812
#220420 15:47:25 server id 1  end_log_pos 8899877 CRC32 0x00de2b56      Anonymous_GTID  last_committed=14328    sequence_number=14329   rbr_only=yes
/*!50718 SET TRANSACTION ISOLATION LEVEL READ COMMITTED*//*!*/;
SET @@SESSION.GTID_NEXT= 'ANONYMOUS'/*!*/;
# at 8899877
#220420 15:47:25 server id 1  end_log_pos 8899955 CRC32 0x85923293      Query   thread_id=69258 exec_time=0     error_code=0
SET TIMESTAMP=1650440845/*!*/;
BEGIN
/*!*/;
# at 8899955
#220420 15:47:25 server id 1  end_log_pos 8900012 CRC32 0x402f0426      Table_map: `xxzh_stock`.`test` mapped to number 265
# at 8900012
#220420 15:47:25 server id 1  end_log_pos 8900068 CRC32 0xd81ab133      Delete_rows: table id 265 flags: STMT_END_F
### DELETE FROM `xxzh_stock`.`test`
### WHERE
###   @1=1
###   @2=11
###   @3='星星'
# at 8900068
#220420 15:47:25 server id 1  end_log_pos 8900099 CRC32 0x0755e4b8      Xid = 13347792
COMMIT/*!*/;
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

挿入ステートメント:

### INSERT INTO `xxzh_stock`.`test`
### SET
###   @1=1
###   @2=11
###   @3='星星之火'

更新ステートメント:


### UPDATE `xxzh_stock`.`test`
### WHERE
###   @1=1
###   @2=11
###   @3='星星之火'
### SET
###   @1=1
###   @2=11
###   @3='星星'

削除ステートメント:

### DELETE FROM `xxzh_stock`.`test`
### WHERE
###   @1=1
###   @2=11
###   @3='星星'

要約する

mysql binglog の挿入、更新、および削除はすべて、SQL セマンティクスで直接記録されます。flink-sql の方法とは異なります。

おすすめ

転載: blog.csdn.net/spark_dev/article/details/124299898
おすすめ