MySQL80通过信号关闭的日志和M

北京好皮肤病专科医院 https://baike.baidu.com/item/%E5%8C%97%E4%BA%AC%E4%B8%AD%E7%A7%91%E7%99%BD%E7%99%9C%E9%A3%8E%E5%8C%BB%E9%99%A2/9728824?fr=aladdin

近来也没有进修甚么,这边就分享2个我感触再有点用的小学识吧,仅供参考。

一、MySQL8.0收到记号合上数据的特别日记

往常咱们在5.7合上数据的光阴,唯有是平常合上数据库,输出险些都是相同的,是以很难判定究竟是killmysqldpid依然shutdown数据库指令。这一点到了8.0有了转变,固然这个转变很小,不过在管教题目的光阴我却用到了,而且在history中切实找到了kill号令。

咱们先来看8.0记号管教函数在收到了,也便是SIGTERM(15)和SIGQUIT(3)记号后平常合上数据库,会有甚么特别的输出以下:

image.png

也便是在举办平常合上过程的光阴,在signal_hand函数,也便是记号管教函数内里有特其余输出,固然这自身很简洁,不过咱们运维管教题目的光阴就也许经过这个输出断定,究竟是发了shutdown号令依然kill发的记号合上的数据,默许的kill号令便是SIGTERM(15)号记号,日记以下:

假设是shutdown则为以下:

固然假设是kill-9啥也看不到了,记号不能被拿获,更不成能有日记,典范的数据库OOM了,这个光阴也许观察OS日记。横竖这点矫正不能说是大型真香现场,不过依然较量实用。

二、MGRdonor节点取舍题目

这个也是诤友问到的一个题目,延续懂得大如果随机取舍的,同时也征询了一下叶训练。不过依然要验一下代码,本质上代码便是:

Recovery_state_transfer::establish_donor_connection-build_donor_list-initialize_donor_connection

这边波及到几个参数:

group_replication_advertise_recovery_endpoints:假设这个参数配置了,donor节点的取舍就不完尽是随机的,而是和这个参数的配置相关。不过呢,寻常都没配置,由于默许没有配置,也不会去改它。group_replication_recovery_reconnect_interval:假设存在多个donor节点,会屡屡随机取舍一个出来举办相连,假设相连失利还会相连下一个donor节点,假设所有都失利,再来轮回一次,直到抵达这个参数配置的次数。group_replication_allow_local_lower_version_join:是不是准许目下节点取舍版本更高的节点做为donor节点,也便是介入节点版本低于donor节点,默感触OFF

最后要随机取舍donor节点,最严重的算法便是以下:

if(suitable_donors.size()1){//假设候选donors大于2随机洗牌donor节点的候选std::random_devicerng;std::mturng(rng());std::shuffle(suitable_donors.begin(),suitable_donors.end(),urng);}

显然看到随机算法,经过随机算法来打乱容器suitable_donors中的元素,个中每个元素便是一个候选的donor节点,固然donor节点有一些束缚:

一定是online节点。group_replication_allow_local_lower_version_join默感触off,是以不准许高版本的donor节点,也便是介入节点版本低于donor节点。预览时标签不成点收录于合集#个


转载请注明:http://www.aierlanlan.com/rzdk/1121.html