情况描述:一段时间ds在登录以后再UI界面操作的时候老是闪退到登录界面,导致UI界面无法使用。
本人集群情况:本人ds集群是三节点的双主三工作节点,数据库用mysql,mysql安装在docker容器中,mysql做也是双主互相监听状态,其中mysql进行可haporxy的代理
问题描述:闪退情况是由于mysql的双主监听状态出现错误进入mysql中查看监听状态会出现这样一个问题
解决方案如下
查询容器名
docker ps -a
进入容器
docker exec -it 容器名 bash
进入mysql
mysql -uroot -p123456
查看监听状态
show slave status;
显示上图所示报错情况 last Ermo 为1062
依据如下情况进行解决
show databases;
use dolphinscheduler;
show tables;
show variables like 'slave_exec_mode';
上一个命令的作用是显示 MySQL 主从复制中从库的执行模式(execution mode)。主从复制是 MySQL 中常用的一种高可用架构方式,其中一个数据库服务器(主库)将所有写操作同步到其他数据库服务器(从库)上。
在主从复制中,从库可以有两种执行模式:STRICT
和 IDEAL
。如果执行模式为 STRICT
,则从库会等待主库确认每个事务提交之后才会执行该事务;如果执行模式为 IDEAL
,则从库会立即执行收到的事务,而不需要等待主库确认。
当使用 show variables like 'slave_exec_mode';
命令时,MySQL 会返回从库当前的执行模式,可以用于查看和调整从库的复制行为。
停止监听
stop slave;
MySQL slave_exec_mode 参数用于控制主从复制数据冲突时的处理策略,可选值有STRICT和IDEMPOTENT,分别代表严格模式和幂等模式,默认值为STRICT,该参数可动态调整。
默认STRICT模式下,从库复制过程中,发现数据冲突,会立即报错,并中断复制线程。设置为IDEMPOTENT,遇到主键或唯一键冲突以及主键不存在时,并不会报错,会直接覆盖数据或者忽略数据不存在,主从复制仍然正常进行。设置这个参数将会立即生效,并不需要重启复制。
set global slave exec_mode=idempotent;
开启监听
show slave status;
start slave;
退出mysql和docker容器
exit
进入代理服务器,修改配置参数
cd /etc/haproxy.cfg
添加
check inter 50000ms
:表示每隔 50000 毫秒(50 秒)进行一次检查。rise 2
:表示如果连续 2 次检查都成功,则将服务器标记为正常(up)。fall 3
:表示如果连续 3 次检查都失败,则将服务器标记为异常(down)。
server mysql ip:3306 check inter 50000ms rise 2 fall 3
server mysql ip:3306 check inter 50000ms rise 2 fall 3
重启代理
systemctl restart haproxy