tidb-cdc同步mysql没有的特性到mysql时的处理

一、背景

为了保证tidb的稳定运行,我们在tidb的后端接入了一个mysql,但是tidb中又有一些mysql中没有的特性,那这时候cdc会怎么处理呢,下面挑了其中几个常用的特性进行实验

二、实验步骤

1.刷新二进制

# 执行位置:下游mysql
# 目的:为了更容易查看写入到二进制中的真实内容
flush logs

2.创建含SHARD_ROW_ID_BITS特性的表

create table write_hot_3 (id bigint(20) not null, z_name varchar(20), z_info varchar(30),unique key(id)) SHARD_ROW_ID_BITS = 4
PRE_SPLIT_REGIONS=3

create table write_hot_2(id bigint(20) not null auto_random primary key,z_name varchar(20),z_info varchar(30));

insert into write_hot_2(z_name,z_info) values('abc','def');

3.观测结果

3.1 下游建表情况

 show create table write_hot_3;
 CREATE TABLE `write_hot_3` (
  `id` bigint(20) NOT NULL,
  `z_name` varchar(20) DEFAULT NULL,
  `z_info` varchar(30) DEFAULT NULL,
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

show create table write_hot_2;
 CREATE TABLE `write_hot_2` (
  `id` bigint(20) NOT NULL,
  `z_name` varchar(20) DEFAULT NULL,
  `z_info` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb

select * from write_hot_2;

3.2 观察二进制情况

mysqlbinlog --base64-output=decode-rows -vv mysql-bin.000003
# 可以发现二进制中记录的内容是带具体的注释的,说明如果有dm同步的时候,,下游的tidb集群也能创建出包含SHARD_ROW_ID_BITS特性的表
SET @@session.collation_database=DEFAULT/*!*/;
create table write_hot_3 (id bigint(20) not null, z_name varchar(20), z_info varchar(30),unique key(id)) /* 90000 SHARD_ROW_ID_BITS = 4
 PRE_SPLIT_REGIONS=3 */
/*!*/;

# at 523
#220527 10:29:16 server id 1  end_log_pos 732 CRC32 0x0564e224 	Query	thread_id=43	exec_time=0	error_code=0
SET TIMESTAMP=1653618556/*!*/;
create table write_hot_2(id bigint(20) not null /*T![auto_rand] auto_random */ primary key,z_name varchar(20),z_info varchar(30))
/*!*/;

# at 928
#220527 10:34:43 server id 1  end_log_pos 980 CRC32 0x3c2cef4c 	Write_rows: table id 121 flags: STMT_END_F
### INSERT INTO `test_db`.`write_hot_2`
### SET
###   @1=4035225266123964417 /* LONGINT meta=0 nullable=0 is_null=0 */
###   @2='abc' /* VARSTRING(80) meta=80 nullable=1 is_null=0 */
###   @3='def' /* VARSTRING(120) meta=120 nullable=1 is_null=0 */

三、验证的特性

可以正常同步且二进制中保留特性的功能

  1. SHARD_ROW_ID_BITS
  2. auto_random
  3. auto_random的隐式插入

后续实验持续更新

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值