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

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群

捐赠

Comments
  • 请教一下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会自行忽略吗
  • 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" ] } }

  • http插件使用httpBasic验证的时候出错

    http插件使用httpBasic验证的时候出错

    • Bifrost Version: v1.8.4-release amd64
    • Os Version: Ubuntu 20.04
    • Browse: Chrome

    1.使用http-v1.6.0插件创建目标库的时候,按照例子填入带http Basic验证的url,check失败 http://192.168.64.168:8080/data-api/api/allen-studio/test/bifrost

    返回错误提示框,内容如下: Get "demo:demo123": unsupported protocol scheme "demo"

    2.单独在浏览器地址栏使用 http://demo:[email protected]:8080/data-api/api/allen-studio/test/bifrost 能成功访问接口

    3.尝试使用http://demo:[email protected]:8080/data-api/api/allen-studio/test/bifrost 作为ConnUri,返回提示框显示只有一个"error"

    4.目标url服务去掉http验证的拦截,在bifrost使用http://192.168.64.168:8080/data-api/api/allen-studio/test/bifrost 作为ConnUri,check才能显示成功

  • mariadb  适配问题(超过5秒超时数据不同步)

    mariadb 适配问题(超过5秒超时数据不同步)

    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

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

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

    问题

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

    问题说明

    image

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

    调试步骤

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

    image

    image

    解决方法

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

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

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

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

    8.0.22与8.0.18偶尔binlog解析不全

    Version:

    • Bifrost Version: [e.g. v1.6.2-realease]
    • Os Version: [e.g. CentOS Linux release 7.7.1908]
    • Browse: [e.g. Chrome]

    Describe the bug 最简单的一个表,反复进行delete全表,从另外一个表插入数据 create table tab1(id integer not null,name varchar(20),primary key(id)); insert into tab1 select * from bak_tab1; delete from tab1; 反复执行几次,会发现偶发性的要么没有解析到Insert,要么没有解析到delete, 我设置的batchsize=1

    在plugin/mysql/mysql.go的Query函数入口打断点,发现在出错时根本不会到这,所以怀疑解析有bug,请作者告知如何排查

  • 安装后配置数据源的时候点提交后页面显示空白

    安装后配置数据源的时候点提交后页面显示空白

    Version:

    • Bifrost Version: [v1.6.2]
    • Os Version: [ CentOS Linux release 7.6.1908]
    • Browse: [Chrome]

    2020/12/22 19:33:50 xgo doController: runtime error: invalid memory address or nil pointer dereference goroutine 170 [running]: runtime/debug.Stack(0xc00072d498, 0xc02640, 0x126a130) /usr/local/go/src/runtime/debug/stack.go:24 +0x9f github.com/brokercap/Bifrost/admin/xgo.(*routeController).DoController.func1() /mnt/hgfs/project/gopath/src/github.com/brokercap/Bifrost/admin/xgo/xgo.go:71 +0x78 panic(0xc02640, 0x126a130) /usr/local/go/src/runtime/panic.go:969 +0x1b9 github.com/brokercap/Bifrost/admin/controller.(*DBController).Detail(0xc0002005a0) /mnt/hgfs/project/gopath/src/github.com/brokercap/Bifrost/admin/controller/db_detail.go:26 +0x9e reflect.Value.call(0xce4680, 0xc0002005a0, 0x2613, 0xcfc1be, 0x4, 0x0, 0x0, 0x0, 0xe0e9c0, 0xc0000316e0, ...) /usr/local/go/src/reflect/value.go:476 +0x8c7 reflect.Value.Call(0xce4680, 0xc0002005a0, 0x2613, 0x0, 0x0, 0x0, 0xc0002005a0, 0x2613, 0xc0001a6660) /usr/local/go/src/reflect/value.go:337 +0xb9 github.com/brokercap/Bifrost/admin/xgo.(*routeController).DoController0(0xc0001a86c0, 0xdfd7a0, 0xc0001e0620, 0xc000172200) /mnt/hgfs/project/gopath/src/github.com/brokercap/Bifrost/admin/xgo/xgo.go:87 +0x245 github.com/brokercap/Bifrost/admin/xgo.(*routeController).DoController(0xc0001a86c0, 0xdfd7a0, 0xc0001e0620, 0xc000172200) /mnt/hgfs/project/gopath/src/github.com/brokercap/Bifrost/admin/xgo/xgo.go:76 +0xae github.com/brokercap/Bifrost/admin/xgo.rounteFunc(0xdfd7a0, 0xc0001e0620, 0xc000172200) /mnt/hgfs/project/gopath/src/github.com/brokercap/Bifrost/admin/xgo/xgo.go:144 +0x217 net/http.HandlerFunc.ServeHTTP(0xd37cc8, 0xdfd7a0, 0xc0001e0620, 0xc000172200) /usr/local/go/src/net/http/server.go:2042 +0x44 net/http.(*ServeMux).ServeHTTP(0x1284d80, 0xdfd7a0, 0xc0001e0620, 0xc000172200) /usr/local/go/src/net/http/server.go:2417 +0x1ad net/http.serverHandler.ServeHTTP(0xc0001e0380, 0xdfd7a0, 0xc0001e0620, 0xc000172200) /usr/local/go/src/net/http/server.go:2843 +0xa3 net/http.(*conn).serve(0xc000114320, 0xdff360, 0xc0001a9a00) /usr/local/go/src/net/http/server.go:1925 +0x8ad created by net/http.(*Server).Serve /usr/local/go/src/net/http/server.go:2969 +0x36c

  • Use basic auth can bypass write permission limit

    Use basic auth can bypass write permission limit

    Version:

    • Bifrost Version: v1.8.5
    • Os Version: CentOS Linux release 7.7.1908

    Describe the bug monitor Group only have the read permission use Cookie authentication If we do write requests, it will forbidden

    POST /user/update HTTP/2
    Host: 10.134.88.145:21036
    Cookie: xgo_cookie=FHSkwpKqJKFTD1eBfQamigKZriYvovGgr-uoTmWNo-U%3D
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:90.0) Gecko/20100101 Firefox/90.0
    Accept: application/json, text/javascript, */*; q=0.01
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Content-Type: application/json
    X-Requested-With: XMLHttpRequest
    Content-Length: 79
    Origin: https://10.134.88.145:21036
    Referer: https://10.134.88.145:21036/user/index
    Sec-Fetch-Dest: empty
    Sec-Fetch-Mode: cors
    Sec-Fetch-Site: same-origin
    Te: trailers
    Connection: close
    
    {"UserName":"evil_admin","Password":"passwd","Group":"administrator","Host":""}
    

    response

    HTTP/2 200 OK
    Content-Type: text/plain; charset=utf-8
    Content-Length: 71
    Date: Wed, 14 Sep 2022 03:32:50 GMT
    
    {"status":-1,"msg":"user group : [ monitor ] no authority","data":null}
    

    If we use HTTP basic authentication, we can bypass it

    curl -u tari:tari -k -X POST -H "Content-Type: application/json" https://10.134.88.145:21036/user/update -d '{"UserName":"evil_admin","Password":"passwd","Group":"administrator","Host":""}'
    

    response

    {"status":1,"msg":"success","data":null}
    

    Expected behavior If we do a write action request use a monitor Group role with HTTP basic authentication, it also should have forbidden

    Additional context The problem code is in https://github.com/brokercap/Bifrost/blob/master/admin/controller/common.go#L46 if we use basic authentication, it will not check checkWriteRequest

  • 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

  • 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:123456@tcp(172.17.0.2:3306)/bifrost_test start connect 2020/12/07 11:48:01 root:123456@tcp(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"A@8s={1r%k{?s;+V数数数试试数数据据数数测据试 ( string ) 2020/12/07 11:48:01 testmediumblob == 9@9\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 == 1@*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:123456@tcp(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:123456@tcp(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"A@8s={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 == 1@*uRTcK52k= 2020/12/07 11:48:01 testmediumblob == 9@9\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:123456@tcp(172.17.0.2:3306)/bifrost_test start connect 2020/12/07 11:51:01 root:123456@tcp(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:123456@tcp(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:123456@tcp(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

  • 金额数据精度丢失造成差0.01的情况

    金额数据精度丢失造成差0.01的情况

    Version:

    • Bifrost Version: v1.8.8-release

    Describe the bug

    数据源是Mysql 5.6 有部分金额数据 字段类型是 decimal(18,2) 目标使用的Clickhouse 自动建表 类型为 Decimal(18,2) 同步数据中存在部分数据精度丢失 如 2.99 会变成 2.98 这样的情况

  • parseEventRow error

    parseEventRow error

    Version: 2.0.3 Mysql: 5.7

    2022/11/16 13:16:52 parseEventRow len(tableSchemaMap)= 30 < columnsCount: 31 tableMap: {{1668482467 19 3306 145 2953376 0} 1560 1 brand_activity youzan_order_info [3 15 3 1 2 15 18 18 18 18 18 18 15 15 1 1 15 246 246 246 15 15 15 15 15 15 15 15 15 18 18] [] [0xc000697b30 0xc000697b80 0xc000697bd0 0xc000697c20 0xc000697c70 0xc000697cc0 0xc000697d10 0xc000697d60 0xc000697db0 0xc000697e00 0xc000697e50 0xc000697ea0 0xc000697ef0 0xc000697f40 0xc000697f90 0xc00010e280 0xc00010e2d0 0xc00010e320 0xc00010e370 0xc00010e3c0 0xc00010e460 0xc00010e4b0 0xc00010e500 0xc00010e550 0xc00010e5a0 0xc00010e5f0 0xc00010e640 0xc00010e690 0xc00010e6e0 0xc00010e780 0xc00010e7d0] [0 0 0 0]} 2022/11/16 13:16:52 goroutine 57 [running]: runtime/debug.Stack() /opt/homebrew/Cellar/go/1.18.2/libexec/src/runtime/debug/stack.go:24 +0x65 github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog0.func1.1() /Users/yangth/go/src/Bifrost/Bristol/mysql/conn_dump.go:132 +0x13d panic({0x4e1c0e0, 0xc0008676c8}) /opt/homebrew/Cellar/go/1.18.2/libexec/src/runtime/panic.go:838 +0x207 github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEventRow(0xc000a8baa0?, 0xc000a8baa0, 0xc000721c30, {0xc000580400, 0x1e, 0xc0001c65d0?}) /Users/yangth/go/src/Bifrost/Bristol/mysql/event_row.go:85 +0x4ec5 github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseRowsEvent(0xc0001be000, 0xc000a8baa0) /Users/yangth/go/src/Bifrost/Bristol/mysql/event_row.go:65 +0x358 github.com/brokercap/Bifrost/Bristol/mysql.(*eventParser).parseEvent(0xc0001be000, {0xc000556781, 0x13f, 0x13f}) /Users/yangth/go/src/Bifrost/Bristol/mysql/parser.go:256 +0x9f9 github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog0.func1(0xc0001be000?, 0xc0005adc38, {0xc000556780?, 0x50ffb0e?, 0x1?}, 0xc0005adc18) /Users/yangth/go/src/Bifrost/Bristol/mysql/conn_dump.go:135 +0x9a github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlog0(0xc0003671f0?, 0xc0001be000, 0xc000216110) /Users/yangth/go/src/Bifrost/Bristol/mysql/conn_dump.go:136 +0x20f github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlogMySQLGtid(0xc000296300?, 0xc0001be000, 0x51107f8?) /Users/yangth/go/src/Bifrost/Bristol/mysql/conn_dump.go:66 +0x175 github.com/brokercap/Bifrost/Bristol/mysql.(*mysqlConn).DumpBinlogGtid(0xc00030a000?, 0xc0001be000, 0x0?) /Users/yangth/go/src/Bifrost/Bristol/mysql/conn_dump.go:52 +0x11b github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).startConnAndDumpBinlog(0xc00030a000) /Users/yangth/go/src/Bifrost/Bristol/mysql/binlog.go:263 +0x3d8 github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).StartDumpBinlog0(0xc00030a000) /Users/yangth/go/src/Bifrost/Bristol/mysql/binlog.go:137 +0x292 github.com/brokercap/Bifrost/Bristol/mysql.(*BinlogDump).StartDumpBinlogGtid(0xc00030a000, {0xc00017cc00?, 0x4594292?}, 0xd28, 0xc00011a5a0) /Users/yangth/go/src/Bifrost/Bristol/mysql/binlog.go:103 +0x298 created by github.com/brokercap/Bifrost/input/mysql.(*MysqlInput).Start0 /Users/yangth/go/src/Bifrost/input/mysql/mysql.go:70 +0x2d7

Go-clickhouse - ClickHouse client for Go

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

Jan 9, 2023
Mogo: a lightweight browser-based logs analytics and logs search platform for some datasource(ClickHouse, MySQL, etc.)
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

Dec 30, 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).

Jan 1, 2023
mysql to mysql 轻量级多线程的库表数据同步

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

Nov 15, 2022
ClickHouse http proxy and load balancer
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

Jan 3, 2023
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

Dec 28, 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

Dec 7, 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

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

Oct 18, 2022
Distributed tracing using OpenTelemetry and ClickHouse

Distributed tracing backend using OpenTelemetry and ClickHouse Uptrace is a dist

Jan 2, 2023
A tool to run queries in defined frequency and expose the count as prometheus metrics. Supports MongoDB and SQL
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

Jul 1, 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

Dec 25, 2022
Simple instagram backend api built using golang and mongodb
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

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

Jan 2, 2023
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

Feb 22, 2022
a powerful mysql toolset with Go
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

Dec 28, 2022
Sync MySQL data into elasticsearch
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

Dec 30, 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

Dec 30, 2022