Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cdc-engine2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄营
cdc-engine2
Commits
4e15e330
Commit
4e15e330
authored
Nov 19, 2024
by
y1sa
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mysql CDC实现
parent
9b8b1a66
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
110 additions
and
15 deletions
+110
-15
AbstractCdcEngine.java
...main/java/com/tbyf/cdcengine2/core/AbstractCdcEngine.java
+0
-2
pom.xml
mysql-cdc/pom.xml
+15
-0
MySqlCdcEngine.java
...c/main/java/com/tbyf/cdcengine2/mysql/MySqlCdcEngine.java
+47
-0
MySqlCdcEngineProperties.java
...a/com/tbyf/cdcengine2/mysql/MySqlCdcEngineProperties.java
+24
-0
MySqlUtils.java
...c/src/main/java/com/tbyf/cdcengine2/mysql/MySqlUtils.java
+16
-0
OracleCdcEngine.java
...main/java/com/tbyf/cdcengine2/oracle/OracleCdcEngine.java
+0
-3
pom.xml
pom.xml
+5
-0
pom.xml
sqlserver-cdc/pom.xml
+0
-5
SqlServerCdcEngine.java
...ava/com/tbyf/cdcengine2/sqlserver/SqlServerCdcEngine.java
+2
-4
SqlServerCdcEngineProperties.java
...yf/cdcengine2/sqlserver/SqlServerCdcEngineProperties.java
+1
-1
No files found.
core/src/main/java/com/tbyf/cdcengine2/core/AbstractCdcEngine.java
View file @
4e15e330
...
@@ -51,12 +51,10 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
...
@@ -51,12 +51,10 @@ public abstract class AbstractCdcEngine<T extends AbstractCdcEngine<T>> {
debeziumProps
.
setProperty
(
"snapshot.mode"
,
"schema_only"
);
debeziumProps
.
setProperty
(
"snapshot.mode"
,
"schema_only"
);
debeziumProps
.
setProperty
(
"database.history.skip.unparseable.ddl"
,
Boolean
.
toString
(
true
));
debeziumProps
.
setProperty
(
"database.history.skip.unparseable.ddl"
,
Boolean
.
toString
(
true
));
debeziumProps
.
setProperty
(
"database.history.store.only.captured.tables.ddl"
,
Boolean
.
toString
(
true
));
debeziumProps
.
setProperty
(
"database.history.store.only.captured.tables.ddl"
,
Boolean
.
toString
(
true
));
debeziumProps
.
setProperty
(
"database.hostname"
,
props
.
getHost
());
debeziumProps
.
setProperty
(
"database.hostname"
,
props
.
getHost
());
debeziumProps
.
setProperty
(
"database.port"
,
String
.
valueOf
(
props
.
getPort
()));
debeziumProps
.
setProperty
(
"database.port"
,
String
.
valueOf
(
props
.
getPort
()));
debeziumProps
.
setProperty
(
"database.user"
,
props
.
getUsername
());
debeziumProps
.
setProperty
(
"database.user"
,
props
.
getUsername
());
debeziumProps
.
setProperty
(
"database.password"
,
props
.
getPassword
());
debeziumProps
.
setProperty
(
"database.password"
,
props
.
getPassword
());
debeziumProps
.
setProperty
(
Constants
.
DATABASE_SERVER_NAME_PROP
,
Constants
.
DATABASE_SERVER_NAME_VALUE
);
debeziumProps
.
setProperty
(
Constants
.
DATABASE_SERVER_NAME_PROP
,
Constants
.
DATABASE_SERVER_NAME_VALUE
);
debeziumProps
.
setProperty
(
Constants
.
DATABASE_HISTORY_PROP
,
FileDatabaseHistory
.
class
.
getName
());
debeziumProps
.
setProperty
(
Constants
.
DATABASE_HISTORY_PROP
,
FileDatabaseHistory
.
class
.
getName
());
debeziumProps
.
setProperty
(
"name"
,
getClass
().
getSimpleName
());
debeziumProps
.
setProperty
(
"name"
,
getClass
().
getSimpleName
());
...
...
mysql-cdc/pom.xml
View file @
4e15e330
...
@@ -17,4 +17,18 @@
...
@@ -17,4 +17,18 @@
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
</properties>
<dependencies>
<dependency>
<groupId>
com.tbyf.cdcengine2
</groupId>
<artifactId>
core
</artifactId>
</dependency>
<dependency>
<groupId>
com.mysql
</groupId>
<artifactId>
mysql-connector-j
</artifactId>
</dependency>
<dependency>
<groupId>
io.debezium
</groupId>
<artifactId>
debezium-connector-mysql
</artifactId>
</dependency>
</dependencies>
</project>
</project>
\ No newline at end of file
mysql-cdc/src/main/java/com/tbyf/cdcengine2/mysql/MySqlCdcEngine.java
0 → 100644
View file @
4e15e330
package
com
.
tbyf
.
cdcengine2
.
mysql
;
import
com.tbyf.cdcengine2.core.AbstractCdcEngine
;
import
com.tbyf.cdcengine2.core.Constants
;
import
io.debezium.connector.mysql.MySqlConnector
;
import
java.util.Arrays
;
import
java.util.HashSet
;
import
java.util.stream.Collectors
;
public
class
MySqlCdcEngine
extends
AbstractCdcEngine
<
MySqlCdcEngine
>
{
static
{
MySqlUtils
.
loadDriver
();
}
public
MySqlCdcEngine
(
MySqlCdcEngineProperties
props
)
{
super
(
props
);
debeziumProps
.
setProperty
(
Constants
.
CONNECTOR_CLASS_PROP
,
MySqlConnector
.
class
.
getName
());
debeziumProps
.
setProperty
(
Constants
.
DATABASE_DBNAME_PROP
,
props
.
getDbname
());
String
dbname
=
props
.
getDbname
();
debeziumProps
.
setProperty
(
"database.serverTimezone"
,
"Asia/Shanghai"
);
String
capturedTables
=
new
HashSet
<>(
Arrays
.
asList
(
props
.
getCapturedTables
().
toUpperCase
().
split
(
","
)))
.
stream
().
map
(
tableName
->
dbname
+
"."
+
tableName
)
.
collect
(
Collectors
.
joining
(
","
));
debeziumProps
.
setProperty
(
Constants
.
TABLE_INCLUDE_LIST_PROP
,
capturedTables
);
}
public
static
void
main
(
String
[]
args
)
{
MySqlCdcEngineProperties
props
=
new
MySqlCdcEngineProperties
();
props
.
setHost
(
"localhost"
);
props
.
setPort
(
3306
);
props
.
setUsername
(
"root"
);
props
.
setPassword
(
"root"
);
props
.
setDbname
(
"easychat"
);
props
.
setCapturedTables
(
"app_update"
);
new
MySqlCdcEngine
(
props
)
.
onChange
(
record
->
{
System
.
out
.
println
(
record
);
}).
start
();
}
}
mysql-cdc/src/main/java/com/tbyf/cdcengine2/mysql/MySqlCdcEngineProperties.java
0 → 100644
View file @
4e15e330
package
com
.
tbyf
.
cdcengine2
.
mysql
;
import
com.tbyf.cdcengine2.core.BaseCdcEngineProperties
;
public
class
MySqlCdcEngineProperties
extends
BaseCdcEngineProperties
{
private
String
dbname
;
private
String
capturedTables
;
public
String
getDbname
()
{
return
dbname
;
}
public
void
setDbname
(
String
dbname
)
{
this
.
dbname
=
dbname
;
}
public
String
getCapturedTables
()
{
return
capturedTables
;
}
public
void
setCapturedTables
(
String
capturedTables
)
{
this
.
capturedTables
=
capturedTables
;
}
}
mysql-cdc/src/main/java/com/tbyf/cdcengine2/mysql/MySqlUtils.java
0 → 100644
View file @
4e15e330
package
com
.
tbyf
.
cdcengine2
.
mysql
;
public
class
MySqlUtils
{
public
static
void
loadDriver
()
{
try
{
Class
.
forName
(
"com.mysql.cj.jdbc.Driver"
);
}
catch
(
ClassNotFoundException
e
)
{
throw
new
IllegalStateException
(
"未找到mysql jdbc驱动"
,
e
);
}
}
public
static
String
buildUrl
(
String
host
,
int
port
,
String
database
)
{
return
"jdbc:mysql://"
+
host
+
":"
+
port
+
"/"
+
database
+
"?serverTimezone=Asia/Shanghai"
;
}
}
oracle-cdc/src/main/java/com/tbyf/cdcengine2/oracle/OracleCdcEngine.java
View file @
4e15e330
package
com
.
tbyf
.
cdcengine2
.
oracle
;
package
com
.
tbyf
.
cdcengine2
.
oracle
;
import
com.tbyf.cdcengine2.core.AbstractCdcEngine
;
import
com.tbyf.cdcengine2.core.AbstractCdcEngine
;
import
com.tbyf.cdcengine2.core.ChangeListener
;
import
com.tbyf.cdcengine2.core.ChangedRecord
;
import
com.tbyf.cdcengine2.core.Constants
;
import
com.tbyf.cdcengine2.core.Constants
;
import
io.debezium.connector.oracle.OracleConnector
;
import
io.debezium.connector.oracle.OracleConnector
;
...
@@ -19,7 +17,6 @@ public class OracleCdcEngine extends AbstractCdcEngine<OracleCdcEngine> {
...
@@ -19,7 +17,6 @@ public class OracleCdcEngine extends AbstractCdcEngine<OracleCdcEngine> {
public
OracleCdcEngine
(
OracleCdcEngineProperties
props
)
{
public
OracleCdcEngine
(
OracleCdcEngineProperties
props
)
{
super
(
props
);
super
(
props
);
debeziumProps
.
setProperty
(
Constants
.
CONNECTOR_CLASS_PROP
,
OracleConnector
.
class
.
getName
());
debeziumProps
.
setProperty
(
Constants
.
CONNECTOR_CLASS_PROP
,
OracleConnector
.
class
.
getName
());
debeziumProps
.
setProperty
(
Constants
.
DATABASE_DBNAME_PROP
,
props
.
getDbname
());
debeziumProps
.
setProperty
(
Constants
.
DATABASE_DBNAME_PROP
,
props
.
getDbname
());
debeziumProps
.
setProperty
(
"log.mining.strategy"
,
"online_catalog"
);
debeziumProps
.
setProperty
(
"log.mining.strategy"
,
"online_catalog"
);
...
...
pom.xml
View file @
4e15e330
...
@@ -59,6 +59,11 @@
...
@@ -59,6 +59,11 @@
<version>
${debezium.version}
</version>
<version>
${debezium.version}
</version>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
io.debezium
</groupId>
<artifactId>
debezium-connector-mysql
</artifactId>
<version>
${debezium.version}
</version>
</dependency>
<dependency>
<groupId>
com.microsoft.sqlserver
</groupId>
<groupId>
com.microsoft.sqlserver
</groupId>
<artifactId>
mssql-jdbc
</artifactId>
<artifactId>
mssql-jdbc
</artifactId>
<version>
${mssql-jdbc.version}
</version>
<version>
${mssql-jdbc.version}
</version>
...
...
sqlserver-cdc/pom.xml
View file @
4e15e330
...
@@ -36,9 +36,5 @@
...
@@ -36,9 +36,5 @@
<groupId>
com.microsoft.sqlserver
</groupId>
<groupId>
com.microsoft.sqlserver
</groupId>
<artifactId>
mssql-jdbc
</artifactId>
<artifactId>
mssql-jdbc
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
ch.qos.logback
</groupId>
<artifactId>
logback-classic
</artifactId>
</dependency>
</dependencies>
</dependencies>
</project>
</project>
\ No newline at end of file
sqlserver-cdc/src/main/java/com/tbyf/cdcengine2/sqlserver/SqlServerCdcEngine.java
View file @
4e15e330
package
com
.
tbyf
.
cdcengine2
.
sqlserver
;
package
com
.
tbyf
.
cdcengine2
.
sqlserver
;
import
com.tbyf.cdcengine2.core.AbstractCdcEngine
;
import
com.tbyf.cdcengine2.core.AbstractCdcEngine
;
import
com.tbyf.cdcengine2.core.ChangeHandler
;
import
com.tbyf.cdcengine2.core.ChangedRecord
;
import
com.tbyf.cdcengine2.core.Constants
;
import
com.tbyf.cdcengine2.core.Constants
;
import
io.debezium.connector.sqlserver.SqlServerConnector
;
import
io.debezium.connector.sqlserver.SqlServerConnector
;
...
@@ -23,7 +21,7 @@ public class SqlServerCdcEngine extends AbstractCdcEngine<SqlServerCdcEngine> {
...
@@ -23,7 +21,7 @@ public class SqlServerCdcEngine extends AbstractCdcEngine<SqlServerCdcEngine> {
debeziumProps
.
setProperty
(
Constants
.
CONNECTOR_CLASS_PROP
,
SqlServerConnector
.
class
.
getName
());
debeziumProps
.
setProperty
(
Constants
.
CONNECTOR_CLASS_PROP
,
SqlServerConnector
.
class
.
getName
());
debeziumProps
.
setProperty
(
Constants
.
DATABASE_DBNAME_PROP
,
props
.
getDbName
());
debeziumProps
.
setProperty
(
Constants
.
DATABASE_DBNAME_PROP
,
props
.
getDbName
());
String
schema
=
SqlServerCdcEngineProperties
.
SCHEMA_NAME
;
String
schema
=
SqlServerCdcEngineProperties
.
DATABASE_OWNER_
SCHEMA_NAME
;
String
capturedTables
=
new
HashSet
<>(
Arrays
.
asList
(
props
.
getCapturedTables
().
toUpperCase
().
split
(
","
)))
String
capturedTables
=
new
HashSet
<>(
Arrays
.
asList
(
props
.
getCapturedTables
().
toUpperCase
().
split
(
","
)))
.
stream
().
map
(
tableName
->
schema
+
"."
+
tableName
)
.
stream
().
map
(
tableName
->
schema
+
"."
+
tableName
)
.
collect
(
Collectors
.
joining
(
","
));
.
collect
(
Collectors
.
joining
(
","
));
...
@@ -46,7 +44,7 @@ public class SqlServerCdcEngine extends AbstractCdcEngine<SqlServerCdcEngine> {
...
@@ -46,7 +44,7 @@ public class SqlServerCdcEngine extends AbstractCdcEngine<SqlServerCdcEngine> {
props
.
setUsername
(
"sa"
);
props
.
setUsername
(
"sa"
);
props
.
setPassword
(
"1"
);
props
.
setPassword
(
"1"
);
props
.
setDbName
(
"dz_his"
);
props
.
setDbName
(
"dz_his"
);
props
.
setCapturedTables
(
"BA_B
RDA
"
);
props
.
setCapturedTables
(
"BA_B
AJY
"
);
SqlServerCdcEngine
engine
=
new
SqlServerCdcEngine
(
props
);
SqlServerCdcEngine
engine
=
new
SqlServerCdcEngine
(
props
);
engine
.
onChange
(
record
->
{
engine
.
onChange
(
record
->
{
...
...
sqlserver-cdc/src/main/java/com/tbyf/cdcengine2/sqlserver/SqlServerCdcEngineProperties.java
View file @
4e15e330
...
@@ -4,7 +4,7 @@ import com.tbyf.cdcengine2.core.BaseCdcEngineProperties;
...
@@ -4,7 +4,7 @@ import com.tbyf.cdcengine2.core.BaseCdcEngineProperties;
public
class
SqlServerCdcEngineProperties
extends
BaseCdcEngineProperties
{
public
class
SqlServerCdcEngineProperties
extends
BaseCdcEngineProperties
{
public
static
final
String
SCHEMA_NAME
=
"dbo"
;
public
static
final
String
DATABASE_OWNER_
SCHEMA_NAME
=
"dbo"
;
private
String
dbName
;
private
String
dbName
;
private
String
capturedTables
;
private
String
capturedTables
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment