当前位置:网站首页>Bifrost 同步数据库实现微服务跨库数据同步
Bifrost 同步数据库实现微服务跨库数据同步
2022-08-10 05:31:00 【开发老张】
Bifrost
Bifrost 可以在同步各种数据数据,类似于 Canal
当前支持的数据库
- Redis
- MongoDB
- ClickHouse(DDL suppoted)
- MySQL(DDL supported)
- Memcache
- RabbitMQ
- ActiveMQ
- Kafka
- ElasticSearch
- Http 自定义服务
- Hprose RPC 自定义服务
使用场景
- 微服务场景中,因为数据库也是根据业务模块进行拆分,不同的业务逻辑中有些维度表,订单表等可能会在不同的微服务中跨表查询,此时如果使用 feign 或者接口方式获取数据再与本地表结合查询,当关联数据较多时,系统查询效率会非常低,还可能失效,此时较好的方式是将其他微服务数据库中的一些需要用到的表通过 Bifrost 同步到本微服务数据库中,同步过来的数据表只能查询使用,不能修改和删除数据,确保数据一致性;
- 实现 MySQL 同 Redis、MQ、Kafka 等存储中的数据实时同步;
MySQL 同步到 MySQL
本处场景为将 IP1 上的数据库 test 中的 user 表同步到 IP2 上的数据库的 test_bifrost 库中的 user 表;
安装/配置
此处通过 Docker 进行安装
拉取镜像
# docker pull jc3wish/bifrost
配置
创建保存配置及数据文件夹
# mkdir -p /home/data/dockerfile/bifrost
# cd /home/data/dockerfile/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=5000
#通 道 队 列 的 大 小 , 默 认 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
#采 用 什 么 方 式 存 储 ,默 认 文 件 方 式
#meta_storage_type=redis
#存 储 介 质 的 连 接 地 址
#meta_storage_path=127.0.0.1:6379
#用 于 区 别 实 例 的 名 字
#cluster_name=bifrostTestClusterName
生成 https 证书
# mkdir etc
# cd etc
# openssl genrsa -out server.key 2048
# openssl req -new -x509 -sha256 -key server.key -out server.crt -days 3650
生成证书文件:server.crt 和 server.key
运行 Docker
# docker run -d -p21036:21036 -v /etc/localtime:/etc/localtime -v /home/data/dockerfile/bifrost:/linux/data jc3wish/bifrost
端口为 21036
添加 DNS
(named 服务之前已经安装过)
将 bifrost.zsoft.com 到 安装主机IP 的解析添加到 named 服务的 zsoft.com.zone 配置文件中,并重启 named 服务;
页面访问
用浏览器访问 https://bifrost.zsoft.com 打开管理页面
用户名、密码是在配置文件中配置的:Bifrost / Bifrost123
配置数据同步
登录网页后台 https://bifrost.zsoft.com
本例实现 IP1 上的 test 库的 user 表同步到 IP2 上的 test_bifrost 库的 user 表;
创建数据源
点击页面上方“数据源”,进入数据源配置页面;
Add new DB:
- Name:user|test|80 // 表示 80 服务器上的 test 数据库的 user 表
- ConnUri:root:[email protected](IP1:3306)/test // IP1 是数据库 test 所在机器的 IP 地址
- 其他不变
点击“提交”
创建目标库
创建完数据源后系统会自动跳转到创建“目标库列表”页(点击页面顶端的“目标库列表”按钮同样进入此页面);
Add new Server:
- ToServerKey:user|test_bifrost|82
- Plugin:mysql - v1.7.3
- ConnUri:root:[email protected](IP2:3306)/test_bifrost // IP2 是目标库所在服务器 IP
- MinConn:0
- MaxConn:20
- Notes:同步 80 服务器的 test 库的 user 表
点击“提交”
配置数据同步
切换到“数据源”页面,在已经创建好的 user|test|80 数据源最后点击“Setting”按钮;
左侧选择 test 数据库,在中间 Table List 中点击 user 表后的 “ADD” 按钮,点击“保存”,然后点击表明 user,在右侧进行配置:
- ToServerKey:mysql -- user|test_bifrost|82
- 同步模式:普通模式
- Fields:勾选要同步的列,我在此处全部选中
- 选择数据库:test_bifrost
- 选择表:user
- BatchSize:500
- Null 转成默认值:False
- MustBeSuccess:True
- FilterQuery:False
- FilterUpdate:True
点击“提交”
在“数据源”页面,在配置好的 user|test|80 项的 ConnStatus 中点击“Start”,状态变为“running”;
此时在 IP1 服务器的 test 库的 user 表添加一条数据:
INSERT INTO user values('1004', now(), now(), '赵六','pic04',1);
在 IP2 服务器的 test_bifrost 库的 user 表中就会看到数据已经同步过来!
边栏推荐
猜你喜欢
Joomla vulnerability reproduced
【静态代理】
IDEA 项目中设置 Sources Resources 等文件夹
kaggle小白必看:小白常见的2个错误解决方案
Pony语言学习(七)——表达式(Expressions)语法(单篇向)
论文精度 —— 2016 CVPR 《Context Encoders: Feature Learning by Inpainting》
MySql之json_extract函数处理json字段
oracle rac 11g安装执行root.sh时报错
PCL,VS配置过程中出现:用 _sopen_s 代替 _open, 或用_CRT_SECURE_NO_WARNNINGS错误
动手写prometheus的exporter-02-Counter(计数器)
随机推荐
IDEA连接MySQL数据库并执行SQL查询操作
OpenGauss source code, is it maintained with VSCode in the window system?
Conda creates a virtual environment method and pqi uses a domestic mirror source to install a third-party library method tutorial
R简单统计计算--笔记
基于Qiskit——《量子计算编程实战》读书笔记(二)
并发工具类——CountDownLatch、CyclicBarrier、Semaphore、Exchanger的介绍与使用
几种绘制时间线图的方法
Interface debugging also can play this?
AWR1843型号毫米波雷达使用
pytorch框架学习(1)网络的简单构建
Kubernetes:(十七)Helm概述、安装及配置
I have a dream for Career .
再肝3天,整理了90个 NumPy 例子,不能不收藏!
接口文档进化图鉴,有些古早接口文档工具,你可能都没用过
cesium 添加点,移动点
Matlab simulation of multi-factor house price prediction based on BP neural network
OneFlow源码解析:算子指令在虚拟机中的执行
scikit-learn机器学习 读书笔记(二)
文章复现:SRCNN
自适应空间特征融合( adaptively spatial feature fusion)一种基于数据驱动的金字塔特征融合策略