不中断业务,腾讯10P+金融数据跨机房迁移实战
Step 4:RegionServer参与parepare阶段的时候,首先会加一把全局锁,此时不允许这个表有数据写入、更新和删除,,将memstore中的数据flush到文件中,并为涉及到的所有HFile文件创建引用指针,这些指针元数据便是snapshot,并将这些元数据以及表相关信息写入到临时目录中; Step 5:在第4步完成后,便会在/acquired_sname新建RegionServer对应的子节点,表示该RegionServer完成了prepare阶段; Step 6:当master发现所有的涉及到的RegionServer都完成了prepare阶段的工作后,就会发起commit阶段的操作; Step 7:在commit阶段,master会在zookeeper上创建/reached-snapshotname(简写为/reached-sname),该表涉及的RegionSever监听到事件后,就会启动commit阶段的工作,将临时目录中的snapshot的数据写入到正式的目录,操作完成后便会在/reached-sname新建该RegionServer对应的子节点; Step 8:当master发现所有涉及到的RegionServer都完成了commit阶段的工作后,master还需要做一次汇总操作,汇总操作完成后,整个snapshot的创建就完成了。 Step 9:如果在一定时间内前面阶段有的regionserver没有完成对应的操作,则会进入abord阶段,在abord阶段,master会在zookeeper上创建/abord_snapshotname(简称/abord_sname),涉及的RegionServer会进行创建快照流程的回滚操作,即将临时文件夹的快照内容删除。 3、SanpShot实战 snapshot的使用相对还是比较简单,下面来实战一下: 创建snapshot
备注:在hbase shell中执行 查看snapshot
删除snapshot
迁移snapshot
这种方式用于将快照表迁移到另外一个集群的时候使用,使用MR进行数据的拷贝,速度很快,使用的时候记得要设置好bandwidth参数,以免由于网络打满导致的线上业务故障。 如果没有混布MR,则还需要搭建一个MR集群,并且命令行中需要再加入MR集群的相关参数。 恢复snapshot
备注:这种方式需要对表进行过disable才能进行restore_snapshot的操作,如果这个还在写入数据,则需要采用bulkload的方式导入。 将snapshot使用bulkload的方式导入
备注:这种方式需要将所有的文件进行遍历并全部通过bulkload导入,上面的只是一个文件的导入,这种方式不需要disable表。 Q & A Q:前面讲的除了业务灰度切换的过程,从开始迁移到数据检验的自动化部分有更多分享吗? A:除了业务灰度切换的过程,从开始迁移到数据检验其实是代码实现的一个过程,比如说我们第一步先创建快照,这样就很容易做代码实现,成功后会启用exportsnapshot的方式把快照从一个集群迁到另一个集群,把snapshot的名字传进去,直接通过传参数的方式在程序里实现。bulkload的导入也是一样的,在确定导入成功后,把原来的快照删除就可以做数据的校验、比对了。 讲师介绍 张秀云 腾讯高级DBA 网名飞鸿无痕,2007年进入职场后一路升级打怪,从网络管理员、Linux运维,到小公司DBA,再到腾讯金融DBA。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |