MySQL Status Ndb_conflict_fn_max_del_win 数据库状态作用意思及如何正确
本站中文解释
Ndb_conflict_fn_max_del_win是MySQL status变量,用于控制灾难恢复 (DR) 过程中,ndb_conflict_fn优先处理的最大DELETE操作数,从ndb_conflict_fn获取处理消息后,MySQL Server根据这个值按照先处理INSERT操作,再处理UPDATE/DELETE操作的逻辑处理这些请求。
Ndb_conflict_fn_max_del_win变量的默认值是1000,在MySQL Server 5.6及以前的情况下,可以使用以下命令来设置这个变量:
SET GLOBAL NDB_CONFLICT_FN_MAX_DEL_WIN = 5000;
需要注意的是,该设置是临时生效,重启服务会失去该设置,可以在my.cnf中增加如下部分来使设置永久生效:
[mysqld]
ndb_conflict_fn_max_del_win = 5000
另外,从MySQL Server 5.7开始,该变量的设置可以使用 SET GLOBAL PERSIST 命令,即:
SET GLOBAL PERSIST Ndb_conflict_fn_max_del_win = 5000;
比较推荐的是在my.cnf配置文件中设置,而不是通过上述SET命令来设置,因为在MySQL Server 重启后,ndb_conflict_fn_max_del_win变量可能会重置为默认值(1000),重置后可能会造成DR过程中DELETE操作比UPDATE/INSERT操作优先级高,问题就发生在DR重启时,DELETE操作可能比UPDATE/INSERT操作还早被处理,这样就会导致前面已经执行的UPDATE/INSERT操作变成无效操作或脏数据。