springboot3 连接 oceanbase + logproxy数据同步到redis

2024-06-21 20:12

本文主要是介绍springboot3 连接 oceanbase + logproxy数据同步到redis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我这用的是 社区版的 单机, rocky liunx 安装oceanbase

注意事项:

logproxy 是 CDC 模式 ,   springboot 可以直接订阅

canal 是 binlog模式,   canal 订阅 logproxy, springboot 订阅 canal

logproxy 也可以转  binlog

大数据量跟高频率推荐  binlog

1: oceanbase 下载地址:

OceanBase分布式数据库-海量数据 笔笔算数

2: 安装 obd web 界面安装

 文档地址:

OceanBase分布式数据库-海量数据 笔笔算数

tar -xzf oceanbase-all-in-one-*.tar.gz
cd oceanbase-all-in-one/bin/
./install.sh
source ~/.oceanbase-all-in-one/bin/env.sh
obd web

obd 集群命令
https://www.oceanbase.com/docs/community-obd-cn-10000000001690699

# 查看集群列表
obd cluster list

# 查看集群状态,以部署名为 demo为例
obd cluster display demo

# 停止运行中的集群,以部署名为 demo为例
obd cluster stop demo

# 销毁已部署的集群,以部署名为 demo 为例
obd cluster destroy demo

启动 ob  demo = 名称
obd cluster restart demo

3: 下载 logproxy

   Releases · oceanbase/oblogproxy · GitHub

4: 安装 logproxy

文档地址OceanBase分布式数据库-海量数据 笔笔算数

下载完成后,通过如下命令进行安装:

rpm -i oblogproxy-{version}.{arch}.rpm

项目安装默认为 /usr/local/oblogproxy

5: 配置和启动 logproxy

 注意这里配置的用户, sys下新建租户, 有 且必须具备 sys 租户下 OceanBase 数据库的读权限。就是sys下新建租户, 授权OceanBase  的读权限给这个新建的租户

先配置执行 sys 新建的 用户名密码 

sh run.sh config_sys  sys passwd

cd /usr/local/oblogproxy/

./run.sh start / stop

   

6: 代码实现:

OceanBase分布式数据库-海量数据 笔笔算数

<dependency>
  <groupId>com.oceanbase.logclient</groupId>
  <artifactId>logproxy-client</artifactId>
  <version>1.1.0</version>
</dependency>
 

ObReaderConfig config = new ObReaderConfig();
// 设置OceanBase root server 地址列表,格式为(可以支持多个,用';'分隔):ip1:rpc_port1:sql_port1;ip2:rpc_port2:sql_port2
config.setRsList("xxx.xxx.xxx.1:2882:2881;xxx.xxx.xxx.2:2882:2881");
// 设置用户名和密码(非系统租户)
config.setUsername("r***");  这里可以直接用数据库的租户和密码
config.setPassword("****");
// 设置启动位点(UNIX时间戳,单位s), 0表示从当前时间启动。
config.setStartTimestamp(0L);
// 设置订阅表白名单,格式为:tenant.db.table, '*'表示通配.
config.setTableWhiteList("sys.*.*");  sys是租户,一般会自己新建一个租户存放数据库如 demo.*.*// 指定oblogproxy服务地址,创建实例.
LogProxyClient client = new LogProxyClient("xxx.xxx.xxx.1", 2983, config);
// 添加 RecordListener
client.addListener(new RecordListener() {@Overridepublic void notify(LogMessage message){// 处理消息if(StringUtils.isBlank(message.getTableName())){return;}if(!tableName.contains(message.getTableName())){return;}// 处理消息switch (message.getOpt()) {case INSERT:insertSql(message.getFieldList(), message.getTableName());break;case UPDATE:updateSql(message.getFieldList(), message.getTableName());break;case DELETE:deleteSql(message.getFieldList(), message.getTableName());break;default:break;}}@Overridepublic void onException(LogProxyClientException e) {// 处理错误if (e.needStop()) {// 不可恢复异常,需要停止Clientclient.stop();}}
});// 启动
client.start();
client.join();//新增的SQLprivate void insertSql(List<DataMessage.Record.Field> list, String tableName) {if (CollectionUtils.isEmpty(list)) {return;}list 就是行数据, 可以查看对象看看具体的信息getFieldname() 字段名getValue().toString(CommonConstant.UTF8MB4)  字段值}

7: 程序启动后 可以观察 程序的打印:

 fail  auth  就是 logproxy 的 sh run.sh config_sys sys passwd 这个命令配置的 用户名密码不对

如下表示连接和 订阅成功

logproxy 日志打印:

cd /usr/local/oblogproxy/

tail -f log/logproxy.log 

只要

1: sh run.sh config_sys sys passwd 这里是 sys下新建的租户 用户名和密码正确

2:config.setUsername("r***");  这里可以直接用数据库的租户和密码
config.setPassword("****");

就没问题了

sys 系统租户,

ocp 管理用的

demo 自己新建的, 用来创建数据库 的  , (新建数据库,用户名,密码)

config.setUsername("r***") 就是这个数据库的用户名和密码

这篇关于springboot3 连接 oceanbase + logproxy数据同步到redis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082221

相关文章

大数据spark3.5安装部署之local模式详解

《大数据spark3.5安装部署之local模式详解》本文介绍了如何在本地模式下安装和配置Spark,并展示了如何使用SparkShell进行基本的数据处理操作,同时,还介绍了如何通过Spark-su... 目录下载上传解压配置jdk解压配置环境变量启动查看交互操作命令行提交应用spark,一个数据处理框架

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

通过ibd文件恢复MySql数据的操作方法

《通过ibd文件恢复MySql数据的操作方法》文章介绍通过.ibd文件恢复MySQL数据的过程,包括知道表结构和不知道表结构两种情况,对于知道表结构的情况,可以直接将.ibd文件复制到新的数据库目录并... 目录第一种情况:知道表结构第二种情况:不知道表结构总结今天干了一件大事,安装1Panel导致原来服务

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

Jmeter如何向数据库批量插入数据

《Jmeter如何向数据库批量插入数据》:本文主要介绍Jmeter如何向数据库批量插入数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Jmeter向数据库批量插入数据Jmeter向mysql数据库中插入数据的入门操作接下来做一下各个元件的配置总结Jmete

Redis客户端工具之RedisInsight的下载方式

《Redis客户端工具之RedisInsight的下载方式》RedisInsight是Redis官方提供的图形化客户端工具,下载步骤包括访问Redis官网、选择RedisInsight、下载链接、注册... 目录Redis客户端工具RedisInsight的下载一、点击进入Redis官网二、点击RedisI

Redis实现RBAC权限管理

《Redis实现RBAC权限管理》本文主要介绍了Redis实现RBAC权限管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录1. 什么是 RBAC?2. 为什么使用 Redis 实现 RBAC?3. 设计 RBAC 数据结构

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq