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

 

Bifrost 可以将 你 MySQL 里的数据,实时的同步到 :
Redis
MongoDB
ClickHouse
MySQL
Memcahe
RabbitMQ
ActiveMQ
Kafka
Http 自定义服务
Hprose RPC 自定义服务
WIKI : https://wiki.xbifrost.com


Bifrost 特点
支持 MySQL 所有存储类型
界面化动态灵活配置不同的数据表及目标库
多数据源,多种目标库支持
同时支持 增量 及 全量 数据同步
宕机后重启自动恢复配置,位点精确控制
支持自定义插件开发,动态加载
支持 Email 及 微信企业号等监控报警功能
提供第三方监控平台访问接口(Http Basic验证)
一个Binlog解析线程,多个目标库并行同步
支持对 Null 的解析,但对 Null 的支持程度,取决于插件的支持,如果有 Null 数据,请查阅 相关插件文档

Bifrost在线界面体验
http://www.xbifrost.com/demo/goto.html
用户名: Bifrost
密码 : Bifrost123

Bifrost 还不足的地方
支持批量刷数据的插件,在数据同步异常的情况下,不支持错过当前数据同步功能,例如: ClickHouse,Kafka
datetime,timestamp 解析还不支持精确到毫秒,毫秒部分将会自动被丢弃
MySQL 版本(经过测试)
5.1.73
5.5.42
5.6.36
5.7.18
8.0.11 (用户密码验证需要采用 mysql_native_password 方式)

源码包编译安装(安装前需要安装go环境)

编译
git clone https://github.com/brokercap/Bifrost.git
cd Bifrost
[root@node220 Bifrost-1.4.1-release]# ls
Bifrost.go      Bristol        config           Dockerfile  go.mod   Makefile  qq.jpg     server  test
bifrost.png     build.sh       CONTRIBUTING.md  docker.sh   go.sum   manager   README.MD  tags    tools
Bifrost-server  changelog.txt  diagram.png      etc         LICENSE  plugin    sdk        target  xdb
[root@node220 Bifrost-1.4.1-release]# ./build.sh                #需要翻墙,否则无法下载需要的插件
        
启动
[root@node220 bin]# pwd
/usr/local/Bifrost-1.4.1-release/target/bin
[root@node220 bin]# ls
Bifrost  Bifrost-server
[root@node220 bin]# ./Bifrost-server start
/usr/local/Bifrost-1.4.1-release/target/bin/Bifrost
[/usr/local/Bifrost-1.4.1-release/target/bin/Bifrost -d -config /usr/local/Bifrost-1.4.1-release/target/etc/Bifrost.ini -pid /usr/local/Bifrost-1.4.1-release/target/data/Bifrost.pid]
[root@node220 bin]#
___         ___                   _  
(  _'\  _  /'___)                 ( )_
| (_) )(_)| (__  _ __   _     ___ | ,_)      Bifrost v1.4.1-release amd64   Listen https://0.0.0.0:21036
|  _ <'| || ,__)( '__)/'_'\ /',__)| |                           
| (_) )| || |   | |  ( (_) )\__, \| |_       Pid: 8553
(____/'(_)(_)   (_)  '\___/'(____/'\__)      http://xbifrost.com
2020/10/29 15:42:46 no config [ Bifrostd log_dir ]
2020/10/29 15:42:46 log_dir default: /usr/local/Bifrost-1.4.1-release/target//logs
log input to /usr/local/Bifrost-1.4.1-release/target//logs/Bifrost_2020-10-29.log
Please press the `Enter`


停止:
[root@node220 bin]#/usr/local/Bifrost-1.4.1-release/target/bin/Bifrost-server stop
Shutting down Bifrost

