这个事情怎么产生的库分MyCat作为经典的分库分表中间件,在长时间内被广泛认为是表实步管理超大MySQL数据库集合的有效解决方案。近来接到客户需求,时同需要将MyCat集群迁移到GreatSQL中,库分并且在一段时间内需要实时从MyCat中同步数据到GreatSQL中,表实步全量同步数据比较容易操作,时同增量同步有如下两个棘手的库分问题:多个server,不同的亿华云计算表实步库名字,都要同步到GreatSQL一个库中,时同即同步关系如下 复制server1:db1.tab->gdb:db.tab; server2:db2.tab->gdb:db.tab; server3:db3.tab->gdb:db.tab;1.2.3. ddl同步多次执行会冲突。库分当MyCat的表实步表中添加一个索引、添加一个字段时,时同实际上是库分后端所有db都会执行这个DDL,同步到GreatSQL时,表实步多次执行DDL,时同复制会异常中断。 为了解决上面两个问题,WordPress模板经过查询资料,发现有两个不常用,官方也不建议使用的功能,刚好能够满足需求 
 验证一下为了简化问题,MyCat集群咱们就不搭建了,简化为多源同步复制问题。 1.初始化4个实例,同步关系如下源端口 源DB_NAME 目标端口 目标映射DB channel_name 3306 test_rep1 3309 test_rep channel_3306 3307 test_rep2 3309 test_rep channel_3307 3308 test_rep3 3309 test_rep channel_3308 2.在3309的实例配置文件中,添加库映射关系配置和DDL冲突忽略参数复制replicate_rewrite_db="channel_3306:test_rep1->test_rep" replicate_rewrite_db="channel_3307:test_rep2->test_rep" replicate_rewrite_db="channel_3308:test_rep3->test_rep" slave-skip-errors=ddl_exist_errors1.2.3.4.4.在3309实例中,免费源码下载配置三个channel复制greatsql> change master to MASTER_HOST = 172.17.137.91,MASTER_USER = greatsql,MASTER_PASSWORD = greatsql,MASTER_PORT = 3306,MASTER_AUTO_POSITION = 1 FOR CHANNEL channel_3306; greatsql> change master to MASTER_HOST = 172.17.137.91,MASTER_USER = greatsql,MASTER_PASSWORD = greatsql,MASTER_PORT = 3307,MASTER_AUTO_POSITION = 1 FOR CHANNEL channel_3307; greatsql> change master to MASTER_HOST = 172.17.137.91,MASTER_USER = greatsql,MASTER_PASSWORD = greatsql,MASTER_PORT = 3308,MASTER_AUTO_POSITION = 1 FOR CHANNEL channel_3308; greatsql> start slave;1.2.3.4.5.6.7.3.检查channel配置状态复制greatsql> show slave status \G |