Skip to content

Commit 94adeaf

Browse files
committed
feat: ob mysql with obcdc
(cherry picked from commit 51309bf)
1 parent c1fe0c7 commit 94adeaf

File tree

2 files changed

+167
-0
lines changed

2 files changed

+167
-0
lines changed

connectors/oceanbase-mysql-connector/pom.xml

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
<HikariCP.version>4.0.3</HikariCP.version>
2222
<commons-lang.version>3.12.0</commons-lang.version>
2323
<guava.version>31.0.1-jre</guava.version>
24+
<protoc.version>3.19.1</protoc.version>
25+
<grpc.version>1.43.0</grpc.version>
2426
<tapdata.pdk.api.version>1.4.1-SNAPSHOT</tapdata.pdk.api.version>
2527
</properties>
2628

@@ -115,8 +117,58 @@
115117
<artifactId>tapdata-pdk-runner</artifactId>
116118
<scope>test</scope>
117119
</dependency>
120+
<!-- grpc相关依赖 begin -->
121+
<dependency>
122+
<groupId>com.google.protobuf</groupId>
123+
<artifactId>protobuf-java-util</artifactId>
124+
<version>${protoc.version}</version>
125+
<exclusions>
126+
<exclusion>
127+
<artifactId>guava</artifactId>
128+
<groupId>com.google.guava</groupId>
129+
</exclusion>
130+
<exclusion>
131+
<artifactId>error_prone_annotations</artifactId>
132+
<groupId>com.google.errorprone</groupId>
133+
</exclusion>
134+
<exclusion>
135+
<groupId>org.slf4j</groupId>
136+
<artifactId>slf4j-api</artifactId>
137+
</exclusion>
138+
</exclusions>
139+
</dependency>
140+
<dependency>
141+
<groupId>io.grpc</groupId>
142+
<artifactId>grpc-protobuf</artifactId>
143+
<version>${grpc.version}</version>
144+
</dependency>
145+
<dependency>
146+
<groupId>io.grpc</groupId>
147+
<artifactId>grpc-stub</artifactId>
148+
<version>${grpc.version}</version>
149+
</dependency>
150+
<dependency>
151+
<groupId>io.grpc</groupId>
152+
<artifactId>grpc-netty-shaded</artifactId>
153+
<!-- <scope>runtime</scope>-->
154+
<version>${grpc.version}</version>
155+
</dependency>
156+
<dependency>
157+
<groupId>com.google.errorprone</groupId>
158+
<artifactId>error_prone_annotations</artifactId>
159+
<version>2.9.0</version>
160+
</dependency>
118161
</dependencies>
119162
<build>
163+
<!-- os系统信息插件, protobuf-maven-plugin需要获取系统信息下载相应的protobuf程序 -->
164+
<extensions>
165+
<extension>
166+
<groupId>kr.motd.maven</groupId>
167+
<artifactId>os-maven-plugin</artifactId>
168+
<version>1.6.2</version>
169+
</extension>
170+
</extensions>
171+
120172
<plugins>
121173
<plugin>
122174
<groupId>org.apache.maven.plugins</groupId>
@@ -223,6 +275,34 @@
223275
<target>8</target>
224276
</configuration>
225277
</plugin>
278+
<!-- grpc代码生成插件 -->
279+
<plugin>
280+
<groupId>org.xolstice.maven.plugins</groupId>
281+
<artifactId>protobuf-maven-plugin</artifactId>
282+
<version>0.6.1</version>
283+
<configuration>
284+
<protocArtifact>com.google.protobuf:protoc:${protoc.version}:exe:${os.detected.classifier}
285+
</protocArtifact>
286+
<pluginId>grpc-java</pluginId>
287+
<pluginArtifact>io.grpc:protoc-gen-grpc-java:${grpc.version}:exe:${os.detected.classifier}
288+
</pluginArtifact>
289+
<!--默认值-->
290+
<protoSourceRoot>${project.basedir}/src/main/proto</protoSourceRoot>
291+
<outputDirectory>${project.build.directory}/generated-sources/protobuf</outputDirectory>
292+
<!-- <outputDirectory>${project.basedir}/generated-sources</outputDirectory>-->
293+
<!--设置是否在生成java文件之前清空outputDirectory的文件,默认值为true,设置为false时也会覆盖同名文件-->
294+
<clearOutputDirectory>false</clearOutputDirectory>
295+
<!--更多配置信息可以查看https://www.xolstice.org/protobuf-maven-plugin/compile-mojo.html-->
296+
</configuration>
297+
<executions>
298+
<execution>
299+
<goals>
300+
<goal>compile</goal>
301+
<goal>compile-custom</goal>
302+
</goals>
303+
</execution>
304+
</executions>
305+
</plugin>
226306
</plugins>
227307
</build>
228308
</project>
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
// protoc -I. --cpp_out ../pb --grpc_out ../pb --plugin=protoc-gen-grpc=/usr/local/bin/grpc_cpp_plugin ObPlugInDataSource.proto
2+
3+
syntax = "proto3";
4+
5+
option java_multiple_files = true;
6+
option java_package = "io.tapdata.data.ob";//java 区分
7+
option java_outer_classname = "ProtoObReadLog";
8+
option objc_class_prefix = "PD";
9+
10+
package tapdata;
11+
12+
service ObReadLogServer
13+
{
14+
rpc StartReadLog(ReadLogRequest) returns (stream ReadLogResponse) {}//拉取日志数据
15+
rpc StopReadLog(StopReadLogRequest) returns (ControlResponse){}
16+
}
17+
18+
message StopReadLogRequest
19+
{
20+
string task_id = 1;//日志任务ID
21+
}
22+
23+
message ControlResponse
24+
{
25+
int64 code = 1;//状态码
26+
string msg = 2;//携带错误信息
27+
}
28+
29+
message ReaderSource
30+
{
31+
string cluster_user = 1;
32+
string cluster_password = 2;
33+
string rootserver_list = 3;
34+
string tb_white_list = 4;
35+
}
36+
37+
message ReadLogRequest
38+
{
39+
string task_id = 1;//日志任务ID
40+
int64 stime = 2;//从 Januray 1 1970起UTC秒数,当stime大于0时,比stime小的日志将会被过滤
41+
ReaderSource source = 3;//数据库源读取(连接)配置
42+
string config_file = 4;//如果没指定source,则需要指定配置文件路径。
43+
}
44+
45+
enum ReadLogOp
46+
{
47+
UNKNOWN = 0;
48+
ROLLBACK = 1; //没有回滚日志
49+
COMMIT = 2; //commit
50+
INSERT = 3; //c
51+
UPDATE = 4; //u
52+
DELETE = 5; //d
53+
DDL = 6;
54+
HEARTBEAT = 7;
55+
}
56+
57+
message ReadLogPayload
58+
{
59+
string dbname = 1;
60+
string tbname = 2;
61+
ReadLogOp op = 3;
62+
repeated Value before = 4;//update
63+
repeated Value after = 5;
64+
string ddl = 6;
65+
int64 transaction_time = 7;//从 Januray 1 1970起UTC秒数, 只有op为commit才有
66+
}
67+
68+
message Value
69+
{
70+
string column_name = 1;//列的名字
71+
oneof datum //列的值
72+
{
73+
int64 value_int = 2;
74+
float value_float = 3;
75+
double value_double = 4;
76+
string value_string = 5;
77+
bytes value_bytes = 6;
78+
bool is_null = 7;
79+
}
80+
}
81+
82+
message ReadLogResponse
83+
{
84+
int64 code = 1;//状态码
85+
string msg = 2;//携带错误信息
86+
ReadLogPayload payload = 3;//日志分析后的负荷(code不为OK时为空)
87+
}

0 commit comments

Comments
 (0)