pingcap / tidb-tools

tidb-tools are some useful tool collections for TiDB.
Apache License 2.0
288 stars 193 forks source link

syncer doesn't support mysql as downstream database #90

Open lazzyfu opened 6 years ago

lazzyfu commented 6 years ago

您好: 我的环境是:mysql_1 -> syncer -> mysql_2

当我在mysql_1上创建表tt_11时,成功,但是syncer却报如下错误,谢谢!

2018/10/29 10:37:49 db.go:130: [warning] [exec][sql]USE test; create table tt_11(id int not null AUTO_INCREMENT primary key, name VARCHAR (30));[args][][error]Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create table tt_11(id int not null AUTO_INCREMENT primary key, name VARCHAR (30' at line 1

显然语法是正确的,不知道syncer是否需要作出什么调整还是不兼容multi sql,谢谢

lazzyfu commented 6 years ago

您好,又发现一个问题 还是该环境,环境是:mysql_1 -> syncer -> mysql_2 当我将syncer的worker-count 设置大于1的时候,会出现死锁的问题,我判断应该是多个syncer线程并发插入SQL导致的,但是设置为1的话,速度太慢,求解,谢谢。

lazzyfu commented 6 years ago

如果是tidb的话,syncer开多个线程,会不会由于乐观锁出现数据丢失的问题,而不是mysql的死锁

july2993 commented 6 years ago

2018/10/29 10:37:49 db.go:130: [warning] [exec][sql]USE test; create table tt_11(id int not null AUTO_INCREMENT primary key, name VARCHAR (30));[args][][error]Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create table tt_11(id int not null AUTO_INCREMENT primary key, name VARCHAR (30' at line 1

what 's you mysql version and Syncer version?

will not lost data because somehow relate to lock, please give the problem description instead of just giving you judgement。 when mysql detect the dead lock, Syncer will retry the aborted transaction

lazzyfu commented 6 years ago

hi: source mysql version: aliyun rds 5.6.16 dst mysql version: mysql 5.6.41 syncer version: Release Version: v1.0.0-42-gdb7a248

unsupport DDL: image

deadlock: image

lazzyfu commented 6 years ago

syncer config:

[root@test-broker-slave bin]# more config.toml 
log-level = "info"

server-id = 733306

meta = "./syncer.meta"

worker-count = 4
batch = 10

status-addr = "127.0.0.1:10086"

replicate-do-db = ['test_db']

[from]
...

[to]
...
july2993 commented 6 years ago

sorry, we only test on downstream being TiDB, if you cant to sync data to TiDB, you can test it directly, we may test and improve it using mysql as downstream later