开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):Canal 数据同步(最终测试)】学习笔记,与课程紧密连接,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11519
Canal 数据同步(最终测试)
目录:
一、启动
二、具体操作
三、总结
一、启动
要想测试,就先启动,使用脚本进程,再看进程。将本地项目启动,
数据同步现主要做的监控,就是监控远程部分变化,有客户端的工具,先用端口号启动。端口号为10000。
用 debug 方式启动。用 debug 之后,就能看到的结果,那重新换种方式,用debug 款就这个它启动,然后启动之后再加上几个断点,通过 debug 来看执行过程,理解流程。
二、具体操作
//当队列里面堆积的 sql 大于一定数值的时候就 模拟执行
if (SQL QUEUE. size() >= 1)
executeQueueSql;
模拟执行队列里面的 sql 语句
public void executeQueueSql()
int size = SQL_QUEUE.size();
for (int i =0; i
String sql =SQL_QUEUE.pol1();
System.out.println("[sql]——>”+ sql);
this.execute(sql.toString());
再其中加了断点,进行测试。
在本地库没有东西,连接数据库,写个语句,在这个远程库里边加一条数据,如果效果正确,在本地库中也会同步添加,这个过程就叫数据同步。
1.insert语句如下:
mysql>insert into members values(1, 'lucy' ,20);
执行后如下:
if (batchId ==-1 size ==0) (batchId:2 size:3
Thread.sleep( millis:1000); I
)else(
dataHandle(message.getEntries());message:Message[id=2,entries=[header
此时 size 大于0,就可以继续操作。
点击绿色按钮,一路执行,到下一个断点,判断做哪个操作,当前做的是添加:
else if (eventType == EventType. INSER) {KeventType: "INSERT"
2.修改操作:
mysql= update members set username=“mary" where id=1;
结果如下:
Query oK, row affected(0.11 sec)
Fows matched: 1 Changed: 1 warnings : 0
3.删除操作如下:
mysql≥ delete frommembers where id-l:
结果如下:
Query ok, l row affected ie.o1l sec)
三、总结
当远程库时,远程库添加删除,本地库也会随之发生变化。过程中需要安装,在本地写出代码。
有以下细节:
第一个细节就是远程库的名字和数据表的名字,跟本地库名字表名字必须要一样,根据名字做匹配,在这里都叫做 guli members。
第二个细节是就是改 kindle 中的配置文件的时候,这个数据库的用户名要特别注意,这些用户名需要有远程连接的权限,默认 root 是没这个权限,默认只能是本地连接,需要做修改,或者说按着过程重新创建,或者说创建用过的用户。