ES同步失败维护步骤:
-
登录到ES服务器:xx.xx.xx.xx。
-
停止 Canal 和 Canal-Adapter 服务:
cd /root/canal/bin ./stop.sh cd /root/canal-adapter/bin ./stop.sh -
确定一下是哪个表修改了主键的值,例如 tbl_sparking,使用 Logstash 手动同步数据:
shellcd /root/canal-adapter/elk sudo /usr/share/logstash/bin/logstash -f 2-tbl_video_device_info.conf #如果遇上内存不足的可以执行 export LS_JAVA_OPTS="-Xms5g -Xmx5g" #如果想要重新同步,不建议 #查看所有索引 GET /_cat/indices?v #单独删除es索引数据 DELETE /tbl_video_device_info -
同步完成后,启动 Canal 服务,查看日志以确保启动成功:
cd /root/canal/bin ./startup.sh tail -f /root/canal/logs/example/example.log如果出现错误,需要先停止 Canal,然后删除
/root/canal/conf/example下的meta.dat文件,再启动 Canal。 -
Canal 服务正常后,再启动 Canal-Adapter 服务,并查看日志:
cd /root/canal-adapter/bin ./startup.sh tail -f /root/canal-adapter/logs/adapter/adapter.log -
此时数据仍不完整,需要使用 Logstash 手动同步全部数据:
cd /root/canal-adapter/elk sudo /usr/share/logstash/bin/logstash -f 1-tbl_ps_device_info.conf sudo /usr/share/logstash/bin/logstash -f 2-tbl_video_device_info.conf sudo /usr/share/logstash/bin/logstash -f 3-tbl_ps_order_in.conf sudo /usr/share/logstash/bin/logstash -f 4-tbl_ps_order_out.conf sudo /usr/share/logstash/bin/logstash -f 5-tbl_user_info.conf sudo /usr/share/logstash/bin/logstash -f 6-tbl_order_in_pay_log.conf sudo /usr/share/logstash/bin/logstash -f 7-tbl_order_out_pay_log.conf sudo /usr/share/logstash/bin/logstash -f 8-tbl_sparking.conf sudo /usr/share/logstash/bin/logstash -f 9-tbl_account_payment_log.conf sudo /usr/share/logstash/bin/logstash -f 10-tbl_parking_manager.conf sudo /usr/share/logstash/bin/logstash -f 11-tbl_bat_txn.conf sudo /usr/share/logstash/bin/logstash -f 12-tbl_bat_pay_txn.conf sudo /usr/share/logstash/bin/logstash -f 13-tbl_bse_info_mchnt.conf sudo /usr/share/logstash/bin/logstash -f 14-tbl_online_carinfo.conf sudo /usr/share/logstash/bin/logstash -f 15-tbl_trans_order.conf
确保 Canal 和 Canal-Adapter 服务正常运行,并手动同步数据以确保数据完整性。
最后启动监控:
cd /root/canal-adapter/logs/adapter/
nohup ./monitor.sh &
分页增加:
FROM tbl_ps_order_out AS a"
lowercase_column_names => false
jdbc_paging_enabled => true
jdbc_page_size => 10000 # 增加分页大小,以减少总页数
last_run_metadata_path => "/root/logstash_last_run_metadata"
clean_run => false
}
如果更改了ID
也可以通过直接logstash全量同步,这样新的数据就会增加上去,但是原来的还在,需要通过es直接删除之前id的数据,前提是需要知道原来的id是多少。如果不删除,那么就造成了脏数据。
yaml
GET tbl_ps_order_out/_search
{
"query": {
"match_all": {}
}
}
DELETE /tbl_trans_order
DELETE /tbl_ps_order_out/_doc/555555555555555555555555555555
但是始终需要停canal-adapter 停canal,起canal,起canal-adapter