Bifrost ---- 面向生产环境的 MySQL 同步到Redis,MongoDB,ClickHouse,MySQL等服务的异构中间件

Overview

Bifrost ---- 面向生产环境的 MySQL 同步到Redis,ClickHouse等服务的异构中间件

Gitter Build Status License

English

漫威里的彩虹桥可以将 雷神 送到 阿斯加德 和 地球

而这个 Bifrost 可以将 你 MySQL 里的数据 全量 , 实时的同步到 :


WIKI : https://wiki.xbifrost.com


Bifrost 特点

  • 支持 MySQL 所有存储类型

  • 界面化动态灵活配置不同的数据表及目标库

  • 多数据源,多种目标库支持

  • 同时支持 增量全量 数据同步

  • 一个Binlog解析线程,多个目标库并行同步

  • 宕机后重启自动恢复配置,位点精确控制

  • 支持 Email 及 微信企业号等监控报警功能

  • 提供第三方监控平台访问接口(Http Basic验证)https://wiki.xbifrost.com/api/http_api/

  • MySQL,ClickHouse 插件支持 DDL 同步

  • 简单即可实现插件开发

源码下载

Github , Gitee

你的点击 star 就是对 Bifrost 最大的支持!!!

Bifrost在线界面体验

https://www.xbifrost.com/demo/goto.html

用户名: Bifrost

密码 : Bifrost123

image

Bifrsot Diagram

image

MySQL 版本(经过测试)

  • 5.1.73

  • 5.5.42

  • 5.6.36

  • 5.7.18

  • 8.0.21 (用户密码验证需要采用 mysql_native_password 方式)

安装

编译
git clone https://github.com/brokercap/Bifrost.git

make install prefix=./target
二进制文件安装
wget https://github.com/brokercap/Bifrost/releases/download/v1.7.4-release/bifrost_v1.7.4-release_Linux-amd64-bin.tar.gz

tar -zxvf bifrost_v1.7.4-release_Linux-amd64-bin.tar.gz

cd bifrost_v1.7.4-release_Linux-amd64-bin/bin && chmod a+x ./Bifrost*
启动
./Bifrost-server start
停止
./Bifrost-server stop
界面管理

https://127.0.0.1:21036

用户名和密码是在 etc/Bifrost.ini 配置文件中配置的

默认用户名和密码

用户名:Bifrost

密码:Bifrost123

Docker启动
docker pull jc3wish/bifrost

mkdir -p /data/BifrostData

docker run -d -p21036:21036 -v /etc/localtime:/etc/localtime -v /data/BifrostData:/linux/data jc3wish/bifrost
配置
vim Bifrost.ini

[user]
#登入用户名和密码
#用户名在前,= 号后面是密码
Bifrost=Bifrost123
BifrostMonitor=Bifrost123

[groups]
#administrator 管理人员可以添加删除等操作
#monitor 只能查看数据
Bifrost=administrator
BifrostMonitor=monitor

[Bifrostd]
#log写到入的文件夹,默认为启动文件所在文件夹下的logs目录
#log_dir=/data/log/

#监听端口,默认 0.0.0.0:21036
listen=0.0.0.0:21036

#通过界面配置的信息保存文件夹,默认为启动文件所在文件夹下的data目录
data_dir=./

#设置同步给第三方服务的队列大小,默认5000
toserver_queue_size=10000

#通道队列的大小,默认1000
channel_queue_size=1000

#是否支持动态加plugin so 插件,默认为false
#这个参数只在 linux 下有效,其他平台全部为false
dynamic_plugin=false

#是否支持https
tls=true

#server.key 及 server.crt 相对于 Bifrost 的路径,也可以填绝对路径
tls_key_file=./etc/server.key
tls_crt_file=./etc/server.crt

#是否开启文件队列功能 true|false
file_queue_usable=true

#统计是否启文件队列的时间,单位毫秒
file_queue_usable_count_time_diff=5000

#file_queue_usable_count_time_diff 时间内内存队列被挤满的次数
file_queue_usable_count=10

#采用什么方式存储,默认文件方式
meta_storage_type=redis

#存储介质的连接地址
meta_storage_path=127.0.0.1:6379

#用于区别实例的名字
cluster_name=bifrostTestClusterName

#是否开启文件队列功能 true|false
file_queue_usable=true

#统计是否启文件队列的时间,单位毫秒
file_queue_usable_count_time_diff=5000

#file_queue_usable_count_time_diff 时间内内存队列被挤满的次数
file_queue_usable_count=10

#在没有数据的情况下,间隔多久提交一次插件,单位 秒
plugin_commit_timeout=5

#在同步出错的情况下,每2次重试之后 间隔多久再重试 ,单位 秒
plugin_sync_retry_time=5
生成https证书

参考证书生成

感谢相关依赖包提供者

  • github.com/gmallard/stompngo
  • github.com/hprose/hprose-golang
  • github.com/Shopify/sarama
  • github.com/bradfitz/gomemcache/memcache
  • gopkg.in/mgo.v2
  • github.com/streadway/amqp
  • github.com/go-redis/redis
  • github.com/syndtr/goleveldb/leveldb
  • github.com/ClickHouse/clickhouse-go

QQ群号: 70331601

qq群

捐赠

Issues
  • 请教一下Biforst同步到ClickHouse的问题

    请教一下Biforst同步到ClickHouse的问题

    1.请问对于update delete

    是使用这种方式处理的吗吗 https://mp.weixin.qq.com/s/a8OfsBn9VFnj7oxp0IIVGg ReplacingMergeTree + 视图(argMax)? + is_delete列?

    2.全量数据拉取完成后, 咱们这边是如何知道从哪个点消费binlog做增量呢? 是类似逻辑备份的原理吗

    FLUSH /*!40101 LOCAL */ TABLES ' # 对整个实例加全局读锁,如果存在表锁将阻塞加全局读锁语句'

    FLUSH TABLES WITH READ LOCK ' #在session级别修改隔离级别为RR'

    SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ '# 开启一个一致性快照事务,必须在隔离级别RR下才能开启一个快照事务'

    START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */ '#查看是否开启GTID'

    SHOW VARIABLES LIKE 'gtid_mode' '#如果开启GTID则查看当前的事务GTID集合'

    SELECT @@GLOBAL.GTID_EXECUTED '#查看当前数据的binlog pos'

    SHOW MASTER STATUS
    '#释放全局读锁'

    UNLOCK TABLES

    开始对指定表执行SELECT获取全量数据 FTWRL 目的获取binlog file pos 或 GTID. 开启RR级别保证后续所有表的查询结果都是在一个一致性的视图中获取 增量同步时是根据binlog file pos 还是 GTID呢?

    3.写入clickhouse是否使用batch insert

    对于OLTP数据库 DML可能是频繁地小事务, clickhouse建议batch insert, 避免too many part合并不过来, 咱们这边对源端产生的语句转换为INSERT后有做缓存然后再Batch insert写入clickhouse吗?还是就是源端来1条clickhouse就插一次 比如mysql执行1000个insert , clickhouse是执行1000个insert还是1个insert values1000个?

    4.MySQL源端DDL

    • DDL如何处理? 尤其是使用PT-OST GH-OST等类似工具时

    工具原理是创建影子表, DDL应用在影子表上, 全量增量数据同步后再和源表做切换, 那么消费binlog就不能只是消费源表的binlog还要消费影子表的binlog(至少要消费影子表的ALTER语句)

    • 加索引. 加索引clickhouse会自行忽略吗
    opened by Fanduzi 4
  • add es plugin

    add es plugin

    插件文档: image

    参数配置: image

    checkurl: image

    同步结果: image

    插件自动创建如下mapping (自动发现/转化日期时间,支持毫秒)

    { "mappings": { "properties": {}, "date_detection": true, "dynamic_date_formats": [ "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm:ss.S", "yyyy-MM-dd HH:mm:ss.SS", "yyyy-MM-dd HH:mm:ss.SSS", "yyyy-MM-dd HH:mm:ss.SSSS", "yyyy-MM-dd HH:mm:ss.SSSSS", "yyyy-MM-dd HH:mm:ss.SSSSSS" ] } }

    opened by zhwei820 4
  • 建议修复出现只订阅一个库中部分表时数据同步不及时的问题

    建议修复出现只订阅一个库中部分表时数据同步不及时的问题

    问题

    修复当订阅库中表时,存在表同步不及时的问题。不知道能否算为bug

    问题说明

    image

    如上图所示,当我们只订阅表a时,同时表b一直会有数据写入,此时,往表a中写入数据不会触发plugin_commit_timeout=5这个配置项的条件,只有等到batchsize为1000时才会插入数据到clickhouse中。

    调试步骤

    我们找到了定时器的代码,并加入了日志查看发现,当b表中一直有数据插入时,会进入select的第一个逻辑,然后又把定时器重置(绿色线的逻辑),这样定时器的逻辑永远得不到执行,只能退化为满足batchsize为1000才会插入数据。

    image

    image

    解决方法

    调整定时器重置的逻辑,但是会存在另外一个问题,因为强制的5s刷一次,所以可能会导致插入ck的性能会较低

    opened by liuwenru 2
  • 增加clickhouse 本地表、分布式表,视图等。支持集群模式分布式写入.。同步DDl等功能

    增加clickhouse 本地表、分布式表,视图等。支持集群模式分布式写入.。同步DDl等功能

    1. 增加clickhouse 本地表、分布式表,视图等。支持集群模式分布式写入
    2. 支持在线DDL同步。包含:增加字段,删除字段,修改字段类型,修改字段名称,修改表名称等。
    3. 同步界面增加集群,单机模式可选 ddl同步程度可选
    4. 兼容原单机模式 同时增加单机模式下的 同步DDL功能
    5. 由于涉及到final 效率问题,推荐ck版本为 v20.5.2.7-stable以上(包含)。
    opened by zygitup 2
  • Unknown prepared statement handler (1) given to mysqld_stmt_execute

    Unknown prepared statement handler (1) given to mysqld_stmt_execute

    Version:

    • Bifrost Version: v1.7.4-release
    • Os Version: CentOS Linux release 7.5.1804 (Core)
    • Browse: Chrome
    • mysql版本:MariaDB 10.1.9 (兼容Mysql 5.6)

    Describe the bug

    添加数据源报错,点击 check 按钮,报错:

    image

    Error 1243: Unknown prepared statement handler (1) given to mysqld_stmt_execute
    

    我在网上找到了一个类似的问题: https://github.com/go-sql-driver/mysql/issues/455

    opened by hwy1782 1
  • add nsec format

    add nsec format

    test report:

    ❯ bash ./MySQL_Filed_DataCheck.sh 5.6 dockerName yvIvtPrggbg1x6PKbVja mysqlVerion:5.6 088fdec00a4a2344a55a606f01b0e44fb80d0b7730de248f7160bfae9ca1d5eb 5.6 test 172.17.0.2 VERSION: 1.6.1 2020/12/07 11:48:01 root:[email protected](172.17.0.2:3306)/bifrost_test start connect 2020/12/07 11:48:01 root:[email protected](172.17.0.2:3306)/bifrost_test start success mysql version: 5.6.50-log

    2020/12/07 11:48:01 MysqlVersion: 5.6.50-log 5650 2020/12/07 11:48:01 load data start 2020/12/07 11:48:01 create table binlog_field_test start 2020/12/07 11:48:01 exec sql: CREATE DATABASE /!32312 IF NOT EXISTS/ bifrost_test 2020/12/07 11:48:01 exec sql: DROP TABLE IF EXISTS bifrost_test.binlog_field_test 2020/12/07 11:48:01 exec sql: CREATE TABLE bifrost_test.binlog_field_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,testtinyint tinyint(4) NOT NULL DEFAULT '-1',testsmallint smallint(6) NOT NULL DEFAULT '-2',testmediumint mediumint(8) NOT NULL DEFAULT '-3',testint int(11) NOT NULL DEFAULT '-4',testbigint bigint(20) NOT NULL DEFAULT '-5',testvarchar varchar(10) NOT NULL,testchar char(2) NOT NULL,testenum enum('en1','en2','en3') NOT NULL DEFAULT 'en1',testset set('set1','set2','set3') NOT NULL DEFAULT 'set1',testtime time NOT NULL DEFAULT '00:00:00',testdate date NOT NULL DEFAULT '0000-00-00',testyear year(4) NOT NULL DEFAULT '1989',testtimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,testdatetime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',testfloat float(9,2) NOT NULL DEFAULT '0.00',testdouble double(9,2) NOT NULL DEFAULT '0.00',testdecimal decimal(9,2) NOT NULL DEFAULT '0.00',testdecimal2 decimal(10,4) NOT NULL DEFAULT '0.00',testdecimal3 decimal(20,4) NOT NULL DEFAULT '0.00',testdecimal4 decimal(30,5) NOT NULL DEFAULT '0.00',testtext text NOT NULL,testblob blob NOT NULL,testbit bit(8) NOT NULL DEFAULT b'0',testbool tinyint(1) NOT NULL DEFAULT '0',testmediumblob mediumblob NOT NULL,testlongblob longblob NOT NULL,testtinyblob tinyblob NOT NULL,test_unsinged_tinyint tinyint(4) unsigned NOT NULL DEFAULT '1',test_unsinged_smallint smallint(6) unsigned NOT NULL DEFAULT '2',test_unsinged_mediumint mediumint(8) unsigned NOT NULL DEFAULT '3',test_unsinged_int int(11) unsigned NOT NULL DEFAULT '4',test_unsinged_bigint bigint(20) unsigned NOT NULL DEFAULT '5',testtime2_1 time(1) NOT NULL DEFAULT '00:00:00.0',testtime2_2 time(2) NOT NULL DEFAULT '00:00:00.00',testtime2_3 time(3) NOT NULL DEFAULT '00:00:00.000',testtime2_4 time(4) NOT NULL DEFAULT '00:00:00.0000',testtime2_5 time(5) NOT NULL DEFAULT '00:00:00.00000',testtime2_6 time(6) NOT NULL DEFAULT '00:00:00.000000',testtimestamp2_1 timestamp(1) NOT NULL DEFAULT CURRENT_TIMESTAMP(1),testtimestamp2_2 timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2),testtimestamp2_3 timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),testtimestamp2_4 timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4),testtimestamp2_5 timestamp(5) NOT NULL DEFAULT CURRENT_TIMESTAMP(5),testtimestamp2_6 timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),testdatetime2_1 datetime(1) NOT NULL DEFAULT '0000-00-00 00:00:00.0',testdatetime2_2 datetime(2) NOT NULL DEFAULT '0000-00-00 00:00:00.00',testdatetime2_3 datetime(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000',testdatetime2_4 datetime(4) NOT NULL DEFAULT '0000-00-00 00:00:00.0000',testdatetime2_5 datetime(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000',testdatetime2_6 datetime(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',PRIMARY KEY (id)) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 2020/12/07 11:48:01 create table binlog_field_test over 2020/12/07 11:48:01 sqlstring: INSERT INTO bifrost_test.binlog_field_test (testtinyint,testsmallint,testmediumint,testint,testbigint,testvarchar,testchar,testenum,testset,testtime,testdate,testyear,testtimestamp,testdatetime,testfloat,testdouble,testdecimal,testdecimal2,testdecimal3,testdecimal4,testtext,testblob,testbit,testbool,testmediumblob,testlongblob,testtinyblob,test_unsinged_tinyint,test_unsinged_smallint,test_unsinged_mediumint,test_unsinged_int,test_unsinged_bigint,testtime2_1,testtime2_2,testtime2_3,testtime2_4,testtime2_5,testtime2_6,testtimestamp2_1,testtimestamp2_2,testtimestamp2_3,testtimestamp2_4,testtimestamp2_5,testtimestamp2_6,testdatetime2_1,testdatetime2_2,testdatetime2_3,testdatetime2_4,testdatetime2_5,testdatetime2_6) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) 2020/12/07 11:48:01 data: 50 2020/12/07 11:48:01 columnData: 51 columnListJson: [{"ColumnName":"id","ColumnKey":"PRI","ColumnDefault":"NULL","DataType":"int","Extra":"auto_increment","ColumnType":"int(11) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":true,"AutoIncrement":true,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"testtinyint","ColumnKey":"","ColumnDefault":"-1","DataType":"tinyint","Extra":"","ColumnType":"tinyint(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":3,"Value":null},{"ColumnName":"testsmallint","ColumnKey":"","ColumnDefault":"-2","DataType":"smallint","Extra":"","ColumnType":"smallint(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":5,"Value":null},{"ColumnName":"testmediumint","ColumnKey":"","ColumnDefault":"-3","DataType":"mediumint","Extra":"","ColumnType":"mediumint(8)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":7,"Value":null},{"ColumnName":"testint","ColumnKey":"","ColumnDefault":"-4","DataType":"int","Extra":"","ColumnType":"int(11)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"testbigint","ColumnKey":"","ColumnDefault":"-5","DataType":"bigint","Extra":"","ColumnType":"bigint(20)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":19,"Value":null},{"ColumnName":"testvarchar","ColumnKey":"","ColumnDefault":"NULL","DataType":"varchar","Extra":"","ColumnType":"varchar(10)","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":10,"NumbericPrecision":0,"Value":null},{"ColumnName":"testchar","ColumnKey":"","ColumnDefault":"NULL","DataType":"char","Extra":"","ColumnType":"char(2)","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":2,"NumbericPrecision":0,"Value":null},{"ColumnName":"testenum","ColumnKey":"","ColumnDefault":"en1","DataType":"enum","Extra":"","ColumnType":"enum('en1','en2','en3')","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":["en1","en2","en3"],"SetValues":[],"CharacterMaximumLength":3,"NumbericPrecision":0,"Value":null},{"ColumnName":"testset","ColumnKey":"","ColumnDefault":"set1","DataType":"set","Extra":"","ColumnType":"set('set1','set2','set3')","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":["set1","set2","set3"],"CharacterMaximumLength":14,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime","ColumnKey":"","ColumnDefault":"00:00:00","DataType":"time","Extra":"","ColumnType":"time","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdate","ColumnKey":"","ColumnDefault":"0000-00-00","DataType":"date","Extra":"","ColumnType":"date","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testyear","ColumnKey":"","ColumnDefault":"1989","DataType":"year","Extra":"","ColumnType":"year(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP","DataType":"timestamp","Extra":"","ColumnType":"timestamp","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00","DataType":"datetime","Extra":"","ColumnType":"datetime","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testfloat","ColumnKey":"","ColumnDefault":"0.00","DataType":"float","Extra":"","ColumnType":"float(9,2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":2,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":9,"Value":null},{"ColumnName":"testdouble","ColumnKey":"","ColumnDefault":"0.00","DataType":"double","Extra":"","ColumnType":"double(9,2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":2,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":9,"Value":null},{"ColumnName":"testdecimal","ColumnKey":"","ColumnDefault":"0.00","DataType":"decimal","Extra":"","ColumnType":"decimal(9,2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":2,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":9,"Value":null},{"ColumnName":"testdecimal2","ColumnKey":"","ColumnDefault":"0.0000","DataType":"decimal","Extra":"","ColumnType":"decimal(10,4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":4,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"testdecimal3","ColumnKey":"","ColumnDefault":"0.0000","DataType":"decimal","Extra":"","ColumnType":"decimal(20,4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":4,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":20,"Value":null},{"ColumnName":"testdecimal4","ColumnKey":"","ColumnDefault":"0.00000","DataType":"decimal","Extra":"","ColumnType":"decimal(30,5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":5,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":30,"Value":null},{"ColumnName":"testtext","ColumnKey":"","ColumnDefault":"NULL","DataType":"text","Extra":"","ColumnType":"text","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":65535,"NumbericPrecision":0,"Value":null},{"ColumnName":"testblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"blob","Extra":"","ColumnType":"blob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":65535,"NumbericPrecision":0,"Value":null},{"ColumnName":"testbit","ColumnKey":"","ColumnDefault":"","DataType":"bit","Extra":"","ColumnType":"bit(8)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":8,"Value":null},{"ColumnName":"testbool","ColumnKey":"","ColumnDefault":"0","DataType":"tinyint","Extra":"","ColumnType":"tinyint(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":true,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":3,"Value":null},{"ColumnName":"testmediumblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"mediumblob","Extra":"","ColumnType":"mediumblob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":16777215,"NumbericPrecision":0,"Value":null},{"ColumnName":"testlongblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"longblob","Extra":"","ColumnType":"longblob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":4294967295,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtinyblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"tinyblob","Extra":"","ColumnType":"tinyblob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":255,"NumbericPrecision":0,"Value":null},{"ColumnName":"test_unsinged_tinyint","ColumnKey":"","ColumnDefault":"1","DataType":"tinyint","Extra":"","ColumnType":"tinyint(4) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":3,"Value":null},{"ColumnName":"test_unsinged_smallint","ColumnKey":"","ColumnDefault":"2","DataType":"smallint","Extra":"","ColumnType":"smallint(6) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":5,"Value":null},{"ColumnName":"test_unsinged_mediumint","ColumnKey":"","ColumnDefault":"3","DataType":"mediumint","Extra":"","ColumnType":"mediumint(8) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":7,"Value":null},{"ColumnName":"test_unsinged_int","ColumnKey":"","ColumnDefault":"4","DataType":"int","Extra":"","ColumnType":"int(11) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"test_unsinged_bigint","ColumnKey":"","ColumnDefault":"5","DataType":"bigint","Extra":"","ColumnType":"bigint(20) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":20,"Value":null},{"ColumnName":"testtime2_1","ColumnKey":"","ColumnDefault":"00:00:00.0","DataType":"time","Extra":"","ColumnType":"time(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_2","ColumnKey":"","ColumnDefault":"00:00:00.00","DataType":"time","Extra":"","ColumnType":"time(2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_3","ColumnKey":"","ColumnDefault":"00:00:00.000","DataType":"time","Extra":"","ColumnType":"time(3)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_4","ColumnKey":"","ColumnDefault":"00:00:00.0000","DataType":"time","Extra":"","ColumnType":"time(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_5","ColumnKey":"","ColumnDefault":"00:00:00.00000","DataType":"time","Extra":"","ColumnType":"time(5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_6","ColumnKey":"","ColumnDefault":"00:00:00.000000","DataType":"time","Extra":"","ColumnType":"time(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_1","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(1)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_2","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(2)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_3","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(3)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(3)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_4","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(4)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_5","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(5)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_6","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(6)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_1","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.0","DataType":"datetime","Extra":"","ColumnType":"datetime(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_2","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.00","DataType":"datetime","Extra":"","ColumnType":"datetime(2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_3","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.000","DataType":"datetime","Extra":"","ColumnType":"datetime(3)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_4","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.0000","DataType":"datetime","Extra":"","ColumnType":"datetime(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_5","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.00000","DataType":"datetime","Extra":"","ColumnType":"datetime(5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_6","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.000000","DataType":"datetime","Extra":"","ColumnType":"datetime(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null}] 2020/12/07 11:48:01 testtimestamp2_2 == 2020-12-07 11:11:48.50 ( string ) 2020/12/07 11:48:01 testtimestamp2_5 == 2020-12-07 11:11:48.50221 ( string ) 2020/12/07 11:48:01 testdatetime2_5 == 2020-12-07 11:11:48.50231 ( string ) 2020/12/07 11:48:01 testvarchar == {'wiWk}}y6 ( string ) 2020/12/07 11:48:01 testdecimal3 == -8085634291040289.5385 ( string ) 2020/12/07 11:48:01 test_unsinged_mediumint == 16777215 ( uint32 ) 2020/12/07 11:48:01 testtime2_2 == 11:11:48.50 ( string ) 2020/12/07 11:48:01 id == ( ) 2020/12/07 11:48:01 testtimestamp2_1 == 2020-12-07 11:11:48.5 ( string ) 2020/12/07 11:48:01 testtimestamp2_6 == 2020-12-07 11:11:48.502233 ( string ) 2020/12/07 11:48:01 testdatetime2_4 == 2020-12-07 11:11:48.5022 ( string ) 2020/12/07 11:48:01 testint == 2147483647 ( int32 ) 2020/12/07 11:48:01 testtinyblob == 9<ETl0X8\57Pv}D5hcyFF|b9TrKo{5#~YT|[XKE49-n0S+UmQwgL=i"GBv9y ( string ) 2020/12/07 11:48:01 testtime2_4 == 11:11:48.5020 ( string ) 2020/12/07 11:48:01 testtime2_6 == 11:11:48.502124 ( string ) 2020/12/07 11:48:01 testdatetime2_6 == 2020-12-07 11:11:48.502331 ( string ) 2020/12/07 11:48:01 testbigint == 60 ( int64 ) 2020/12/07 11:48:01 testbit == 82 ( int64 ) 2020/12/07 11:48:01 test_unsinged_bigint == 65 ( uint64 ) 2020/12/07 11:48:01 testdatetime2_1 == 2020-12-07 11:11:48.5 ( string ) 2020/12/07 11:48:01 testdecimal == 3457475.54 ( string ) 2020/12/07 11:48:01 testtext == o%6TZkbnoG%;Hi+d"[email protected]={1r%k{?s;+V数数数试试数数据据数数测据试 ( string ) 2020/12/07 11:48:01 testmediumblob == [email protected]\C9%V#^?4Mw]=cn0JSrjgg8 ( string ) 2020/12/07 11:48:01 testtime2_1 == 11:11:48.5 ( string ) 2020/12/07 11:48:01 testtinyint == 127 ( int8 ) 2020/12/07 11:48:01 testsmallint == -32768 ( int16 ) 2020/12/07 11:48:01 testdate == 2020-12-07 ( string ) 2020/12/07 11:48:01 testdouble == -756029.63 ( float64 ) 2020/12/07 11:48:01 testtimestamp2_3 == 2020-12-07 11:11:48.502 ( string ) 2020/12/07 11:48:01 test_unsinged_smallint == 65535 ( uint16 ) 2020/12/07 11:48:01 testtime2_3 == 11:11:48.502 ( string ) 2020/12/07 11:48:01 testdatetime == 2020-12-07 11:11:48 ( string ) 2020/12/07 11:48:01 testfloat == -968234.9 ( float32 ) 2020/12/07 11:48:01 testdecimal4 == -337979813123686641.80815 ( string ) 2020/12/07 11:48:01 testlongblob == -UBa`="JlS,- ( string ) 2020/12/07 11:48:01 testdecimal2 == -50031.9633 ( string ) 2020/12/07 11:48:01 testbool == true ( bool ) 2020/12/07 11:48:01 test_unsinged_tinyint == 255 ( uint8 ) 2020/12/07 11:48:01 testtimestamp2_4 == 2020-12-07 11:11:48.5022 ( string ) 2020/12/07 11:48:01 testenum == en1 ( string ) 2020/12/07 11:48:01 testset == [set1 set3] ( []string ) 2020/12/07 11:48:01 testtime == 11:11:48 ( string ) 2020/12/07 11:48:01 testyear == 2020 ( string ) 2020/12/07 11:48:01 test_unsinged_int == 4294967295 ( uint32 ) 2020/12/07 11:48:01 testtime2_5 == 11:11:48.50210 ( string ) 2020/12/07 11:48:01 testdatetime2_2 == 2020-12-07 11:11:48.50 ( string ) 2020/12/07 11:48:01 testdatetime2_3 == 2020-12-07 11:11:48.502 ( string ) 2020/12/07 11:48:01 testmediumint == 8388607 ( int32 ) 2020/12/07 11:48:01 testchar == ( string ) 2020/12/07 11:48:01 testtimestamp == 2020-12-07 11:11:48 ( string ) 2020/12/07 11:48:01 testblob == [email protected]*uRTcK52k= ( string )

    2020/12/07 11:48:01 sql exec ResultL: {1 1} 2020/12/07 11:48:01 load data over 2020/12/07 11:48:01 Bristol AddReplicateDoDb, bifrost_test binlog_field_test 2020/12/07 11:48:01 Version: 1.6.1 2020/12/07 11:48:01 Bristol version: v1.6.0 2020/12/07 11:48:01 filename: mysql-bin.000004 position: 120 2020/12/07 11:48:01 root:[email protected](172.17.0.2:3306)/bifrost_test start DumpBinlog... filename: mysql-bin.000004 position: 120 2020/12/07 11:48:01 monitor reslut:starting 2020/12/07 11:48:01 monitor reslut:running 2020/12/07 11:48:01 binlog_checksum: true 2020/12/07 11:48:01 root:[email protected](172.17.0.2:3306)/bifrost_test ROTATE_EVENT mysql-bin.000004 2020/12/07 11:48:01 &{{1607312881 2 1 156 421 4} [] DROP TABLE IF EXISTS binlog_field_test /* generated by server / bifrost_test binlog_field_test mysql-bin.000004 421 []} 2020/12/07 11:48:01 &{{1607312881 2 1 2979 3400 0} [] CREATE TABLE bifrost_test.binlog_field_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,testtinyint tinyint(4) NOT NULL DEFAULT '-1',testsmallint smallint(6) NOT NULL DEFAULT '-2',testmediumint mediumint(8) NOT NULL DEFAULT '-3',testint int(11) NOT NULL DEFAULT '-4',testbigint bigint(20) NOT NULL DEFAULT '-5',testvarchar varchar(10) NOT NULL,testchar char(2) NOT NULL,testenum enum('en1','en2','en3') NOT NULL DEFAULT 'en1',testset set('set1','set2','set3') NOT NULL DEFAULT 'set1',testtime time NOT NULL DEFAULT '00:00:00',testdate date NOT NULL DEFAULT '0000-00-00',testyear year(4) NOT NULL DEFAULT '1989',testtimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,testdatetime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',testfloat float(9,2) NOT NULL DEFAULT '0.00',testdouble double(9,2) NOT NULL DEFAULT '0.00',testdecimal decimal(9,2) NOT NULL DEFAULT '0.00',testdecimal2 decimal(10,4) NOT NULL DEFAULT '0.00',testdecimal3 decimal(20,4) NOT NULL DEFAULT '0.00',testdecimal4 decimal(30,5) NOT NULL DEFAULT '0.00',testtext text NOT NULL,testblob blob NOT NULL,testbit bit(8) NOT NULL DEFAULT b'0',testbool tinyint(1) NOT NULL DEFAULT '0',testmediumblob mediumblob NOT NULL,testlongblob longblob NOT NULL,testtinyblob tinyblob NOT NULL,test_unsinged_tinyint tinyint(4) unsigned NOT NULL DEFAULT '1',test_unsinged_smallint smallint(6) unsigned NOT NULL DEFAULT '2',test_unsinged_mediumint mediumint(8) unsigned NOT NULL DEFAULT '3',test_unsinged_int int(11) unsigned NOT NULL DEFAULT '4',test_unsinged_bigint bigint(20) unsigned NOT NULL DEFAULT '5',testtime2_1 time(1) NOT NULL DEFAULT '00:00:00.0',testtime2_2 time(2) NOT NULL DEFAULT '00:00:00.00',testtime2_3 time(3) NOT NULL DEFAULT '00:00:00.000',testtime2_4 time(4) NOT NULL DEFAULT '00:00:00.0000',testtime2_5 time(5) NOT NULL DEFAULT '00:00:00.00000',testtime2_6 time(6) NOT NULL DEFAULT '00:00:00.000000',testtimestamp2_1 timestamp(1) NOT NULL DEFAULT CURRENT_TIMESTAMP(1),testtimestamp2_2 timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2),testtimestamp2_3 timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),testtimestamp2_4 timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4),testtimestamp2_5 timestamp(5) NOT NULL DEFAULT CURRENT_TIMESTAMP(5),testtimestamp2_6 timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),testdatetime2_1 datetime(1) NOT NULL DEFAULT '0000-00-00 00:00:00.0',testdatetime2_2 datetime(2) NOT NULL DEFAULT '0000-00-00 00:00:00.00',testdatetime2_3 datetime(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000',testdatetime2_4 datetime(4) NOT NULL DEFAULT '0000-00-00 00:00:00.0000',testdatetime2_5 datetime(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000',testdatetime2_6 datetime(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',PRIMARY KEY (id)) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 bifrost_test binlog_field_test mysql-bin.000004 3400 []} 2020/12/07 11:48:01 testdate == 2020-12-07 2020/12/07 11:48:01 testbool == true 2020/12/07 11:48:01 testtime2_5 == 11:11:48.50210 2020/12/07 11:48:01 testtimestamp2_2 == 2020-12-07 11:11:48.50 2020/12/07 11:48:01 testtimestamp2_5 == 2020-12-07 11:11:48.50221 2020/12/07 11:48:01 testtime2_3 == 11:11:48.502 2020/12/07 11:48:01 testtimestamp2_6 == 2020-12-07 11:11:48.502233 2020/12/07 11:48:01 testtinyint == 127 2020/12/07 11:48:01 testint == 2147483647 2020/12/07 11:48:01 testenum == en1 2020/12/07 11:48:01 testtext == o%6TZkbnoG%;Hi+d"[email protected]={1r%k{?s;+V数数数试试数数据据数数测据试 2020/12/07 11:48:01 testbit == 82 2020/12/07 11:48:01 testlongblob == -UBa`="JlS,- 2020/12/07 11:48:01 testtinyblob == 9<ETl0X8\57Pv}D5hcyFF|b9TrKo{5#~YT|[XKE49-n0S+UmQwgL=i"GBv9*y 2020/12/07 11:48:01 test_unsinged_mediumint == 16777215 2020/12/07 11:48:01 testmediumint == 8388607 2020/12/07 11:48:01 testvarchar == {'wiWk}}y6 2020/12/07 11:48:01 testtime == 11:11:48 2020/12/07 11:48:01 testtimestamp == 2020-12-07 11:11:48 2020/12/07 11:48:01 testblob == [email protected]*uRTcK52k= 2020/12/07 11:48:01 testmediumblob == [email protected]\C9%V#^?4Mw]=cn0JSrjgg8 2020/12/07 11:48:01 testtime2_4 == 11:11:48.5020 2020/12/07 11:48:01 testtimestamp2_1 == 2020-12-07 11:11:48.5 2020/12/07 11:48:01 testdatetime2_1 == 2020-12-07 11:11:48.5 2020/12/07 11:48:01 test_unsinged_bigint == 65 2020/12/07 11:48:01 testtime2_2 == 11:11:48.50 2020/12/07 11:48:01 testdatetime2_3 == 2020-12-07 11:11:48.502 2020/12/07 11:48:01 testdatetime2_4 == 2020-12-07 11:11:48.5022 2020/12/07 11:48:01 testdatetime2_6 == 2020-12-07 11:11:48.502331 2020/12/07 11:48:01 testbigint == 60 2020/12/07 11:48:01 testdecimal2 == -50031.9633 2020/12/07 11:48:01 test_unsinged_tinyint == 255 2020/12/07 11:48:01 testtimestamp2_3 == 2020-12-07 11:11:48.502 2020/12/07 11:48:01 testtimestamp2_4 == 2020-12-07 11:11:48.5022 2020/12/07 11:48:01 testchar == 2020/12/07 11:48:01 testdatetime == 2020-12-07 11:11:48 2020/12/07 11:48:01 testdecimal == 3457475.54 2020/12/07 11:48:01 test_unsinged_smallint == 65535 2020/12/07 11:48:01 testtime2_1 == 11:11:48.5 2020/12/07 11:48:01 testtime2_6 == 11:11:48.502124 2020/12/07 11:48:01 testdatetime2_2 == 2020-12-07 11:11:48.50 2020/12/07 11:48:01 testdatetime2_5 == 2020-12-07 11:11:48.50231 2020/12/07 11:48:01 testset == [set1 set3] 2020/12/07 11:48:01 testfloat == -968234.9 2020/12/07 11:48:01 testdouble == -756029.63 2020/12/07 11:48:01 testdecimal3 == -8085634291040289.5385 2020/12/07 11:48:01 testdecimal4 == -337979813123686641.80815 2020/12/07 11:48:01 test_unsinged_int == 4294967295 2020/12/07 11:48:01 id == 1 is AutoIncrement 2020/12/07 11:48:01 testsmallint == -32768 2020/12/07 11:48:01 testyear == 2020

    2020/12/07 11:48:01 id == 1 2020/12/07 11:48:01 type and value is all right yvIvtPrggbg1x6PKbVja yvIvtPrggbg1x6PKbVja over

    =========================

    ❯ bash ./MySQL_Filed_DataCheck.sh 5.7 dockerName ktWOd6jgYw3qB2OAtGxN mysqlVerion:5.7 1dbc3b1679c176d97da28d1617818d0f545e04d045b28ca6f3f7c8b5cb6f81aa 172.17.0.2 VERSION: 1.6.1 2020/12/07 11:51:01 root:[email protected](172.17.0.2:3306)/bifrost_test start connect 2020/12/07 11:51:01 root:[email protected](172.17.0.2:3306)/bifrost_test start success mysql version: 5.7.32-log

    2020/12/07 11:51:01 MysqlVersion: 5.7.32-log 5732 2020/12/07 11:51:01 load data start 2020/12/07 11:51:01 create table binlog_field_test start 2020/12/07 11:51:01 exec sql: CREATE DATABASE /!32312 IF NOT EXISTS/ bifrost_test 2020/12/07 11:51:01 exec sql: DROP TABLE IF EXISTS bifrost_test.binlog_field_test 2020/12/07 11:51:01 exec sql: CREATE TABLE bifrost_test.binlog_field_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,testtinyint tinyint(4) NOT NULL DEFAULT '-1',testsmallint smallint(6) NOT NULL DEFAULT '-2',testmediumint mediumint(8) NOT NULL DEFAULT '-3',testint int(11) NOT NULL DEFAULT '-4',testbigint bigint(20) NOT NULL DEFAULT '-5',testvarchar varchar(10) NOT NULL,testchar char(2) NOT NULL,testenum enum('en1','en2','en3') NOT NULL DEFAULT 'en1',testset set('set1','set2','set3') NOT NULL DEFAULT 'set1',testtime time NOT NULL DEFAULT '00:00:00',testdate date NOT NULL DEFAULT '0000-00-00',testyear year(4) NOT NULL DEFAULT '1989',testtimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,testdatetime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',testfloat float(9,2) NOT NULL DEFAULT '0.00',testdouble double(9,2) NOT NULL DEFAULT '0.00',testdecimal decimal(9,2) NOT NULL DEFAULT '0.00',testdecimal2 decimal(10,4) NOT NULL DEFAULT '0.00',testdecimal3 decimal(20,4) NOT NULL DEFAULT '0.00',testdecimal4 decimal(30,5) NOT NULL DEFAULT '0.00',testtext text NOT NULL,testblob blob NOT NULL,testbit bit(8) NOT NULL DEFAULT b'0',testbool tinyint(1) NOT NULL DEFAULT '0',testmediumblob mediumblob NOT NULL,testlongblob longblob NOT NULL,testtinyblob tinyblob NOT NULL,test_unsinged_tinyint tinyint(4) unsigned NOT NULL DEFAULT '1',test_unsinged_smallint smallint(6) unsigned NOT NULL DEFAULT '2',test_unsinged_mediumint mediumint(8) unsigned NOT NULL DEFAULT '3',test_unsinged_int int(11) unsigned NOT NULL DEFAULT '4',test_unsinged_bigint bigint(20) unsigned NOT NULL DEFAULT '5',testtime2_1 time(1) NOT NULL DEFAULT '00:00:00.0',testtime2_2 time(2) NOT NULL DEFAULT '00:00:00.00',testtime2_3 time(3) NOT NULL DEFAULT '00:00:00.000',testtime2_4 time(4) NOT NULL DEFAULT '00:00:00.0000',testtime2_5 time(5) NOT NULL DEFAULT '00:00:00.00000',testtime2_6 time(6) NOT NULL DEFAULT '00:00:00.000000',testtimestamp2_1 timestamp(1) NOT NULL DEFAULT CURRENT_TIMESTAMP(1),testtimestamp2_2 timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2),testtimestamp2_3 timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),testtimestamp2_4 timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4),testtimestamp2_5 timestamp(5) NOT NULL DEFAULT CURRENT_TIMESTAMP(5),testtimestamp2_6 timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),testdatetime2_1 datetime(1) NOT NULL DEFAULT '0000-00-00 00:00:00.0',testdatetime2_2 datetime(2) NOT NULL DEFAULT '0000-00-00 00:00:00.00',testdatetime2_3 datetime(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000',testdatetime2_4 datetime(4) NOT NULL DEFAULT '0000-00-00 00:00:00.0000',testdatetime2_5 datetime(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000',testdatetime2_6 datetime(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',test_json json,PRIMARY KEY (id)) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 2020/12/07 11:51:01 create table binlog_field_test over 2020/12/07 11:51:01 sqlstring: INSERT INTO bifrost_test.binlog_field_test (testtinyint,testsmallint,testmediumint,testint,testbigint,testvarchar,testchar,testenum,testset,testtime,testdate,testyear,testtimestamp,testdatetime,testfloat,testdouble,testdecimal,testdecimal2,testdecimal3,testdecimal4,testtext,testblob,testbit,testbool,testmediumblob,testlongblob,testtinyblob,test_unsinged_tinyint,test_unsinged_smallint,test_unsinged_mediumint,test_unsinged_int,test_unsinged_bigint,testtime2_1,testtime2_2,testtime2_3,testtime2_4,testtime2_5,testtime2_6,testtimestamp2_1,testtimestamp2_2,testtimestamp2_3,testtimestamp2_4,testtimestamp2_5,testtimestamp2_6,testdatetime2_1,testdatetime2_2,testdatetime2_3,testdatetime2_4,testdatetime2_5,testdatetime2_6,test_json) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) 2020/12/07 11:51:01 data: 51 2020/12/07 11:51:01 columnData: 52 columnListJson: [{"ColumnName":"id","ColumnKey":"PRI","ColumnDefault":"NULL","DataType":"int","Extra":"auto_increment","ColumnType":"int(11) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":true,"AutoIncrement":true,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"testtinyint","ColumnKey":"","ColumnDefault":"-1","DataType":"tinyint","Extra":"","ColumnType":"tinyint(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":3,"Value":null},{"ColumnName":"testsmallint","ColumnKey":"","ColumnDefault":"-2","DataType":"smallint","Extra":"","ColumnType":"smallint(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":5,"Value":null},{"ColumnName":"testmediumint","ColumnKey":"","ColumnDefault":"-3","DataType":"mediumint","Extra":"","ColumnType":"mediumint(8)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":7,"Value":null},{"ColumnName":"testint","ColumnKey":"","ColumnDefault":"-4","DataType":"int","Extra":"","ColumnType":"int(11)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"testbigint","ColumnKey":"","ColumnDefault":"-5","DataType":"bigint","Extra":"","ColumnType":"bigint(20)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":19,"Value":null},{"ColumnName":"testvarchar","ColumnKey":"","ColumnDefault":"NULL","DataType":"varchar","Extra":"","ColumnType":"varchar(10)","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":10,"NumbericPrecision":0,"Value":null},{"ColumnName":"testchar","ColumnKey":"","ColumnDefault":"NULL","DataType":"char","Extra":"","ColumnType":"char(2)","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":2,"NumbericPrecision":0,"Value":null},{"ColumnName":"testenum","ColumnKey":"","ColumnDefault":"en1","DataType":"enum","Extra":"","ColumnType":"enum('en1','en2','en3')","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":["en1","en2","en3"],"SetValues":[],"CharacterMaximumLength":3,"NumbericPrecision":0,"Value":null},{"ColumnName":"testset","ColumnKey":"","ColumnDefault":"set1","DataType":"set","Extra":"","ColumnType":"set('set1','set2','set3')","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":["set1","set2","set3"],"CharacterMaximumLength":14,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime","ColumnKey":"","ColumnDefault":"00:00:00","DataType":"time","Extra":"","ColumnType":"time","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdate","ColumnKey":"","ColumnDefault":"0000-00-00","DataType":"date","Extra":"","ColumnType":"date","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testyear","ColumnKey":"","ColumnDefault":"1989","DataType":"year","Extra":"","ColumnType":"year(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP","DataType":"timestamp","Extra":"","ColumnType":"timestamp","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00","DataType":"datetime","Extra":"","ColumnType":"datetime","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testfloat","ColumnKey":"","ColumnDefault":"0.00","DataType":"float","Extra":"","ColumnType":"float(9,2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":2,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":9,"Value":null},{"ColumnName":"testdouble","ColumnKey":"","ColumnDefault":"0.00","DataType":"double","Extra":"","ColumnType":"double(9,2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":2,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":9,"Value":null},{"ColumnName":"testdecimal","ColumnKey":"","ColumnDefault":"0.00","DataType":"decimal","Extra":"","ColumnType":"decimal(9,2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":2,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":9,"Value":null},{"ColumnName":"testdecimal2","ColumnKey":"","ColumnDefault":"0.0000","DataType":"decimal","Extra":"","ColumnType":"decimal(10,4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":4,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"testdecimal3","ColumnKey":"","ColumnDefault":"0.0000","DataType":"decimal","Extra":"","ColumnType":"decimal(20,4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":4,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":20,"Value":null},{"ColumnName":"testdecimal4","ColumnKey":"","ColumnDefault":"0.00000","DataType":"decimal","Extra":"","ColumnType":"decimal(30,5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":5,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":30,"Value":null},{"ColumnName":"testtext","ColumnKey":"","ColumnDefault":"NULL","DataType":"text","Extra":"","ColumnType":"text","CharacterSetName":"utf8","CollationName":"utf8_general_ci","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":65535,"NumbericPrecision":0,"Value":null},{"ColumnName":"testblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"blob","Extra":"","ColumnType":"blob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":65535,"NumbericPrecision":0,"Value":null},{"ColumnName":"testbit","ColumnKey":"","ColumnDefault":"","DataType":"bit","Extra":"","ColumnType":"bit(8)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":8,"Value":null},{"ColumnName":"testbool","ColumnKey":"","ColumnDefault":"0","DataType":"tinyint","Extra":"","ColumnType":"tinyint(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":true,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":3,"Value":null},{"ColumnName":"testmediumblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"mediumblob","Extra":"","ColumnType":"mediumblob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":16777215,"NumbericPrecision":0,"Value":null},{"ColumnName":"testlongblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"longblob","Extra":"","ColumnType":"longblob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":4294967295,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtinyblob","ColumnKey":"","ColumnDefault":"NULL","DataType":"tinyblob","Extra":"","ColumnType":"tinyblob","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":255,"NumbericPrecision":0,"Value":null},{"ColumnName":"test_unsinged_tinyint","ColumnKey":"","ColumnDefault":"1","DataType":"tinyint","Extra":"","ColumnType":"tinyint(4) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":3,"Value":null},{"ColumnName":"test_unsinged_smallint","ColumnKey":"","ColumnDefault":"2","DataType":"smallint","Extra":"","ColumnType":"smallint(6) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":5,"Value":null},{"ColumnName":"test_unsinged_mediumint","ColumnKey":"","ColumnDefault":"3","DataType":"mediumint","Extra":"","ColumnType":"mediumint(8) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":7,"Value":null},{"ColumnName":"test_unsinged_int","ColumnKey":"","ColumnDefault":"4","DataType":"int","Extra":"","ColumnType":"int(11) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":10,"Value":null},{"ColumnName":"test_unsinged_bigint","ColumnKey":"","ColumnDefault":"5","DataType":"bigint","Extra":"","ColumnType":"bigint(20) unsigned","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":true,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":20,"Value":null},{"ColumnName":"testtime2_1","ColumnKey":"","ColumnDefault":"00:00:00.0","DataType":"time","Extra":"","ColumnType":"time(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_2","ColumnKey":"","ColumnDefault":"00:00:00.00","DataType":"time","Extra":"","ColumnType":"time(2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_3","ColumnKey":"","ColumnDefault":"00:00:00.000","DataType":"time","Extra":"","ColumnType":"time(3)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_4","ColumnKey":"","ColumnDefault":"00:00:00.0000","DataType":"time","Extra":"","ColumnType":"time(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_5","ColumnKey":"","ColumnDefault":"00:00:00.00000","DataType":"time","Extra":"","ColumnType":"time(5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtime2_6","ColumnKey":"","ColumnDefault":"00:00:00.000000","DataType":"time","Extra":"","ColumnType":"time(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_1","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(1)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_2","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(2)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_3","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(3)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(3)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_4","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(4)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_5","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(5)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testtimestamp2_6","ColumnKey":"","ColumnDefault":"CURRENT_TIMESTAMP(6)","DataType":"timestamp","Extra":"","ColumnType":"timestamp(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_1","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.0","DataType":"datetime","Extra":"","ColumnType":"datetime(1)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_2","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.00","DataType":"datetime","Extra":"","ColumnType":"datetime(2)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_3","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.000","DataType":"datetime","Extra":"","ColumnType":"datetime(3)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_4","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.0000","DataType":"datetime","Extra":"","ColumnType":"datetime(4)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_5","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.00000","DataType":"datetime","Extra":"","ColumnType":"datetime(5)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"testdatetime2_6","ColumnKey":"","ColumnDefault":"0000-00-00 00:00:00.000000","DataType":"datetime","Extra":"","ColumnType":"datetime(6)","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null},{"ColumnName":"test_json","ColumnKey":"","ColumnDefault":"NULL","DataType":"json","Extra":"","ColumnType":"json","CharacterSetName":"NULL","CollationName":"NULL","NumbericScale":0,"IsBool":false,"Unsigned":false,"IsPrimary":false,"AutoIncrement":false,"EnumValues":[],"SetValues":[],"CharacterMaximumLength":0,"NumbericPrecision":0,"Value":null}] 2020/12/07 11:51:01 testtime == 11:11:51 ( string ) 2020/12/07 11:51:01 testbit == 37 ( int64 ) 2020/12/07 11:51:01 testtinyblob == a+WJ1W/$Ydv7]5uc4+ ( string ) 2020/12/07 11:51:01 test_unsinged_int == 4294967295 ( uint32 ) 2020/12/07 11:51:01 testtime2_5 == 11:11:51.61298 ( string ) 2020/12/07 11:51:01 testdatetime2_4 == 2020-12-07 11:11:51.6131 ( string ) 2020/12/07 11:51:01 testtinyint == -128 ( int8 ) 2020/12/07 11:51:01 testsmallint == -32768 ( int16 ) 2020/12/07 11:51:01 testvarchar == pesec"/fJC ( string ) 2020/12/07 11:51:01 testset == [set1 set3] ( []string ) 2020/12/07 11:51:01 testdate == 2020-12-07 ( string ) 2020/12/07 11:51:01 testdatetime == 2020-12-07 11:11:51 ( string ) 2020/12/07 11:51:01 testdecimal4 == -1342803595894293035.29493 ( string ) 2020/12/07 11:51:01 testblob == "uTZoJ,T}Wm;=*&_|LASCPAkq^>wHW4{oEb4V ( string ) 2020/12/07 11:51:01 test_unsinged_bigint == 65 ( uint64 ) 2020/12/07 11:51:01 testtime2_4 == 11:11:51.6129 ( string ) 2020/12/07 11:51:01 testtime2_6 == 11:11:51.613001 ( string ) 2020/12/07 11:51:01 testtimestamp2_6 == 2020-12-07 11:11:51.613120 ( string ) 2020/12/07 11:51:01 testtimestamp == 2020-12-07 11:11:51 ( string ) 2020/12/07 11:51:01 test_unsinged_tinyint == 255 ( uint8 ) 2020/12/07 11:51:01 testtime2_2 == 11:11:51.61 ( string ) 2020/12/07 11:51:01 testtime2_3 == 11:11:51.612 ( string ) 2020/12/07 11:51:01 testmediumint == 8388607 ( int32 ) 2020/12/07 11:51:01 testint == 2147483647 ( int32 ) 2020/12/07 11:51:01 testdouble == 376268.79 ( float64 ) 2020/12/07 11:51:01 test_unsinged_mediumint == 16777215 ( uint32 ) 2020/12/07 11:51:01 testtime2_1 == 11:11:51.6 ( string ) 2020/12/07 11:51:01 testtimestamp2_3 == 2020-12-07 11:11:51.613 ( string ) 2020/12/07 11:51:01 id == ( ) 2020/12/07 11:51:01 testenum == en1 ( string ) 2020/12/07 11:51:01 testyear == 2020 ( string ) 2020/12/07 11:51:01 testlongblob == m0P8-A#o4HV0&Y0OJlA6$IGe0}QVnkVqq0!ex920 ( string ) 2020/12/07 11:51:01 testtimestamp2_4 == 2020-12-07 11:11:51.6130 ( string ) 2020/12/07 11:51:01 testdatetime2_3 == 2020-12-07 11:11:51.613 ( string ) 2020/12/07 11:51:01 testfloat == -533280.7 ( float32 ) 2020/12/07 11:51:01 testtimestamp2_5 == 2020-12-07 11:11:51.61309 ( string ) 2020/12/07 11:51:01 testbigint == 60 ( int64 ) 2020/12/07 11:51:01 testbool == false ( bool ) 2020/12/07 11:51:01 test_unsinged_smallint == 65535 ( uint16 ) 2020/12/07 11:51:01 testdatetime2_2 == 2020-12-07 11:11:51.61 ( string ) 2020/12/07 11:51:01 testdatetime2_5 == 2020-12-07 11:11:51.61320 ( string ) 2020/12/07 11:51:01 testdatetime2_6 == 2020-12-07 11:11:51.613216 ( string ) 2020/12/07 11:51:01 test_json == map[key1:[2147483647 -2147483648 2 true 我是一个中国人,我爱中国!]] ( map[string][]interface {} ) 2020/12/07 11:51:01 testchar == ( string ) 2020/12/07 11:51:01 testdecimal == 8353992.06 ( string ) 2020/12/07 11:51:01 testdecimal2 == -295853.2522 ( string ) 2020/12/07 11:51:01 testdecimal3 == 636343656559411.7828 ( string ) 2020/12/07 11:51:01 testtext == u2>Mm9dkqvcWSV']t}09Lwl}[5[k&FGXj9U92{taz试试数据试测测试试数测试测试数测据测 ( string ) 2020/12/07 11:51:01 testmediumblob == 9`z'YT,SB_+/wwZG]57ROp2kfy1-Rd"2=l0 ( string ) 2020/12/07 11:51:01 testtimestamp2_1 == 2020-12-07 11:11:51.6 ( string ) 2020/12/07 11:51:01 testtimestamp2_2 == 2020-12-07 11:11:51.61 ( string ) 2020/12/07 11:51:01 testdatetime2_1 == 2020-12-07 11:11:51.6 ( string )

    2020/12/07 11:51:01 sql exec ResultL: {1 1} 2020/12/07 11:51:01 load data over 2020/12/07 11:51:01 Bristol AddReplicateDoDb, bifrost_test binlog_field_test 2020/12/07 11:51:01 Version: 1.6.1 2020/12/07 11:51:01 Bristol version: v1.6.0 2020/12/07 11:51:01 filename: mysql-bin.000003 position: 154 2020/12/07 11:51:01 root:[email protected](172.17.0.2:3306)/bifrost_test start DumpBinlog... filename: mysql-bin.000003 position: 154 2020/12/07 11:51:01 monitor reslut:starting 2020/12/07 11:51:01 monitor reslut:running 2020/12/07 11:51:01 binlog_checksum: true 2020/12/07 11:51:01 root:[email protected](172.17.0.2:3306)/bifrost_test ROTATE_EVENT mysql-bin.000003 2020/12/07 11:51:01 &{{1607313061 2 1 156 585 4} [] DROP TABLE IF EXISTS binlog_field_test /* generated by server */ bifrost_test binlog_field_test mysql-bin.000003 585 []} 2020/12/07 11:51:01 &{{1607313061 2 1 2998 3648 0} [] CREATE TABLE bifrost_test.binlog_field_test (id int(11) unsigned NOT NULL AUTO_INCREMENT,testtinyint tinyint(4) NOT NULL DEFAULT '-1',testsmallint smallint(6) NOT NULL DEFAULT '-2',testmediumint mediumint(8) NOT NULL DEFAULT '-3',testint int(11) NOT NULL DEFAULT '-4',testbigint bigint(20) NOT NULL DEFAULT '-5',testvarchar varchar(10) NOT NULL,testchar char(2) NOT NULL,testenum enum('en1','en2','en3') NOT NULL DEFAULT 'en1',testset set('set1','set2','set3') NOT NULL DEFAULT 'set1',testtime time NOT NULL DEFAULT '00:00:00',testdate date NOT NULL DEFAULT '0000-00-00',testyear year(4) NOT NULL DEFAULT '1989',testtimestamp timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,testdatetime datetime NOT NULL DEFAULT '0000-00-00 00:00:00',testfloat float(9,2) NOT NULL DEFAULT '0.00',testdouble double(9,2) NOT NULL DEFAULT '0.00',testdecimal decimal(9,2) NOT NULL DEFAULT '0.00',testdecimal2 decimal(10,4) NOT NULL DEFAULT '0.00',testdecimal3 decimal(20,4) NOT NULL DEFAULT '0.00',testdecimal4 decimal(30,5) NOT NULL DEFAULT '0.00',testtext text NOT NULL,testblob blob NOT NULL,testbit bit(8) NOT NULL DEFAULT b'0',testbool tinyint(1) NOT NULL DEFAULT '0',testmediumblob mediumblob NOT NULL,testlongblob longblob NOT NULL,testtinyblob tinyblob NOT NULL,test_unsinged_tinyint tinyint(4) unsigned NOT NULL DEFAULT '1',test_unsinged_smallint smallint(6) unsigned NOT NULL DEFAULT '2',test_unsinged_mediumint mediumint(8) unsigned NOT NULL DEFAULT '3',test_unsinged_int int(11) unsigned NOT NULL DEFAULT '4',test_unsinged_bigint bigint(20) unsigned NOT NULL DEFAULT '5',testtime2_1 time(1) NOT NULL DEFAULT '00:00:00.0',testtime2_2 time(2) NOT NULL DEFAULT '00:00:00.00',testtime2_3 time(3) NOT NULL DEFAULT '00:00:00.000',testtime2_4 time(4) NOT NULL DEFAULT '00:00:00.0000',testtime2_5 time(5) NOT NULL DEFAULT '00:00:00.00000',testtime2_6 time(6) NOT NULL DEFAULT '00:00:00.000000',testtimestamp2_1 timestamp(1) NOT NULL DEFAULT CURRENT_TIMESTAMP(1),testtimestamp2_2 timestamp(2) NOT NULL DEFAULT CURRENT_TIMESTAMP(2),testtimestamp2_3 timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),testtimestamp2_4 timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4),testtimestamp2_5 timestamp(5) NOT NULL DEFAULT CURRENT_TIMESTAMP(5),testtimestamp2_6 timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),testdatetime2_1 datetime(1) NOT NULL DEFAULT '0000-00-00 00:00:00.0',testdatetime2_2 datetime(2) NOT NULL DEFAULT '0000-00-00 00:00:00.00',testdatetime2_3 datetime(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000',testdatetime2_4 datetime(4) NOT NULL DEFAULT '0000-00-00 00:00:00.0000',testdatetime2_5 datetime(5) NOT NULL DEFAULT '0000-00-00 00:00:00.00000',testdatetime2_6 datetime(6) NOT NULL DEFAULT '0000-00-00 00:00:00.000000',test_json json,PRIMARY KEY (id)) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 bifrost_test binlog_field_test mysql-bin.000003 3648 []} 2020/12/07 11:51:01 test_unsinged_smallint == 65535 2020/12/07 11:51:01 test_unsinged_bigint == 65 2020/12/07 11:51:01 testtime2_1 == 11:11:51.6 2020/12/07 11:51:01 testtime2_5 == 11:11:51.61298 2020/12/07 11:51:01 testtimestamp2_3 == 2020-12-07 11:11:51.613 2020/12/07 11:51:01 test_json == map[key1:[2147483647 -2147483648 2 true 我是一个中国人,我爱中国!]] 2020/12/07 11:51:01 testvarchar == pesec"/fJC 2020/12/07 11:51:01 testset == [set1 set3] 2020/12/07 11:51:01 testdouble == 376268.79 2020/12/07 11:51:01 testtinyblob == a+WJ1W/$Ydv7]5uc4+ 2020/12/07 11:51:01 test_unsinged_mediumint == 16777215 2020/12/07 11:51:01 testtimestamp2_1 == 2020-12-07 11:11:51.6 2020/12/07 11:51:01 testtimestamp2_4 == 2020-12-07 11:11:51.6130 2020/12/07 11:51:01 testchar == 2020/12/07 11:51:01 testyear == 2020 2020/12/07 11:51:01 testtext == u2>Mm9dkqvcWSV']t}09Lwl}[5[k&FGXj9U92{taz试试数据试测测试试数测试测试数测据测 2020/12/07 11:51:01 testbool == false 2020/12/07 11:51:01 testtimestamp2_5 == 2020-12-07 11:11:51.61309 2020/12/07 11:51:01 testtimestamp2_6 == 2020-12-07 11:11:51.613120 2020/12/07 11:51:01 testsmallint == -32768 2020/12/07 11:51:01 testdate == 2020-12-07 2020/12/07 11:51:01 testfloat == -533280.7 2020/12/07 11:51:01 testdecimal2 == -295853.2522 2020/12/07 11:51:01 testlongblob == m0P8-A#o4HV0&Y0OJlA6$IGe0}QVnkVqq0!ex920 2020/12/07 11:51:01 testtime2_2 == 11:11:51.61 2020/12/07 11:51:01 testtime2_3 == 11:11:51.612 2020/12/07 11:51:01 testdatetime2_1 == 2020-12-07 11:11:51.6 2020/12/07 11:51:01 testtinyint == -128 2020/12/07 11:51:01 testmediumint == 8388607 2020/12/07 11:51:01 testdatetime2_2 == 2020-12-07 11:11:51.61 2020/12/07 11:51:01 testdecimal3 == 636343656559411.7828 2020/12/07 11:51:01 testblob == "uTZoJ,T}Wm;=*&_|LASCPAkq^>wHW4{oEb4V 2020/12/07 11:51:01 test_unsinged_tinyint == 255 2020/12/07 11:51:01 test_unsinged_int == 4294967295 2020/12/07 11:51:01 testdatetime2_6 == 2020-12-07 11:11:51.613216 2020/12/07 11:51:01 testint == 2147483647 2020/12/07 11:51:01 testdecimal == 8353992.06 2020/12/07 11:51:01 testdecimal4 == -1342803595894293035.29493 2020/12/07 11:51:01 testtime2_6 == 11:11:51.613001 2020/12/07 11:51:01 testdatetime2_3 == 2020-12-07 11:11:51.613 2020/12/07 11:51:01 testtimestamp == 2020-12-07 11:11:51 2020/12/07 11:51:01 testdatetime == 2020-12-07 11:11:51 2020/12/07 11:51:01 testtimestamp2_2 == 2020-12-07 11:11:51.61 2020/12/07 11:51:01 testdatetime2_5 == 2020-12-07 11:11:51.61320 2020/12/07 11:51:01 testenum == en1 2020/12/07 11:51:01 testbit == 37 2020/12/07 11:51:01 testtime == 11:11:51 2020/12/07 11:51:01 testmediumblob == 9`z'YT,SB_+/wwZG]57ROp2kfy1-Rd"2=l0 2020/12/07 11:51:01 testtime2_4 == 11:11:51.6129 2020/12/07 11:51:01 testdatetime2_4 == 2020-12-07 11:11:51.6131 2020/12/07 11:51:01 id == 1 is AutoIncrement 2020/12/07 11:51:01 testbigint == 60

    2020/12/07 11:51:01 id == 1 2020/12/07 11:51:01 type and value is all right ktWOd6jgYw3qB2OAtGxN ktWOd6jgYw3qB2OAtGxN over

    opened by zhwei820 1
  • redis 支持 string zset hset hash list ,  后台 管理 一键同步全量任务功能

    redis 支持 string zset hset hash list , 后台 管理 一键同步全量任务功能

    1. 后台 管理, 优化对全量任务更新的体验 添加一键 添加/开始 按钮

    image image

    2. 完善redis 插件类型

    image

    其他

    ps: 因为格式化 不一样的原因 所以会看到有很多文件出现差异(空格 缩进) , 实际修改的 只有

    1. manager -> template

    history.list.html sync.list.html

    1. plugin -> redis

    全部

    opened by Ryan-gsq 1
  • binlog 不消费,web 后台显示running , log 最后一行显示 已经关闭 mysql 连接

    binlog 不消费,web 后台显示running , log 最后一行显示 已经关闭 mysql 连接

    日志文件

    | 2020/10/10 02:00:56 jw monitor: parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:00:56 jw monitor: running [email protected]:~/docker/bifrost# docker-compose logs --tail=100 sync Attaching to bifrost_sync_1 sync_1 | created by github.com/brokercap/Bifrost/server.(*db).Start sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/server/db.go:467 +0x56e sync_1 | sync_1 | 2020/10/10 02:16:32 jw monitor: parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:16:32 jw monitor: running sync_1 | 2020/10/10 02:16:37 jw monitor: starting sync_1 | 2020/10/10 02:16:37 jw monitor: running sync_1 | 2020/10/10 02:16:37 binlog_checksum: true sync_1 | 2020/10/10 02:16:37 root:[email protected](mysql:3306)/new_julietswhisper ROTATE_EVENT mysql-bin.000005 0 sync_1 | 2020/10/10 02:16:37 goroutine 2443 [running]: sync_1 | runtime/debug.Stack(0xc00036d110, 0x26, 0x0) sync_1 | /usr/local/Cellar/[email protected]/1.14.9/libexec/src/runtime/debug/stack.go:24 +0x9d sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog.func2.1(0xc00014fd48) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:578 +0xcb sync_1 | panic(0xc617e0, 0xc000553ac0) sync_1 | /usr/local/Cellar/[email protected]/1.14.9/libexec/src/runtime/panic.go:969 +0x166 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEventRow(0xc0000796c0, 0xc0004f5d10, 0xc0003e11e0, 0xc00034cf40, 0x7, 0x8, 0x0, 0x0, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/event_row.go:379 +0x526b sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseRowsEvent(0xc0000796c0, 0xc0004f5d10, 0xe5, 0x10000c0001800f8, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/event_row.go:65 +0x381 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEvent(0xc0000796c0, 0xc0001aaa01, 0x41, 0x41, 0x0, 0x42, 0x0, 0xc0001aaa00, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:181 +0x935 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog.func2(0xc00014fd48, 0xc0000796c0, 0xc0001aaa00, 0x42, 0x42, 0xc00014fd38) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:581 +0xa0 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog(0xc000d157a0, 0xc0001495c0, 0x10, 0x8ec3b3, 0xc0000796c0, 0xc000259330, 0xc00034a300, 0x0, 0x0, 0x0, ...) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:582 +0x3fa sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).startConnAndDumpBinlog(0xc0001ae420, 0xc00034a300) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:863 +0x3d5 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).StartDumpBinlog(0xc0001ae420, 0xc0003575a0, 0x10, 0xca008e4084, 0xc00034a300, 0x0, 0x0, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:741 +0x464 sync_1 | created by github.com/brokercap/Bifrost/server.(*db).Start sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/server/db.go:467 +0x56e sync_1 | sync_1 | 2020/10/10 02:16:37 jw monitor: parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:16:37 jw monitor: running sync_1 | parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:16:41 This.mysqlConn close ,connectionId: 329032 sync_1 | 2020/10/10 02:16:42 jw monitor: starting sync_1 | 2020/10/10 02:16:42 jw monitor: running sync_1 | 2020/10/10 02:16:42 binlog_checksum: true sync_1 | 2020/10/10 02:16:42 root:[email protected](mysql:3306)/new_julietswhisper ROTATE_EVENT mysql-bin.000005 0 sync_1 | 2020/10/10 02:16:42 goroutine 2443 [running]: sync_1 | runtime/debug.Stack(0xc00030e6f0, 0x26, 0x0) sync_1 | /usr/local/Cellar/[email protected]/1.14.9/libexec/src/runtime/debug/stack.go:24 +0x9d sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog.func2.1(0xc00014fd48) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:578 +0xcb sync_1 | panic(0xc617e0, 0xc000ac6660) sync_1 | /usr/local/Cellar/[email protected]/1.14.9/libexec/src/runtime/panic.go:969 +0x166 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEventRow(0xc0000796c0, 0xc000411170, 0xc0000cc9a0, 0xc000a3b080, 0x7, 0x8, 0x0, 0x0, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/event_row.go:379 +0x526b sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseRowsEvent(0xc0000796c0, 0xc000411170, 0xe5, 0x10000c0001800f8, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/event_row.go:65 +0x381 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEvent(0xc0000796c0, 0xc0002246e1, 0x41, 0x41, 0x0, 0x42, 0x0, 0xc0002246e0, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:181 +0x935 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog.func2(0xc00014fd48, 0xc0000796c0, 0xc0002246e0, 0x42, 0x42, 0xc00014fd38) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:581 +0xa0 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog(0xc000d15e60, 0xc0001495c0, 0x10, 0x8ec3b3, 0xc0000796c0, 0xc000259330, 0xc00034a300, 0x0, 0x0, 0x0, ...) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:582 +0x3fa sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).startConnAndDumpBinlog(0xc0001ae420, 0xc00034a300) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:863 +0x3d5 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).StartDumpBinlog(0xc0001ae420, 0xc0003575a0, 0x10, 0xca008e4084, 0xc00034a300, 0x0, 0x0, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:741 +0x464 sync_1 | created by github.com/brokercap/Bifrost/server.(*db).Start sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/server/db.go:467 +0x56e sync_1 | sync_1 | 2020/10/10 02:16:42 jw monitor: parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:16:42 jw monitor: running sync_1 | parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:16:47 jw monitor: starting sync_1 | 2020/10/10 02:16:47 jw monitor: running sync_1 | 2020/10/10 02:16:47 binlog_checksum: true sync_1 | 2020/10/10 02:16:47 root:[email protected](mysql:3306)/new_julietswhisper ROTATE_EVENT mysql-bin.000005 0 sync_1 | parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:16:47 goroutine 2443 [running]: sync_1 | runtime/debug.Stack(0xc00036dcb0, 0x26, 0x0) sync_1 | /usr/local/Cellar/[email protected]/1.14.9/libexec/src/runtime/debug/stack.go:24 +0x9d sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog.func2.1(0xc00014fd48) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:578 +0xcb sync_1 | panic(0xc617e0, 0xc000037fa0) sync_1 | /usr/local/Cellar/[email protected]/1.14.9/libexec/src/runtime/panic.go:969 +0x166 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEventRow(0xc0000796c0, 0xc000469920, 0xc0003e1b80, 0xc00034d280, 0x7, 0x8, 0x0, 0x0, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/event_row.go:379 +0x526b sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseRowsEvent(0xc0000796c0, 0xc000469920, 0xe5, 0x10000c0001800f8, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/event_row.go:65 +0x381 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEvent(0xc0000796c0, 0xc0002ff451, 0x41, 0x41, 0x0, 0x42, 0x0, 0xc0002ff450, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:181 +0x935 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog.func2(0xc00014fd48, 0xc0000796c0, 0xc0002ff450, 0x42, 0x42, 0xc00014fd38) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:581 +0xa0 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog(0xc000c1a3c0, 0xc0001495c0, 0x10, 0x8ec3b3, 0xc0000796c0, 0xc000259330, 0xc00034a300, 0x0, 0x0, 0x0, ...) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:582 +0x3fa sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).startConnAndDumpBinlog(0xc0001ae420, 0xc00034a300) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:863 +0x3d5 sync_1 | github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).StartDumpBinlog(0xc0001ae420, 0xc0003575a0, 0x10, 0xca008e4084, 0xc00034a300, 0x0, 0x0, 0x0) sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/Bristol/mysql/binlog.go:741 +0x464 sync_1 | created by github.com/brokercap/Bifrost/server.(*db).Start sync_1 | /Users/apple/Desktop/WorkSpae/go/Bifrost/server/db.go:467 +0x56e sync_1 | sync_1 | 2020/10/10 02:16:47 jw monitor: parseEvent err:runtime error: index out of range [-1] sync_1 | 2020/10/10 02:16:47 jw monitor: running sync_1 | 2020/10/10 02:16:51 This.mysqlConn close ,connectionId: 329034

    后台状态

    image

    补充说明

    1. 后台日志显示mysql 断开连接后没有其他日志产生了, 且web后台显示的还是running 状态 (会重新连接, 日志没打印全)
    2. binlog 已经不消费了, 一直重复这个错误 大概15s 出现一次 重启也没用, 除非我跳过这个位点
    3. Bristol/mysql/event_row.go:379 +0x526b 该错误产生频率较高,不太了解mysql binlog 的数据包结构, 这个是属于正常情况吗
    4. go version go1.15.2 linux/amd64
    opened by Ryan-gsq 1
  • 同步到目标库的队列满了情况下,也不阻塞其他数据表同步

    同步到目标库的队列满了情况下,也不阻塞其他数据表同步

    Bifrost 每个表的每一个目标库同步都是相互独立的,都各自有一个队列,这个队列大小可以通过 toserver_queue_size 来配置

    但是每个队列 是保存在内存中的,假如一个表设置了同时配置到3个目标库

    在3个目标库中同步有,一个目标库出现异常了, 一直同步失败,那队列满了的情况下,会影响其他目标库也同步不了

    这里需要在这种队列满了的情况下,将新数据到磁盘队列中去,做到真正不阻塞的方式同步

    这里要考滤到解析很快,所有的同步都 慢的情况下,这里就没必要刷到磁盘了,还不如阻塞 在那里,所以这里,应该提供在线设置,某一个同步,是否启用磁盘队列

    enhancement 
    opened by jc3wish 1
  • unexpected end of JSON input

    unexpected end of JSON input

    版本号v1.1.0-beta.06 /table/addtoserver 出入参数: dbname: tct schema_name: xxx table_name: xxx toserver_key: mq plugin_name: rabbitmq mustbe: true FilterQuery: true FilterUpdate: true fieldlist: xxx,xxx

    输出: {"status":false,"msg":"unexpected end of JSON input"}

    opened by yanglanlan 1
  • V1.8.x

    V1.8.x

    1. ClickHouse DDL 支持完善,包含:增加字段,删除字段,修改字段类型,修改字段名称,修改表名称等
    2. 支持 ClickHouse ReplicatedReplacingMergeTree 分布式集群模式写入(由于涉及到final 效率问题,推荐ck版本为 v20.5.2.7-stable以上(包含))
    3. 新增 ElasticSearch 插件支持
    4. 修复数据包超过16MB时无法完全解析的BUG
    5. 优化某个表没有数据写入,其他表有数据写入的情况下,造成没有数据更变的表,并不会5秒进行超时同步的BUG
    6. 优化Binlog连接断开重连的功能
    opened by jc3wish 0
  • MySQL同步到RabbitMQ,消息中看不到数据

    MySQL同步到RabbitMQ,消息中看不到数据

    版本:v1.8.3-release

    RabbitMQ消息:{"Timestamp":1652253197,"EventType":"commit","Rows":null,"Query":"COMMIT","SchemaName":"product","TableName":"tttt_craft","BinlogFileNum":34,"BinlogPosition":152525746,"Gtid":"00000000-0000-0000-0000-000000000000:1-0","Pri":null,"EventID":4729,"ColumnMapping":null}

    opened by zhushiyang 0
  • 增量 实时同步冗余字段

    增量 实时同步冗余字段

    Version:

    • Bifrost Version: [v1.8.1-release]
    • Os Version: [CentOS Linux release 7.7.1908]
    • Browse: [Chrome]

    描述: 一个基础库base, 里面有很多元数据, 一个业务库biz, biz库里有部分表关联了base库的表 关联关系1:1,现在想如果base库的某个表A的字段发生了变化 能够同步到业务库的关联表AA冗余的那些字段, 能做到吗?还是需要插件支持?

    就是监听base库某个表A的a,b,c字段 标明a为主键,一旦发生了修改,同步到biz库关联A的AA表的a,b,c. A.a 和 AA.a的字段名可能不同,但是冗余字段的名称和类型都相同。相当于执行了 update AA set AA.b = A.b, AA.c = A.c where AA.a = A.a

    谢谢!

    opened by 985496501 0
  • 同步到Clickhouse,选择已存在的目标表时,没有出现映射关系选择界面

    同步到Clickhouse,选择已存在的目标表时,没有出现映射关系选择界面

    Version:

    • Bifrost Version: v1.8.1
    • Os Version: CentOS Linux release 7.6
    • Browse: Chrome

    Describe the bug

    选择已存在目标表时,没有出现映射关系选择界面

    Screenshots

    image

    Additional context

    降到V1.7.4就可以

    opened by CharlesTHN 0
  • mariadb  适配问题

    mariadb 适配问题

    Version:

    • Bifrost Version: v1.7.4, 1.8.1, 1.8.2
    • Os Version: CentOS Linux release 7.6
    • DataBase Version: mariadb 10.6.5
    • Clickhouse Version: 20.8.3.18

    Describe the bug

    对于 mariadb 数据库,V1.8.1修复的超过5秒不会同步的BUG, 并不生效, 目前在1.8.1, 1.8.2上测试 mariadb 数据库, 在同步的数据没有达到设定的数据量时,无法主动触发同步

    To Reproduce

    Steps to reproduce the behavior:

    这里采用自动建表建库,手动建表建库,日志模式、普通模式都无效

    1. 数据库新增数据 id = 1的数据
    2. Bifrost 流量监控上显示已经监控到了这个数据变更
    3. 等待超过20s, Clickhosue 仍然没有写入
    4. 日志、页面均无异常日志

    Expected behavior

    默认等待时间到达后,自动将没有达到1000条的数据写入CLickhouse

    opened by GarrinXie 1
  • v1.8.1-release MySQL增量同步到ES 8.1.0失败“[type=illegal_argument_exception]”

    v1.8.1-release MySQL增量同步到ES 8.1.0失败“[type=illegal_argument_exception]”

    Version:

    Bifrost Version: v1.8.1-release Os Version: CentOS Linux release 7.6.1810 Browse: Chrome ES Version: elasticsearch-8.1.0

    增量同步失败: image

    异常:

    2022/03/25 17:27:06 do ES bulk err elastic:
     Error 400 (Bad Request): Action/metadata line [1]
     contains an unknown parameter [_type]
     [type=illegal_argument_exception], close sync
    

    ES在8.1.0版本已经移除了自定义type,现在已经没有_type字段 Removal of mapping types

    https://www.elastic.co/guide/en/elasticsearch/reference/8.1/removal-of-types.html

    image

    opened by iverycd 0
Releases(v1.8.3-release)
Go-clickhouse - ClickHouse client for Go

ClickHouse client for Go 1.18+ This client uses native protocol to communicate w

Uptrace 94 May 21, 2022
Mogo: a lightweight browser-based logs analytics and logs search platform for some datasource(ClickHouse, MySQL, etc.)

mogo Mogo is a lightweight browser-based logs analytics and logs search platform

Shimo HQ 623 May 20, 2022
WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

WAL-G is an archival restoration tool for PostgreSQL, MySQL/MariaDB, and MS SQL Server (beta for MongoDB and Redis).

null 2.1k May 17, 2022
ClickHouse http proxy and load balancer

chproxy English | 简体中文 Chproxy, is an http proxy and load balancer for ClickHouse database. It provides the following features: May proxy requests to

Vertamedia 893 May 18, 2022
Collects many small inserts to ClickHouse and send in big inserts

ClickHouse-Bulk Simple Yandex ClickHouse insert collector. It collect requests and send to ClickHouse servers. Installation Download binary for you pl

Nikolay Pavlovich 355 May 11, 2022
support clickhouse

Remote storage adapter This is a write adapter that receives samples via Prometheus's remote write protocol and stores them in Graphite, InfluxDB, cli

weetime 24 May 10, 2022
Jaeger ClickHouse storage plugin implementation

Jaeger ClickHouse Jaeger ClickHouse gRPC storage plugin. This is WIP and it is based on https://github.com/bobrik/jaeger/tree/ivan/clickhouse/plugin/s

Pavol Loffay 1 Feb 15, 2022
Clickhouse support for GORM

clickhouse Clickhouse support for GORM Quick Start package main import ( "fmt" "github.com/sweetpotato0/clickhouse" "gorm.io/gorm" ) // User

null 1 Oct 24, 2021
Distributed tracing using OpenTelemetry and ClickHouse

Distributed tracing backend using OpenTelemetry and ClickHouse Uptrace is a dist

Uptrace 679 May 19, 2022
mysql to mysql 轻量级多线程的库表数据同步

goMysqlSync golang mysql to mysql 轻量级多线程库表级数据同步 测试运行 设置当前binlog位置并且开始运行 go run main.go -position mysql-bin.000001 1 1619431429 查询当前binlog位置,参数n为秒数,查询结

null 12 May 6, 2022
A tool to run queries in defined frequency and expose the count as prometheus metrics. Supports MongoDB and SQL

query2metric A tool to run db queries in defined frequency and expose the count as prometheus metrics. Why ? Product metrics play an important role in

S Santhosh Nagaraj 18 Apr 21, 2022
The MongoDB driver for Go

The MongoDB driver for Go This fork has had a few improvements by ourselves as well as several PR's merged from the original mgo repo that are current

GlobalSign 1.9k May 11, 2022
Simple instagram backend api built using golang and mongodb

Insta_api using golang and mongodb Proper hashing algorithms have been implemented so that user password cannot be reverse engineered. Features: User

null 1 Apr 9, 2022
A truly Open Source MongoDB alternative

FerretDB FerretDB (previously MangoDB) was founded to become the de-facto open-source substitute to MongoDB. FerretDB is an open-source proxy, convert

FerretDB 4.4k May 18, 2022
An easy to use web authorization system integrated with MongoDB.

goth An easy to use web authorization system for MongoDB. Written 100% in Golang! Contributing Feel free to add an issue, and if you have a fix, creat

DaCool1 1 Feb 22, 2022
a powerful mysql toolset with Go

go-mysql A pure go library to handle MySQL network protocol and replication. Call for Committer/Maintainer Sorry that I have no enough time to maintai

siddontang 3.6k May 16, 2022
Sync MySQL data into elasticsearch

go-mysql-elasticsearch is a service syncing your MySQL data into Elasticsearch automatically. It uses mysqldump to fetch the origin data at first, the

siddontang 3.8k May 12, 2022
A high-performance MySQL proxy

kingshard 中文主页 Overview kingshard is a high-performance proxy for MySQL powered by Go. Just like other mysql proxies, you can use it to split the read

Fei Chen 6k May 19, 2022