二进制包安装:(不需要安装go环境)
wget https://github.com/brokercap/Bifrost/releases/download/v1.5.2-release/bifrost_v1.5.2-release_Linux-amd64-bin.tar.gz
tar xf bifrost_v1.5.2-release_Linux-amd64-bin.tar.gz
mv bifrost_v1.5.2-release_Linux-amd64-bin /usr/local/
[root@node220 bifrost_v1.5.2-release_Linux-amd64-bin]# pwd
/usr/local/bifrost_v1.5.2-release_Linux-amd64-bin
[root@node220 bifrost_v1.5.2-release_Linux-amd64-bin]# ls
bin  etc  go.mod  go.sum  LICENSE  manager  plugin  README.MD  VERSION
[root@node220 bifrost_v1.5.2-release_Linux-amd64-bin]#

启动程序:
[root@node220 bin]# /usr/local/bifrost_v1.5.2-release_Linux-amd64-bin/bin/Bifrost-server start
/usr/local/bifrost_v1.5.2-release_Linux-amd64-bin/bin/Bifrost
[/usr/local/bifrost_v1.5.2-release_Linux-amd64-bin/bin/Bifrost -d -config /usr/local/bifrost_v1.5.2-release_Linux-amd64-bin/etc/Bifrost.ini -pid /usr/local/bifrost_v1.5.2-release_Linux-amd64-bin/data/Bifrost.pid]
[root@node220 bin]#
___         ___                   _  
(  _'\  _  /'___)                 ( )_
| (_) )(_)| (__  _ __   _     ___ | ,_)      Bifrost v1.5.2-release amd64   Listen https://0.0.0.0:21036
|  _ <'| || ,__)( '__)/'_'\ /',__)| |                           
| (_) )| || |   | |  ( (_) )\__, \| |_       Pid: 8724
(____/'(_)(_)   (_)  '\___/'(____/'\__)      http://xbifrost.com
2020/10/29 15:59:00 no config [ Bifrostd log_dir ]
2020/10/29 15:59:00 log_dir default: /usr/local/bifrost_v1.5.2-release_Linux-amd64-bin//logs
log input to /usr/local/bifrost_v1.5.2-release_Linux-amd64-bin//logs/Bifrost_2020-10-29.log
关闭程序:
[root@node220 bin]# /usr/local/bifrost_v1.5.2-release_Linux-amd64-bin/bin/Bifrost-server stop
Shutting down Bifrost
server stop success

界面管理
https://172.16.1.220:21036/login

用户名和密码是在 /usr/local/bifrost_v1.5.2-release_Linux-amd64-bin/etc/Bifrost.ini配置文件中配置的
默认用户名和密码
用户名:Bifrost
密码:Bifrost123

Docker启动
docker pull jc3wish/bifrost
mkdir -p /data/BifrostData
docker run -d -p21036:21036 -v /data/BifrostData:/linux/data jc3wish/bifrost


配置
vim Bifrost.ini

[user]
Bifrost=Bifrost123
BifrostMonitor=Bifrost123
[groups]
#administrator 管理人员可以添加删除等操作
#monitor 只能查看数据
Bifrost=administrator
BifrostMonitor=monitor
[Bifrostd]
#默认会当前启动文件夹
#log_dir=/data/log/
#默认21036端口
listen=0.0.0.0:21036
#默认会当前启动文件夹
#data_dir=/data/bifrost
#默认启动文件夹下Bifrost.pid
#pid=/tmp/bifrost.pid
#是否支持动态加载插件,只有Linux 有效,其他平台无效,true | 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
#在没有数据的情况下,间隔多久提交一次插件,单位 秒
plugin_commit_timeout=5
#在同步出错的情况下,每2次重试之后 间隔多久再重试 ,单位 秒
plugin_sync_retry_time=5
#[PerformanceTesting]
#性能测试配置,用于指定哪一个数据源,从哪一个位点开始

#mysqlLocalTest=mysql-bin.000016,11857

生成https证书
HTTPS证书
脚本生成
cd etc/
./crt_create.sh
自行生成
openssl genrsa -out server.key 2048
openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650

官方文档:
https://www.xbifrost.com/
最新版下载:
https://github.com/brokercap/Bifrost/releases
中文操作说明文档:
http://www.mianshigee.com/tutorial/Bifrost-1.1.0/1404f101a2ab1c50.md

分割线
打赏
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS