<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MySQL案例08:MySQL Scheduler Events帶來(lái)的風(fēng)險(xiǎn)

      定時(shí)任務(wù)是我們開(kāi)發(fā)、運(yùn)維人員經(jīng)常用到的,比如cron,job,schedule,events scheduler等都是為了方便我們重復(fù)執(zhí)行某項(xiàng)工作而無(wú)需人工參與而設(shè)計(jì),這里我要說(shuō)的是MySQL數(shù)據(jù)庫(kù)本身的定時(shí)任務(wù),即events scheduler的風(fēng)險(xiǎn)案例。

      一、現(xiàn)象描述

      這里有一個(gè)從庫(kù)出現(xiàn)數(shù)據(jù)不同步現(xiàn)象,具體報(bào)錯(cuò)如下:

                   Slave_IO_Running: Yes
                  Slave_SQL_Running: No
                     Last_SQL_Errno: 1032
                     Last_SQL_Error: Could not execute Delete_rows event on table bs.dg_sale; Can't find record in 'dg_sale', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000079, end_log_pos 159513315

      這個(gè)現(xiàn)象出現(xiàn)是由于主鍵問(wèn)題導(dǎo)致數(shù)據(jù)刪除失敗,進(jìn)而引發(fā)數(shù)據(jù)同步錯(cuò)誤。

      二、原因分析

      出現(xiàn)上述錯(cuò)誤比較常見(jiàn)的是從庫(kù)做了一些刪除操作,然后數(shù)據(jù)同步的時(shí)候通過(guò)主鍵尋找條件刪除的時(shí)候無(wú)法執(zhí)行刪除操作,進(jìn)而導(dǎo)致主從錯(cuò)誤。

      通過(guò)對(duì)比主庫(kù)數(shù)據(jù)和從庫(kù)數(shù)據(jù)發(fā)現(xiàn)表數(shù)據(jù)記錄數(shù)都是0,然后自增值不同,從庫(kù)始終沒(méi)有外部賬戶訪問(wèn),這里就有點(diǎn)懵逼了吧?沒(méi)錯(cuò),還有一種情況可能導(dǎo)致從庫(kù)被操作,那就是定時(shí)任務(wù)。通過(guò)排查發(fā)現(xiàn),果然主庫(kù)設(shè)有幾個(gè)events事件,其中有個(gè)定時(shí)任務(wù)就設(shè)計(jì)到這個(gè)表的多次查詢、刪除、插入等操作。

      正常情況下主庫(kù)創(chuàng)建event schedule,從庫(kù)自動(dòng)的將event disable掉,如果切換需要手動(dòng)enable event scheduler,如果搭建主從實(shí)現(xiàn)創(chuàng)建好的定時(shí)任務(wù)復(fù)制到從庫(kù),從庫(kù)的scheduler可能會(huì)被激活,導(dǎo)致主從的scheduler都被執(zhí)行。

      三、處理過(guò)程

      1.查看從庫(kù)狀態(tài)和錯(cuò)誤代碼信息。

      2.檢查主庫(kù)、從庫(kù)表數(shù)據(jù)信息、表結(jié)構(gòu)信息。

      show slave status \G

      show create table  bs.dg_sale \G

      select count(1) from bs.dg_sale;

      3.分析產(chǎn)生錯(cuò)誤的binlog信息。

      主庫(kù):

      show binlog events  in 'mysql-bin.000079' from 159512534 limit 10;

      mysqlbinlog  --base64-output='decode-rows' --start-position=159512534 --stop-position=159512838 -vv  mysql-bin.000079 >binlog.txt

      4.查看主庫(kù)/從庫(kù)events scheduler信息

      show variables like 'event_scheduler';

      show events;

      select EVENT_SCHEMA,EVENT_NAME,STATUS ,EXECUTE_AT,INTERVAL_VALUE from events;

       

      這里看到events scheduler

      5.禁用從庫(kù)的events scheduler

      set global event_scheduler=0;或者在主創(chuàng)建的時(shí)候加入DISABLE ON SLAVE

      在從庫(kù)my.cnf配置文件中加入set global event_scheduler=0

      6.重新完成數(shù)據(jù)同步

      四、總結(jié)和知識(shí)擴(kuò)展

      含有scheduler事件的風(fēng)險(xiǎn)項(xiàng):

      1)主從切換的時(shí)候,新主庫(kù)需要enable scheduler events

      2)含有scheduler 的數(shù)據(jù)庫(kù)搭建從庫(kù),需要特別注意從庫(kù)的scheduler events需要被disable

      1.創(chuàng)建mysql events scheduler

      語(yǔ)法:

      CREATE
          [DEFINER = { user | CURRENT_USER }]
          EVENT
          [IF NOT EXISTS]
          event_name
          ON SCHEDULE schedule
          [ON COMPLETION [NOT] PRESERVE]
          [ENABLE | DISABLE | DISABLE ON SLAVE]
          [COMMENT 'string']
          DO event_body;
      
      schedule:
          AT timestamp [+ INTERVAL interval] ...
        | EVERY interval
          [STARTS timestamp [+ INTERVAL interval] ...]
          [ENDS timestamp [+ INTERVAL interval] ...]
      
      interval:
          quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
                    WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
                    DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

      實(shí)例:

      CREATE EVENT myevent
          ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
          DO
            UPDATE myschema.mytable SET mycol = mycol + 1;

      2.刪除mysql events scheduler

      語(yǔ)法:

      DROP EVENT [IF EXISTS] event_name

      3.更改mysql events scheduler

      語(yǔ)法:

      ALTER
          [DEFINER = { user | CURRENT_USER }]
          EVENT event_name
          [ON SCHEDULE schedule]
          [ON COMPLETION [NOT] PRESERVE]
          [RENAME TO new_event_name]
          [ENABLE | DISABLE | DISABLE ON SLAVE]
          [COMMENT 'string']
          [DO event_body]

      實(shí)例:

      ALTER EVENT no_such_event 
            ON SCHEDULE 
            EVERY '2:3' DAY_HOUR;

      五、案例回放測(cè)試

      名稱 主庫(kù) 備庫(kù)
      IP地址 192.168.1.1 192.168.1.2
      OS RHEL6.6 RHEL6.6
      MySQL 5.7.21-20 5.7.21-20
           

       1.部署主從(略)

       2.檢查主從scheduer是否開(kāi)啟(mysqladmin var |grep event_scheduler)

      主:

      從:

      3.主庫(kù)創(chuàng)建schedure相關(guān)信息

      (root:localhost:Fri Jul 27 14:32:52 2018)[dbtest]>create table t(id int primary  key,name varchar(30));

      CREATE EVENT ev_test 
      ON SCHEDULE EVERY 1 MINUTE STARTS '2018-07-27 15:58:00' ON COMPLETION PRESERVE ENABLE DO 
      BEGIN
          insert into   t  values(1,'N1'),(2,'N2'),(3,'N3');
      END

      4.主從數(shù)據(jù)檢查

      show slave status \G

      select * from t;

       

      主從狀態(tài)正常,數(shù)據(jù)正常。

      這里發(fā)現(xiàn)并無(wú)異常,原因主從狀態(tài)本身存在的情況下,在主庫(kù)新建scheduler,從庫(kù)的scheduler event會(huì)被默認(rèn)設(shè)置為disable

      主庫(kù):

      (root:localhost:Fri Jul 27 16:29:12 2018)[dbtest]>show events;

      從庫(kù):

      (root:localhost:Fri Jul 27 16:29:49 2018)[dbtest]>show events;

      5.調(diào)整從庫(kù)的schedule為enable狀態(tài)

      (root:localhost:Fri Jul 27 16:31:37 2018)[dbtest]>alter event ev_test enable;
      Query OK, 0 rows affected (0.00 sec)
      此時(shí)從庫(kù)的scheduer也會(huì)被執(zhí)行,如果因?yàn)闀r(shí)間等原因的關(guān)系,從庫(kù)先執(zhí)行了scheduler events,主庫(kù)再執(zhí)行然后傳輸binlog到從庫(kù)再次執(zhí)行會(huì)導(dǎo)致主從數(shù)據(jù)不一致,進(jìn)而導(dǎo)致復(fù)制失敗,這也就是為什么含有scheduer event的主從架構(gòu)需要特別注意的原因了。

       

      posted @ 2018-07-27 12:02  Rangle  閱讀(1627)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 色偷偷亚洲女人天堂观看| 刚察县| 国模少妇无码一区二区三区| 亚洲一级特黄大片在线观看| 欧美在线一区二区三区精品| 免费国产一级特黄aa大片在线| 国产一区二区三区色视频| 欧美黑人性暴力猛交在线视频| 野花社区www视频日本| 亚洲男人的天堂久久香蕉| 亚洲精品日产AⅤ| 午夜成人无码免费看网站| 国产欧美va欧美va在线| AV老司机AV天堂| XXXXXHD亚洲日本HD| 日本免费一区二区三区日本| 亚洲精品视频免费| 欧美成本人视频免费播放| 伊在人间香蕉最新视频| 亚洲一区二区三上悠亚| 无码人妻丝袜在线视频| 欧美黑人又粗又大又爽免费| 欧美黑人XXXX性高清版| 国产亚洲精品成人aa片新蒲金| 国产视频一区二区三区四区视频| 国产成AV人片久青草影院| 亚洲欧美日韩一区在线观看| 天堂…中文在线最新版在线| 国产一区二区不卡91| 会宁县| yw尤物av无码国产在线观看| 中国产无码一区二区三区| 精品无码成人片一区二区| 在线看av一区二区三区| 久久综合久色欧美综合狠狠| 精品一区二区亚洲国产| 国产精品国产精品无卡区| 国产一区二区视频啪啪视频| 国产精品午夜福利精品| 久热这里只精品视频99| 久久99精品国产99久久6尤物|