一、ElasticSearch的备份与还原
============================================================================================================================================================
1. 问题
Elasticsearch 副本提供了高可靠性;它们让你可以容忍零星的节点丢失而不会中断服务。但是,副本并不提供对灾难性故障的保护。对这种情况,你需要的是对集群真正的备份——在某些东西确实出问题的时候有一个完整的拷贝。
2.解决方案
通过快照的方式,将Elasticsearch集群中的数据,备份到HDFS上,这样数据即存在于Elasticsearch(简称ES)集群当中,又存在于HDFS上。当ES集群出现不可恢复性的故障时,可以将数据从HDFS上快速恢复。
也可以选择NFS方式进行备份数据:https://www.cnblogs.com/keithtt/p/7189493.html
3、需要进行的测试
(1)如何进行快照备份
(2)如何进行快照还原
(3)在历史日志时间太久,还不想彻底删除掉,想要归档,可以使用快照方式吗。如果以后还想用,怎么还原回来?
https://www.jianshu.com/p/d2a189f704a2
可以采用rename_pattern和rename_replacement用于重命名index,因为无法将index还原到open的index。
============================================================================================================================================================
二、整体的技术架构图
三、各业务系统数据汇集的办法
国内同类型软件的实现方法:
http://www.ruisoft.com/solution-smartcity-01.html
http://www.chinawiserv.com/home/news/detail/id/526
各业务系统需要提供全量和增量数据上报,增量数据上报肯定会要求上报最近新增、修改、删除的数据,最简单的办法是使用触发器,下面给出测试过的各主流数据库触发器方案:
https://www.cnblogs.com/littlehb/p/5614780.html
特殊需要说明的是:对于物理性删除的delete情况,我们需要规划一个deleted表来记录删除的主键ID。
(1) SqlServer
如果业务库是SqlServer的话,可以参考这篇文章:
http://www.cnblogs.com/iampkm/p/4082916.html (时间戳方案)
https://blog.csdn.net/yenange/article/details/49636215 (CDC方案)
(2) Mongodb
如果业务库是Mongodb的话,可以参考这篇文章:
https://blog.csdn.net/u013066244/article/details/80004153
(3)Mysql
如果业务库是Mysql的话,还需要特殊注意下这个:
如果Mysql数据库版本低于5.6,可以考虑使用触发器方式:https://blog.csdn.net/heweimingming/article/details/51315895
(4) Oracle方案
https://blog.csdn.net/strawberry1019/article/details/79422071
伪列的方案不是很优雅,不建议使用,因为alter table无效。