Canal与Otter相关问题梳理

1、存储
CanalEventStore接口,主要包含put/get/ack/rollback的相关接口,put/get操作会组成一个生产者/消费者模式,每个store都会有存储大小设计,存储满了,put操作会阻塞等待get获取数据,所以不会无限占用存储,比如内存大小。
A、目前EventStore主要实现了memory模式,支持按照内存大小和内存记录数进行存储大小限制。
B、后续可开发基于本地文件的存储模式;
C、基于文件存储和内在存储,开发mixed模式,做成两级队列,内存buffer有空位时,将文件的数据诗篇到内在buffer中。
重要:实现基于mixed模式后,cananl才可以说是完成真正的消费/订阅的模型(取1份binlog数据,提供多个客户端消费,消费有快有慢,各自保留消费位点)
2、异常:
a、pid:2 nid:3 exception:setl:load miss data with keys:[MemoryPipeKey[identity=Identity [channelId=2,pipelineId=2,processId=14281213],time=1467701523657,dataType=DB_BATCH]]
b、pid:3 nid:4 exception:mainstem:pid:3 canal elapsed 174050 seconds no data
解答:从异常来看是因为GC导致临时内存对象数据丢弃,降低同步任务并行量试试
3、跨机房同步,导致延迟增大:
A、使用主库所在网段Node进行同步;
B、与传输带宽也有关系;
4、otter 同步报:table is full
解决方案:
调整Canal配置中的接收BufferSize与发送BufferSize值调整小点;
5、otter错误信息:Lock wait timeout exceeded; try restarting transaction
执行insert 或Update操作时会出现超时
6、com.alibaba.otter.canal.parse.exception.CanalParseException: parse row data failed.行读取失败
canal.properties配置canal.instance.filter.table.error = false 改为true可以忽略这种表结构不一致
7、发送邮件设置(发件人)
* manager email user config
otter.manager.monitor.email.host = smtp.163.com
otter.manager.monitor.email.username =admin
otter.manager.monitor.email.password =XXX
otter.manager.monitor.email.stmp.port = 465
~
8、内存溢出
修改otter/node/startup.sh,调整JAVA_OPTS
修改前:
if [ -n “$str” ]; then
JAVA_OPTS="-server -Xms2048m -Xmx3072m -Xmn1024m -XX:SurvivorRatio=2 -XX:PermSize=96m -XX:MaxPermSize=256m -Xss256k -XX:-UseAdaptiveSizePolicy -XX:MaxTenuringThreshold=15 -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError"
else
JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:MaxPermSize=128m "
fi

修改后:
 
if [ -n "$str" ]; then
        JAVA_OPTS="-server -Xms8g -Xmx8g -Xmn3g -XX:SurvivorRatio=2 -XX:PermSize=512m -XX:MaxPermSize=512m -Xss256k -XX:-UseAdaptiveSizePolicy  -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError"
else
        JAVA_OPTS="-server -Xms8g -Xmx8g -Xmn3g -XX:NewSize=512m -XX:MaxNewSize=512m -XX:MaxPermSize=512m "
fi     

猜你喜欢

转载自blog.csdn.net/Angelhmm/article/details/84589234