mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
merge tsdb meta support and refactor
This commit is contained in:
@@ -9,13 +9,10 @@
|
||||
|
||||
<bean id="dataSource" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.DataSourceFactoryTSDB"
|
||||
factory-method="getDataSource">
|
||||
<constructor-arg index="0" value="127.0.0.1"/>
|
||||
<constructor-arg index="1" value="canal"/>
|
||||
<constructor-arg index="2" value="canal"/>
|
||||
<constructor-arg index="3" value="true"/>
|
||||
<constructor-arg index="4" value="tsdb"/>
|
||||
<constructor-arg index="5" value="jdbc:mysql://127.0.0.1:3306/tsdb"/>
|
||||
<constructor-arg index="6" value="com.mysql.jdbc.Driver"/>
|
||||
<constructor-arg index="0" value="${canal.instance.tsdb.url}"/>
|
||||
<constructor-arg index="1" value="${canal.instance.tsdb.dbUsername}"/>
|
||||
<constructor-arg index="2" value="${canal.instance.tsdb.dbPassword}"/>
|
||||
<constructor-arg index="3" value="${canal.instance.tsdb.enable:true}"/>
|
||||
</bean>
|
||||
|
||||
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
|
||||
@@ -32,15 +29,11 @@
|
||||
<property name="configLocation" value="classpath:sqlmap-config.xml"/>
|
||||
</bean>
|
||||
|
||||
|
||||
<bean id="MetaHistoryDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaHistoryDAO">
|
||||
<bean id="metaHistoryDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaHistoryDAO">
|
||||
<property name="sqlMapClient" ref="sqlMapClient"/>
|
||||
</bean>
|
||||
|
||||
<bean id="MetaSnapshotDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotDAO">
|
||||
<bean id="metaSnapshotDAO" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.dao.MetaSnapshotDAO">
|
||||
<property name="sqlMapClient" ref="sqlMapClient"/>
|
||||
</bean>
|
||||
|
||||
<bean id="PersistTableMeta" class="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.TableMetaManager"></bean>
|
||||
|
||||
</beans>
|
||||
20
parse/src/test/resources/tsdb/mybatis-config.xml
Normal file
20
parse/src/test/resources/tsdb/mybatis-config.xml
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE configuration
|
||||
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-config.dtd">
|
||||
<configuration>
|
||||
<environments default="development">
|
||||
<environment id="development">
|
||||
<transactionManager type="JDBC"/>
|
||||
<dataSource type="POOLED">
|
||||
<property name="driver" value="com.mysql.jdbc.Driver"/>
|
||||
<property name="url" value="jdbc:mysql://127.0.0.1:3306/tsdb"/>
|
||||
<property name="username" value="canal"/>
|
||||
<property name="password" value="canal"/>
|
||||
</dataSource>
|
||||
</environment>
|
||||
</environments>
|
||||
<mappers>
|
||||
<package name="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.mapper"/>
|
||||
</mappers>
|
||||
</configuration>
|
||||
57
parse/src/test/resources/tsdb/sql-map/sqlmap_history.xml
Normal file
57
parse/src/test/resources/tsdb/sql-map/sqlmap_history.xml
Normal file
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
|
||||
<sqlMap namespace="table_meta_history">
|
||||
|
||||
<typeAlias alias="metaHistoryDO" type="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.model.MetaHistoryDO"/>
|
||||
|
||||
<sql id="allColumns">
|
||||
<![CDATA[
|
||||
|
||||
gmt_create,gmt_modified,binlog_file,binlog_offest,binlog_master_id,binlog_timestamp,use_schema,`schema`,`table`,`sql`,`type`,`extra`
|
||||
|
||||
]]>
|
||||
</sql>
|
||||
<sql id="allVOColumns">
|
||||
<![CDATA[
|
||||
|
||||
a.id as id,a.gmt_create as gmtCreate,a.gmt_modified as gmtModified,
|
||||
a.binlog_file as binlogFile,a.binlog_offest as binlogOffest,a.binlog_master_id as binlogMasterId,a.binlog_timestamp as binlogTimestamp,
|
||||
a.use_schema as useSchema,a.`schema` as `schema`,a.`table` as `table`,a.`sql` as `sql`,a.`type` as `type`,a.`extra` as `extra`
|
||||
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<select id="findByTimestamp" parameterClass="java.util.Map" resultClass="metaHistoryDO">
|
||||
select
|
||||
<include refid="allVOColumns"/>
|
||||
from `canal_table_meta_history$env$` a
|
||||
<![CDATA[
|
||||
where binlog_timestamp >= #snapshotTimestamp# and binlog_timestamp <= #timestamp#
|
||||
order by binlog_timestamp asc,id asc
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<insert id="insert" parameterClass="metaHistoryDO">
|
||||
insert into `canal_table_meta_history` (<include refid="allColumns"/>)
|
||||
values(now(),now(),#binlogFile#,#binlogOffest#,#binlogMasterId#,#binlogTimestamp#,#useSchema#,#schema#,#table#,#sql#,#type#,#extra#);
|
||||
<selectKey resultClass="java.lang.Long" keyProperty="id">
|
||||
SELECT last_insert_id()
|
||||
</selectKey>
|
||||
</insert>
|
||||
|
||||
|
||||
<delete id="deleteByGmtModified" parameterClass="java.util.Map">
|
||||
<![CDATA[
|
||||
|
||||
delete from `canal_table_meta_history`
|
||||
where gmt_modified < date_sub(now(),interval #interval# second)
|
||||
|
||||
]]>
|
||||
</delete>
|
||||
|
||||
|
||||
<select id="getAll" resultClass="metaHistoryDO">
|
||||
select * from canal_table_meta_history
|
||||
</select>
|
||||
|
||||
</sqlMap>
|
||||
66
parse/src/test/resources/tsdb/sql-map/sqlmap_snapshot.xml
Normal file
66
parse/src/test/resources/tsdb/sql-map/sqlmap_snapshot.xml
Normal file
@@ -0,0 +1,66 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
|
||||
<sqlMap namespace="table_meta_snapshot">
|
||||
|
||||
|
||||
<typeAlias alias="metaSnapshotDO" type="com.alibaba.otter.canal.parse.inbound.mysql.tsdb.model.MetaSnapshotDO"/>
|
||||
|
||||
|
||||
<typeAlias alias="tableMetaSnapshotDO"
|
||||
type="com.alibaba.middleware.jingwei.biz.dataobject.CanalTableMetaSnapshotDO"/>
|
||||
<sql id="allColumns">
|
||||
<![CDATA[
|
||||
|
||||
gmt_create,gmt_modified,binlog_file,binlog_offest,binlog_master_id,binlog_timestamp,data,extra
|
||||
|
||||
]]>
|
||||
</sql>
|
||||
<sql id="allVOColumns">
|
||||
<![CDATA[
|
||||
|
||||
a.id as id,a.gmt_create as gmtCreate,a.gmt_modified as gmtModified,
|
||||
a.binlog_file as binlogFile,a.binlog_offest as binlogOffest,a.binlog_master_id as binlogMaster_id,a.binlog_timestamp as binlogTimestamp,a.data as data,a.extra as extra
|
||||
|
||||
]]>
|
||||
</sql>
|
||||
|
||||
<select id="findByTimestamp" parameterClass="java.util.Map" resultClass="metaSnapshotDO">
|
||||
select
|
||||
<include refid="allVOColumns"/>
|
||||
from `canal_table_meta_snapshot$env$` a
|
||||
<![CDATA[
|
||||
where binlog_timestamp < #timestamp#
|
||||
order by binlog_timestamp desc,id desc
|
||||
limit 1
|
||||
]]>
|
||||
</select>
|
||||
|
||||
<insert id="insert" parameterClass="metaSnapshotDO">
|
||||
insert into `canal_table_meta_snapshot` (<include refid="allColumns"/>)
|
||||
values(now(),now(),#binlogFile#,#binlogOffest#,#binlogMasterId#,#binlogTimestamp#,#data#,#extra#);
|
||||
<selectKey resultClass="java.lang.Long" keyProperty="id">
|
||||
SELECT last_insert_id()
|
||||
</selectKey>
|
||||
</insert>
|
||||
|
||||
<update id="update" parameterClass="metaSnapshotDO">
|
||||
update `canal_table_meta_snapshot` set gmt_modified=now(),
|
||||
binlog_file=#binlogFile#,binlog_offest=#binlogOffest#,binlog_master_id=#binlogMasterId#,binlog_timestamp=#binlogTimestamp#,data=#data#,extra=#extra#
|
||||
where binlog_timestamp=0
|
||||
</update>
|
||||
|
||||
|
||||
<delete id="deleteByGmtModified" parameterClass="java.util.Map">
|
||||
<![CDATA[
|
||||
|
||||
delete from `canal_table_meta_snapshot`
|
||||
where gmt_modified < date_sub(now(),interval #interval# second)
|
||||
|
||||
]]>
|
||||
</delete>
|
||||
|
||||
<select id="getAll" resultClass="metaSnapshotDO">
|
||||
select * from canal_table_meta_snapshot
|
||||
</select>
|
||||
|
||||
</sqlMap>
|
||||
9
parse/src/test/resources/tsdb/sqlmap-config.xml
Normal file
9
parse/src/test/resources/tsdb/sqlmap-config.xml
Normal file
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
|
||||
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
|
||||
<sqlMapConfig>
|
||||
<settings useStatementNamespaces="true"/>
|
||||
|
||||
<sqlMap resource="sql-map/sqlmap_history.xml"/>
|
||||
<sqlMap resource="sql-map/sqlmap_snapshot.xml"/>
|
||||
</sqlMapConfig>
|
||||
Reference in New Issue
Block a user