GBase 8a MPP具有灵活可靠的“数据文件损坏自动恢复机制”,当MPP集群上某节点的数据文件被误删除,或因磁盘硬件故障导致的原有数据文件丢失时,GBase 8a在发现异常后,会自动根据备份数据来恢复被损坏的数据文件,此过程完全在后台自动进行,无需人工干预。
GBase 8a MPP集群为保障库内数据安全,采用主备分片技术,将数据备份后与主分片分开保存,当主分片的数据无法使用时,通过备份分片的数据来继续开展业务,从而保障集群的可靠性和数据完整性。在GBase 8a主备分片技术的基础上,衍生出集群的“高可用机制”和“数据文件损坏自动恢复机制”。
当主分片数据节点无法正常对外提供服务时(节点状态为CLOSE),集群会自动将任务切换至备份分片所在的数据节点上进行,利用备份分片中的数据继续开展业务计算,这便是集群的高可用机制。而当主分片数据节点可以正常对外提供服务(节点状态为OPEN),但主分片数据文件意外丢失时,就会触发集群的“数据文件损坏自动修复机制”,通过恢复进程将丢失的数据自动从备份分片拷贝至主分片上,从而使主分片可继续对外提供服务。
如下将实机演示此功能机制,本文测试环境为3台虚拟机,集群版本为V9.5.3版本,测试集群采取兼容模式部署,每台虚拟机上有1个协调节点,1个管理节点和1个数据节点,集群主备分片比例为1比1(可根据实际需求灵活设置)。
测试开始:
1. 首先确认集群3个节点状态正常
2. 进入库内创建测试用表tt并导入数据,导入成功后,该表数据量约为157万条。
3. 查看集群分片对应关系,左边一列为主分片所在节点IP,中间一列为分片ID,右边一列为备份分片所在节点IP。由此可见,分片ID为2的数据,主分片在192.168.184.129节点上,备份分片在192.168.184.130节点上。
4. 随后我们进入129节点上测试表tt的数据文件存放位置,目录名tt_n2中的n2对应的是分片ID,由此可知该目录里存放的是tt表在129节点上的主分片数据。之后我们在129节点上执行rm -rf tt_n2/命令来彻底删除此目录,以此模拟该数据文件损坏的情景。
5. 随后在库内通过select * from tt;命令查询tt表,在查询命中tt表在129节点上的数据,而找不到数据文件后,会返回报错信息。
6. 此时集群记录event事件,显示在129节点上出现数据不一致情况,后台自动调用数据恢复进程。
7. 随后丢失的数据被恢复,集群数据一致性恢复正常。
8. 再次进入库中执行select * from tt;命令进行查询,tt表中的157万余条数据被全部查询出来。
9. 随后查看该表数据分布情况,129节点上n2分片的数据恢复成功,3个节点数据分布均匀。
10. 检查集群日志,可以看到集群在发现tt_n2数据文件丢失的error后,立即调用gc_sync_client进程对损坏的数据文件进行恢复,于17:16分恢复成功。




