cdc同步数据到mysql,没有同步

您好,我现在得情况是,数据下游直接没动静,然后再 tidb 上操作,cdc日志也是静态得没输出内容。。。而且 processor 列表 也是空的,是不是 processor 没数据导致得,和官网上得显示是不一样得。。。

  • 系统表同步会过滤掉;
  • cdc 可以同步的表需要满足同步限制;确认一下上游是否已经创建过可以同步的表,如果没有可同步表 processor 不会创建,就是空的
  • 从日志看,是没有表可同步,cdc 也在正常推进,没有出错

我是直接在TIDB 上面建立数据库还有建立表得,TIDB 数据库本身就有一个test 数据库,然后我直接操作test 数据库 也是没反应得。您说的同步限制是tidb 默认是不同步系统数据得,其他得库以及表是可以同步到下游得把,那test 库按理说应该在下游展现出来得,但是下游没有数据,还是原始得那些库。

请问您说的 “操作test 数据库” 具体是什么步骤呢?

就是上面我提供得步骤就是我完整得步骤,test 数据库是TIDB 本身就建立得一个库嘛,然后我就直接在test 数据库上面进行了建表以及修改得普通操作,下游是没反应得。。。。 我所做得操作就以下几步: 1.准备了一台mysql 数据库,并且授权 root 123456有所有权限用于测试 2.搭建tidb,搭建完成以后,然后就是在CDC上得一系列操作了 然后就遇到了不同步得问题了。 麻烦看下我是不是漏了哪些操作了

您这个创建changefeed时用的startts太早了。 416704409177948161 对应的时间是 2020/5/16 11:52:50。cdc 的 startts 不能早于 tikv 的 gc safe point,目前 tikv gc 时间默认是 10 分钟

您看的应该是我第一次提交得日志,我后来又发了一次日志得。。。

哦 我看错了,上面发的日志是 5天前的日志。

嗯嗯,请问您那里测试得有问题么?反正 CDC 这里我就没成功过。。一直卡着。。。

此处提供的日志(18小时前上传的那个)看起来是 cdc cli 的日志,麻烦上传三个 cdc 节点的日志

cdc-192.168.1.125.log (608.5 KB) cdc-192.168.1.128.log (1.0 KB) cdc-192.168.1.129.log (1.0 KB)
您好,日志已经提交了,麻烦看下,125 得里面有报错,您看下 我看了服务端口是监听得

“Error 1298: Unknown or incorrect time zone: ‘Local’”

这是一个已知问题,可以通过在启动 cdc server 时设置 --tz 参数 : ./bin/cdc server --tz Asia/Shanghai 或者在 cdc server 所在服务器设置环境变量 TZ=Asia/Shanghai 绕过,在下一个版本将 fix 这个问题

注意 这里的时区要和上游 tidb 时区设置一致

我直接修改 cdc server 脚本 试试看 谢谢,试了试,还是一样,为了方便您查看日志,我这里花点时间再重新搞一次,然后再重新提供日志。。

麻烦了,多谢

添加了然后日志里面报错!

请参考 https://github.com/pingcap/ticdc/issues/165

在下游 mysql 服务器执行 mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql -p 以导入系统时区

这样操作了以后,数据库是可以同步,但是在库里创建表得话,是不能同步得,我再重新部署下,然后提交日志以及截图,感谢您得解答

其实可以不重复部署的,直接上传日志上来也可以,可以节省些时间

我也怕您,浪费时间 - -日志如下cdc.log (154.9 KB) cdc_ctl.log (20.6 KB) cdc_stderr.log (888 字节)%E5%90%8C%E6%AD%A5
test1 库是同步过去得,但是我又新建了个表,表没有过去。。

麻烦提供一下新建表的表结构,下面是 CDC 的使用限制,麻烦检查一下您新建的表是否没有主键且没有唯一索引(唯一索引的要求是 UNIQUE NOT NULL):