Doris是一个十分优良的MPP数据仓库,
在前两天线上呈现一个问题,我三个FE,呈现了一个FE挂掉,而后我重启启动不起来,
我备份这个FE元数据后,将这个节点元数据革除掉,应用
--先删除
ALTER SYSTEM DROP FOLLOWER "FE:9010"
--在增加
ALTER SYSTEM ADD FOLLOWER "FE:9010"
删除改节点,而后在应用--helper形式把该节点作为一个新的FE退出到集群中,然而这时候启动会报错,同时会导致Master FE挂掉,具体异样信息如下
repImpl=com.sleepycat.je.rep.impl.RepImpl@68fa4d19 props={REFRESH_VLSN=17921230, PORT=9010, HOSTNAME=172.22.197.238, P_NODETYPE1=ELECTABLE, NODE_NAME=172.22.197.238_9010_1611290318143, P_NODETYPE0=SECONDARY, P_NODENAME1=172.22.197.240_9010_1608972313975, P_PORT1=9010, P_NODENAME0=172.22.197.238_9010_1611290318143, P_PORT0=9010, P_HOSTNAME1=172.22.197.240, GROUP_NAME=PALO_JOURNAL_GROUP, P_HOSTNAME0=172.22.197.238, ENV_DIR=/hdd_data01/doris-meta/bdb, P_NUMPROVIDERS=2}at com.sleepycat.je.rep.InsufficientLogException.wrapSelf(InsufficientLogException.java:315) ~[je-7.3.7.jar:7.3.7]at com.sleepycat.je.dbi.EnvironmentImpl.checkIfInvalid(EnvironmentImpl.java:1766) ~[je-7.3.7.jar:7.3.7]
起初在社区,缪小姐姐及陈明雨大神的帮助下,进行了各种尝试定位,认为是在启动的时候元数据同步异样,这个异样可能是因为我过后的load数据工作在同步批改元数据,造成的,起初在凌晨,生产开货实现当前,停掉所有load工作,而后执行删除问题FE节点元数据,而后在从新应用--helper启动,仍然报错,最初没方法,尝试将master节点的fe元数据拷贝到问题节点FE,将问题节点FE的元数据目录删除,而后重建,将赋值过去的元数据,拷贝到元数据目录
具体步骤:
进行所有load工作
删除元数据目录,并重建目录
从master节点拷贝元数据到问题节点fe(将 fe.conf 中的 metadata_failure_recovery=true 配置项删除,或者设置为 false,这个十分重要),留神要批改image/VERSION 里的name,拷贝过去的是master的名称,改成该节点的名称
执行 ALTER SYSTEM DROP FOLLOWER 删除改节点
在问题节点应用--helper启动服务
在mysql下执行 ALTER SYSTEM ADD FOLLOWER 将FE节点从新退出进去
启动失常
留神:
1.问题节点:将 fe.conf 中的 metadata_failure_recovery=true 配置项删除,或者设置为 false
2.Master节点启动应用 metadata_failure_recovery=true启动,进行复原,启动失常当前,将这个配置删除或者设置为false,停掉Master fe,而后在重启,启动实现当前,要确认Master查问,导入是失常的
上述步骤执行实现当前,而后在问题节点在应用--helper形式启动fe,这个时候失常启动,问题解决
重新启动所有Load工作
不过这个还是一个问题,实践上,将问题FE节点元数据删除当前,把它当做一个新的FE节点,应用--helper退出进去,是应该没问题的,启动当前会主动从master FE同步元数据,然而呈现了同步失败的状况(这个时候也没有任何load工作,对元数据进行批改的状况)