Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lijianghuflute
canal
提交
a7be9c75
canal
项目概览
lijianghuflute
/
canal
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
canal
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a7be9c75
编写于
11月 20, 2018
作者:
A
agapple
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixed mysql rotate checksum
上级
b6f1e0d1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
14 addition
and
53 deletion
+14
-53
parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlConnection.java
...baba/otter/canal/parse/inbound/mysql/MysqlConnection.java
+5
-26
parse/src/test/java/com/alibaba/otter/canal/parse/DirectLogFetcherTest.java
...a/com/alibaba/otter/canal/parse/DirectLogFetcherTest.java
+7
-25
parse/src/test/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlDumpTest.java
...libaba/otter/canal/parse/inbound/mysql/MysqlDumpTest.java
+2
-2
未找到文件。
parse/src/main/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlConnection.java
浏览文件 @
a7be9c75
...
...
@@ -503,40 +503,19 @@ public class MysqlConnection implements ErosaConnection {
* </pre>
*/
private
void
loadBinlogChecksum
()
{
if
(
checkMariaDB
())
{
ResultSetPacket
rs
=
null
;
try
{
rs
=
query
(
"select @@global.binlog_checksum"
);
}
catch
(
IOException
e
)
{
throw
new
CanalParseException
(
e
);
}
List
<
String
>
columnValues
=
rs
.
getFieldValues
();
if
(
columnValues
!=
null
&&
columnValues
.
size
()
>=
1
&&
columnValues
.
get
(
0
).
toUpperCase
().
equals
(
"CRC32"
))
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_CRC32
;
}
else
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_OFF
;
}
}
}
/**
* 获取是否为mariadb
*/
private
boolean
checkMariaDB
()
{
ResultSetPacket
rs
=
null
;
try
{
rs
=
query
(
"
SELECT @@version
"
);
rs
=
query
(
"
select @@global.binlog_checksum
"
);
}
catch
(
IOException
e
)
{
throw
new
CanalParseException
(
e
);
}
List
<
String
>
columnValues
=
rs
.
getFieldValues
();
if
(
columnValues
!=
null
&&
columnValues
.
size
()
>=
1
)
{
return
StringUtils
.
containsIgnoreCase
(
columnValues
.
get
(
0
),
"MariaDB"
);
if
(
columnValues
!=
null
&&
columnValues
.
size
()
>=
1
&&
columnValues
.
get
(
0
).
toUpperCase
().
equals
(
"CRC32"
))
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_CRC32
;
}
else
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_OFF
;
}
return
false
;
}
private
void
accumulateReceivedBytes
(
long
x
)
{
...
...
parse/src/test/java/com/alibaba/otter/canal/parse/DirectLogFetcherTest.java
浏览文件 @
a7be9c75
...
...
@@ -44,10 +44,9 @@ import com.taobao.tddl.dbsync.binlog.event.mariadb.AnnotateRowsEvent;
public
class
DirectLogFetcherTest
{
protected
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
protected
final
Logger
logger
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
protected
String
binlogFileName
=
"mysql-bin.000001"
;
protected
Charset
charset
=
Charset
.
forName
(
"utf-8"
);
private
boolean
isMariaDB
;
private
int
binlogChecksum
;
@Test
...
...
@@ -193,7 +192,7 @@ public class DirectLogFetcherTest {
// 如果不设置会出现错误: Slave can not handle replication events with the
// checksum that master is configured to log
// 但也不能乱设置,需要和mysql server的checksum配置一致,不然RotateLogEvent会出现乱码
update
(
"set @master_binlog_checksum=
'@@global.binlog_checksum'
"
,
connector
);
update
(
"set @master_binlog_checksum=
@@global.binlog_checksum
"
,
connector
);
}
catch
(
Exception
e
)
{
logger
.
warn
(
"update master_binlog_checksum failed"
,
e
);
}
...
...
@@ -217,35 +216,18 @@ public class DirectLogFetcherTest {
}
private
void
loadBinlogChecksum
(
MysqlConnector
connector
)
{
checkMariaDB
(
connector
);
if
(
isMariaDB
)
{
ResultSetPacket
rs
=
null
;
try
{
rs
=
query
(
"select @@global.binlog_checksum"
,
connector
);
}
catch
(
IOException
e
)
{
throw
new
CanalParseException
(
e
);
}
List
<
String
>
columnValues
=
rs
.
getFieldValues
();
if
(
columnValues
!=
null
&&
columnValues
.
size
()
>=
1
&&
columnValues
.
get
(
0
).
toUpperCase
().
equals
(
"CRC32"
))
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_CRC32
;
}
else
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_OFF
;
}
}
}
private
void
checkMariaDB
(
MysqlConnector
connector
)
{
ResultSetPacket
rs
=
null
;
try
{
rs
=
query
(
"
SELECT @@version
"
,
connector
);
rs
=
query
(
"
select @@global.binlog_checksum
"
,
connector
);
}
catch
(
IOException
e
)
{
throw
new
CanalParseException
(
e
);
}
List
<
String
>
columnValues
=
rs
.
getFieldValues
();
if
(
columnValues
!=
null
&&
columnValues
.
size
()
>=
1
)
{
isMariaDB
=
StringUtils
.
containsIgnoreCase
(
columnValues
.
get
(
0
),
"MariaDB"
);
if
(
columnValues
!=
null
&&
columnValues
.
size
()
>=
1
&&
columnValues
.
get
(
0
).
toUpperCase
().
equals
(
"CRC32"
))
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_CRC32
;
}
else
{
binlogChecksum
=
LogEvent
.
BINLOG_CHECKSUM_ALG_OFF
;
}
}
...
...
parse/src/test/java/com/alibaba/otter/canal/parse/inbound/mysql/MysqlDumpTest.java
浏览文件 @
a7be9c75
...
...
@@ -29,12 +29,12 @@ public class MysqlDumpTest {
@Test
public
void
testSimple
()
{
final
MysqlEventParser
controller
=
new
MysqlEventParser
();
final
EntryPosition
startPosition
=
new
EntryPosition
(
"mysql-bin.0000
12"
,
34051L
,
100
L
);
final
EntryPosition
startPosition
=
new
EntryPosition
(
"mysql-bin.0000
01"
,
4
L
);
// startPosition.setGtid("f1ceb61a-a5d5-11e7-bdee-107c3dbcf8a7:1-17");
controller
.
setConnectionCharset
(
Charset
.
forName
(
"UTF-8"
));
controller
.
setSlaveId
(
3344L
);
controller
.
setDetectingEnable
(
false
);
controller
.
setMasterInfo
(
new
AuthenticationInfo
(
new
InetSocketAddress
(
"127.0.0.1"
,
3306
),
"
canal"
,
"canal
"
));
controller
.
setMasterInfo
(
new
AuthenticationInfo
(
new
InetSocketAddress
(
"127.0.0.1"
,
3306
),
"
root"
,
"hello
"
));
controller
.
setMasterPosition
(
startPosition
);
controller
.
setEnableTsdb
(
true
);
controller
.
setDestination
(
"example"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录