想把tidb中以tank_开头的所有数据库都同步到mysql,并且tank_开头的库是不断增加的。所以每次都改配置文件是不合适的。
固定库名同步的请参考:ticdc 同步tidb到mysql
1,mysql创建权限和测试数据库
CREATE USER 'tanktest'@'%' identified by '123456'; create database tank_1; create database tank_2; create database tanktank_1; GRANT ALL PRIVILEGES ON `tank_%`.* TO 'tanktest'@'%'; GRANT ALL PRIVILEGES ON tanktank_1.* TO 'tanktest'@'%'; flush privileges;
数据库tank_1,tank_2,tanktank_1,tidb和mysql都要有。
2,创建ticdc配置文件
$ cat tidb-live-test.toml case-sensitive = true enable-old-value = false [filter] rules = ['tank_*.*'] [mounter] worker-num = 4 [sink] protocol = "default" [cyclic-replication] enable = false replica-id = 1 filter-replica-ids = [2,3] sync-ddl = true
这个tank_*配置不太确定是不是匹配tank_开头,经验证后是以tank_开头
3,启动同步
tiup ctl cdc changefeed create --pd=http://10.0.10.19:2379 --sink-uri="mysql://tanktest:123456@10.0.55.16:3306/?max-txn-row=500&time-zone=" --config tidb-live-test.toml --changefeed-id="tidb-live-test"
4,测试同步
CREATE TABLE `test1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(30) DEFAULT NULL COMMENT '姓名', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin AUTO_INCREMENT=30001 COMMENT='测试'; insert into test1 (name)values('tank1');
在步骤1创建了三个数据库,tank_1,tank_2,tanktank_1,分别在主库创建表和数据,看能不能同步表和数据。然后在创建个tank_3数据库看看能不能同步到mysql。
转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/tidb/2540.html