elvizlai
(Elvizlai)
21
数据库命名问题暂且抛开不谈,稍后会开另一个issue。现在只同步符合命名规范的数据库及对应表。
目前遇到的问题是比如部分 table 编码问题,想通过 sql-skip 跳过,但是并不生效。
参见以上的日志。总不能每次遇到这种一次性的问题,就需要写类似 event 来解决吧,那指定 pos 的功能还有什么意义。
而且 TiDB 的文档跟当前版本的实践有较大出入。
1、query-error 并不显示对应的错误,只能通过 query-status 来查找
2、query-status 输出的日志 binlog pos 部分是用 逗号 分隔(逗号后面还有个空格),但文档中写的用 冒号 来分隔。
来了老弟
22
对于 utf32 ,tidb 目前是不支持该编码的,所以只能通过修改表结构来解决,可以在下游先修改完表结构在进行数据同步,
关于 sql-skip 的问题,文档中已明确说明,仅可跳过 tidb 不支持的 ddl,当前 ddl 只是 parser 不能解析,在报错中也提到,如果不需要这个 ddl,可以使用 binlog event filter 进行过滤。
query-error 的文档我们看下是否需要优化一下,目前建议以 query-status 为准。(可以上传下 query-error 的返回文本信息)
elvizlai
(Elvizlai)
23
query-error testx
query-error testx
{
"result": true,
"msg": "",
"workers": [
{
"result": true,
"worker": "127.0.0.1:8262",
"msg": "",
"subTaskError": [
{
"name": "testx",
"stage": "Paused",
"unit": "Sync",
"sync": {
"errors": [
]
}
}
],
"RelayError": {
"msg": ""
}
}
]
}
来了老弟
24
感谢反馈,上面的问题是否已经回答清楚,query-error 我们会找研发同学确认,并优化下文档。
elvizlai
(Elvizlai)
25
整个流程断断续续的跑通了。
对于 event filter 部分,还有一点疑问。
parser 部分遇到错误,需要手动更新task文件,添加维护对应的filter,然后走流程 update-task,resume-task对吧?
(比如 utf32 这种字符集问题,如果 filter skip 掉,是不是同步就不对等了)
还是说需要把单独的表拿出来,先在上游修复。然后建立新的task去处理?
来了老弟
26
update-task update a task’s config for routes, filters, or black-white-list
可以在 » help 看到此描述。stop-stask start-task 也可以达到此目的。
如果这个 table 在下游创建一下,因为使用 binlog event filter 会过滤掉匹配到的所有 ddl,不知道这边是怎么写的