当前位置:Gxlcms > 数据库问题 > MySQL-状态Waiting on empty queue引申

MySQL-状态Waiting on empty queue引申

时间:2021-07-01 10:21:17 帮助过:510人阅读

  • (root:localhost:)test> show processlist\G  
  • 4. row

    1. Id: 46147   
    2. User: event_scheduler   
    3. Host: localhost   
    4. db: NULL   
    5. Command: Daemon   
    6. Time: 1   
    7. State: Waiting on empty queue   
    8. Info: NULL 

     

    如上,该线程的所有者是 event_scheduler。

    二、MySQL 事件调度器的应用案例

    本案例是利用 event scheduler 的特性,每秒钟调用一次存储过程,用于判断 SLAVE 是否正常运行,如果发现 SLAVE 关闭了,忽略 0 次错误,然后重新启动 SLAVE。

    首先创建存储过程

     

    1. delimiter //   
    2. create procedure `Slave_Monitor`()   
    3. begin  
    4. SELECT VARIABLE_VALUE INTO @SLAVE_STATUS   
    5. FROM information_schema.GLOBAL_STATUS   
    6. WHERE VARIABLE_NAME=‘SLAVE_RUNNING‘;  
    7. IF (‘ON‘ != @SLAVE_STATUS) THEN   
    8. SET GLOBAL SQL_SLAVE_SKIP_COUNTER=0;   
    9. SLAVE START;   
    10. END IF;  
    11. end; //   
    12. delimiter ;  

     

    由于存储过程中无法调用类似 SHOW SLAVE STATUS 这样的语句,因此无法得到确切的复制错误信息和错误代码,不能进一步的处理 SLAVE 停止的各种情况。

    接着,创建任务

     

    1. CREATE EVENT IF NOT EXISTS `Slave_Monitor`   
    2. ON SCHEDULE EVERY 5 SECOND   
    3. ON COMPLETION PRESERVE   
    4. DO   
    5. CALL Slave_Monitor(); 

    创建了一个任务,每 5秒钟 执行一次,任务结束后依旧保留该任务,而不是删除。当然了,在本例中的任务不会结束,除非将它手动禁止了。

    如果在运行中想要临时关闭一下某个任务,执行 ALTER EVENT 语句即可:

     

    1. (root:localhost:)test> alter event `Slave_Monitor` ON   
    2. COMPLETION PRESERVE DISABLE;   
    3. (root:localhost:)test> alter event `Slave_Monitor` ON   
    4. COMPLETION PRESERVE ENABLE; 

    以上的相关内容就是对MySQL 事件调度器(Event Scheduler) 的介绍,望你能有所收获

     

    原文blog:http://www.codesky.net/article/201006/147600.html

    MySQL-状态Waiting on empty queue引申

    标签:示例   不能   val   blog   count   empty   ssl   show   tin   

    人气教程排行