我正在使用tidb syncer将数据从mysql复制到tidb。但我并不完全理解警告"will split alter table statement“的意思。
我刚刚发出了下面的简单alter table查询。为什么要拆分语句?它对我的模式或tidb数据有什么影响?
ALTER TABLE `agg_url_base` ADD COLUMN `price` INT NULL AFTER `consumption`下面是tidb的syncer日志。
2019/02/11 07:45:44 meta.go:135: [info] save position to file, binlog-name:mysql-bin.000153 binlog-pos:15852122 binlog-gtid:
2019/02/11 07:45:46 ddl.go:103: [warning] will split alter table statement: ALTER TABLE `agg_url_base` ADD COLUMN `price` INT NULL AFTER `consumption`
2019/02/11 07:45:46 ast.go:508: [info] spec &{node:{text:} Tp:2 Name: Constraint:<nil> Options:[] NewTable:<nil> NewColumns:[0xc0003616c0] OldColumnName:<nil> Position:0xc0005d10a0 LockType:0 Comment: FromKey: ToKey: PartDefinitions:[] Num:0}
2019/02/11 07:45:46 ddl.go:107: [warning] splitted alter table statement: [ALTER TABLE `agg_url_base` ADD COLUMN `price` int(11) NULL AFTER `consumption`]
2019/02/11 07:45:46 syncer.go:745: [info] [query]ALTER TABLE `agg_url_base` ADD COLUMN `price` INT NULL AFTER `consumption` [current pos](mysql-bin.000153, 15852977) [next pos](mysql-bin.000153, 15853214) [current gtid set] [next gtid set]<nil>
2019/02/11 07:45:46 syncer.go:784: [info] [ddl][schema]adn [start]USE `adn`; ALTER TABLE `agg_url_base` ADD COLUMN `price` int(11) NULL AFTER `consumption`;
2019/02/11 07:45:47 meta.go:135: [info] save position to file, binlog-name:mysql-bin.000153 binlog-pos:15853214 binlog-gtid:
2019/02/11 07:45:47 syncer.go:792: [info] [ddl][end]USE `adn`; ALTER TABLE `agg_url_base` ADD COLUMN `price` int(11) NULL AFTER `consumption`;发布于 2019-02-11 21:28:26
为什么要拆分语句
在TiDB中,应该一个接一个地执行多个DDL。如果您在上游MySQL中使用多个DDL执行一个查询(例如在一个查询中修改多个列),那么它将在Syncer中被拆分为多个查询(一个查询只有一个DDL),然后在TiDB中执行。
它如何影响我的tidb模式或数据
如果您的原始查询组合了多个DDL,则查询的效果不会改变,就像逐个执行多个查询一样。事实上,您可以将此警告视为一条信息。
https://stackoverflow.com/questions/54628962
复制相似问题