在数据库没有备份的情况,tidb有没有办法做到,误删数据后的恢复。
想把tidb中以tank_开头的所有数据库都同步到mysql,并且tank_开头的库是不断增加的。所以每次都改配置文件是不合适的。
固定库名同步的请参考:ticdc 同步tidb到mysql
clickhouse中的表基本上都ReplicatedMergeTree+Distributed。而canal只支持单表(从源码中也可以看出),所以做了canal二次开发以实现insert update delete truncate功能。单表和整库都支持。
本文所介绍的canal二次开发,只提供思路,并不能照抄代码。
canal支持mysql到clickhouse,本以为canal会把mysql dml语法转换成clickhouse dml语法,可是并没有。
tidb的官方给出了单台机器的硬盘上限最多2T,量大的很快就会满,扩容就很重要。
clickhouse,tidb,mysql,这三个数据库都是现在在用的。准备了一些测试数据,测试一下读取数据的速度。
clickhouse支持联表查询的。对常用sql的支持比较好。但是也有出人意料的问题。例如:rigth join
clickhouse不支持自增ID,primary key可以重复。这对于习惯了mysql的人来说,肯定很不爽。如果写入到mysql,mysql同步数据到clickhouse,然后从clickhouse来读,这样就很完美了。
采用MaterializeMySQL引擎局限性比较大,同步的表数据只能在clickhouse集群中的某一台机器上,这样集群资源不能充分利用。
我想达到目的,在clickhouse中创建Distributed+ReplicatedMergeTree+zookeeper来实现分布式库和表,然后能过canal把mysql数据同步到过去。这样能充分利用系统资源,也能克服clickhouse的弊端。
ReplicatedMergeTree分布式表引擎,同一分区下利用zookeeper进行同步数据。
Distributed有点类似于mysql merge存储引擎,比较适合读取。
那如果有四台机器,2个分片2个副本,怎么样才能写入快,读取快,并且写入的时候各个分片数据都比较均衡呢?
clickhouse不支持自增ID,primary key可以重复。这对于习惯了mysql的人来说,肯定很不爽。如果写入到mysql,mysql同步数据到clickhouse,然后从clickhouse来读,这样就很完美了。