亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪(fǎng)問(wèn)板塊 發(fā)新帖
查看: 5285 | 回復(fù): 3
打印 上一主題 下一主題

MySQL Replication中的Event Scheduler小結(jié) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-04-10 16:27 |只看該作者 |倒序?yàn)g覽
技術(shù)背景:
    項(xiàng)目中,由于數(shù)據(jù)量很大,整個(gè)系統(tǒng)架構(gòu)自身來(lái)實(shí)現(xiàn)"分區(qū)表", 基礎(chǔ)數(shù)據(jù)系列表每天都生成一套表,而各類(lèi)基礎(chǔ)表創(chuàng)建,視圖關(guān)系映射,
過(guò)期數(shù)據(jù)和表的清除都依賴(lài)于數(shù)據(jù)庫(kù)的調(diào)度分別放在早上1點(diǎn)和3點(diǎn)運(yùn)行,因?yàn)轫?xiàng)目存在兩個(gè)版本oracle 和MySQL, 前者依賴(lài)于oracle jobs, 后者依賴(lài)于
MySQL Event Scheduler. 對(duì)于MySQL版本的架構(gòu)采用的是主從架構(gòu),而Event在MySQL Replication的過(guò)程中遇到一些小問(wèn)題。


問(wèn)題列表:
1, 注意當(dāng)在slave不創(chuàng)建Event,但是如果Master 上的event時(shí)間到了,它們自動(dòng)刪除,而這個(gè)刪除操作也會(huì)被記錄到binlog中,
這樣slave會(huì)出現(xiàn)錯(cuò)誤,因?yàn)樗淮嬖谶@個(gè)events. 如果手動(dòng)刪除events,則加上SET sql_log_bin =0;
2,  Event本身的schedule的設(shè)置,最好用字符串來(lái)表示時(shí)間,如果用now(),如果是兩臺(tái)server的時(shí)區(qū)不相同,那樣就糾結(jié)了。
3,  Event在Replication中的運(yùn)行策略,因?yàn)镋vent在Master上作的修改會(huì)被復(fù)制到Slave上,如果Slave 的Event再運(yùn)行,這就會(huì)出問(wèn)題的, 的有以下3種情況
   3.1  要運(yùn)行的Event只在Master上創(chuàng)建,這種情況如果把slave提升為master時(shí),要?jiǎng)?chuàng)建event.
        3.1.1 : 用set sql_log_bin=0, 這樣創(chuàng)建event的sql就不會(huì)被記錄到binlog中,不過(guò),這樣對(duì)于以后恢復(fù)有影響,所以這樣做后,最好做個(gè)全備。
        3.1.2 : event會(huì)在slave上創(chuàng)建,但馬上將其drop掉。有點(diǎn)笨的方法

   3.2 直接禁用Slave上的event, 在my.cnf配置 event_scheduler=0;  但是整個(gè)mysql 實(shí)例都不能運(yùn)行event. 因?yàn)闈M(mǎn)足要求,我們項(xiàng)目就用的這個(gè)。
提升slave時(shí),也方便,直接set global event_scheduler=ON便可,同時(shí)修改my.cnf.
   3.3 Event提供了一機(jī)制,創(chuàng)建的時(shí)候可以設(shè)置DISABLE ON SALVE, 其實(shí)這個(gè)值是默認(rèn),當(dāng)我們用在slave上用show events查看時(shí),在
Slave字段上顯示的是DISABLE ON SALVE, 但是在Master上顯示還是ENABLE。提升Slave為Master的時(shí)候,只要修改狀態(tài)就可以了
后面會(huì)做測(cè)試!緜(gè)人覺(jué)得這種方式最優(yōu)】


示例:演示上面3.3的處理方法
1 演示Master創(chuàng)建event, 同時(shí)Slave也會(huì)創(chuàng)建,但默認(rèn)狀態(tài)是DISABLE ON SALVE,所以Slave的event是不會(huì)執(zhí)行的。

1.1 確認(rèn)Master和Slave的event_scheduler=ON, 如果不是可執(zhí)行set global event_scheduler =ON;
mysql> show variables like 'event_scheduler';
+-----------------+-------+
| Variable_name | Value |
+-----------------+-------+
| event_scheduler | ON |
+-----------------+-------+
1 row in set (0.00 sec)

2 在測(cè)試數(shù)據(jù)庫(kù)test中(可復(fù)制), 在Master上創(chuàng)建測(cè)試表test.t_event, 測(cè)試存儲(chǔ)過(guò)程p_event.
在Master創(chuàng)建一個(gè)event: e_replication,用于調(diào)用p_event, 每次向t_event表中插入一條數(shù)據(jù)。
測(cè)試說(shuō)明:如果Master和Slave的t_event表中的數(shù)據(jù)行數(shù)相同,則說(shuō)明只有maser的event運(yùn)行,slave的event沒(méi)有運(yùn)行。

2.1.1 創(chuàng)建event, 每一分鐘執(zhí)行一次event, 也就是每一分鐘向t_event插入一數(shù)據(jù)
mysql> CREATE EVENT `e_replication` ON SCHEDULE EVERY 1 MINUTE STARTS sysdate() + interval 2 minute DO call p_events();
Query OK, 0 rows affected (0.00 sec)

2.1.2 查看Master上的e_replication創(chuàng)建情況, 可見(jiàn)已成功,且Status是ENABLED
mysql> show events\G
*************************** 1. row ***************************
Db: test
Name: e_replication
Definer: root@localhost
Time zone: SYSTEM
Type: RECURRING
Execute at: NULL
Interval value: 1
Interval field: MINUTE
Starts: 2012-04-10 11:25:38
Ends: NULL
Status: ENABLED
1 row in set (0.00 sec)

2.1.3 查看Slave上的Event也因復(fù)制,創(chuàng)建成功,且狀態(tài)Status是SLAVESIDE_DISABLED,說(shuō)明默認(rèn)不運(yùn)行此Event.
mysql> show events\G
*************************** 1. row ***************************
                  Db: test
                Name: e_replication
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MINUTE
              Starts: 2012-04-10 11:25:39
                Ends: NULL
              Status: SLAVESIDE_DISABLED
1 row in set (0.00 sec)

2.1.4 檢測(cè)master和slave上的t_event是一樣的,說(shuō)明正常復(fù)制,且slave上的event沒(méi)有運(yùn)行,符合我們要求。
mysql> select * from t_event;
+----+---------------------+
| id | time |
+----+---------------------+
| 44 | 2012-04-10 11:25:38 |
| 45 | 2012-04-10 11:26:38 |
| 46 | 2012-04-10 11:27:38 |
| 47 | 2012-04-10 11:28:39 |
| 48 | 2012-04-10 11:29:38 |
+----+---------------------+
5 rows in set (0.00 sec)

mysql> select * from t_event;
+----+---------------------+
| id | time |
+----+---------------------+
| 44 | 2012-04-10 11:25:38 |
| 45 | 2012-04-10 11:26:38 |
| 46 | 2012-04-10 11:27:38 |
| 47 | 2012-04-10 11:28:39 |
| 48 | 2012-04-10 11:29:38 |
+----+---------------------+
5 rows in set (0.00 sec)

3 如果要把Slave提升為Master,這樣就得修改Slave上的event的Status.

3.1為了方便測(cè)試先把Master上的e_replication事件drop.但此操作不被記錄到binlog中,這樣Slave上的event還是存在,但不運(yùn)行
mysql> set sql_log_bin=0;
Query OK, 0 rows affected (0.00 sec)

mysql> drop event e_replication;
Query OK, 0 rows affected (0.00 sec)

mysql> set sql_log_bin=1;
Query OK, 0 rows affected (0.00 sec)

3.2 修改slave上的e_replication為enable, 查看到已清空的t_event表中又有了數(shù)據(jù),則數(shù)據(jù)slave上的event被“激活了”。
mysql> select * from t_event;
Empty set (0.00 sec)

mysql> alter event e_replication enable;
Query OK, 0 rows affected (0.00 sec)

//有數(shù)據(jù)了

mysql> select * from t_event;
+----+---------------------+
| id | time |
+----+---------------------+
| 90 | 2012-04-10 12:15:53 |
+----+---------------------+
1 row in set (0.00 sec)
// 可見(jiàn)Status從 Status: SLAVESIDE_DISABLED到 Status: ENABLED
mysql> show events\G                    
*************************** 1. row ***************************
                  Db: test
                Name: e_replication
             Definer: root@localhost
           Time zone: SYSTEM
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: MINUTE
              Starts: 2012-04-10 12:02:53
                Ends: NULL
              Status: ENABLED
1 row in set (0.00 sec)

mysql> select * from t_event;
+----+---------------------+
| id | time |
+----+---------------------+
| 90 | 2012-04-10 12:15:53 |
+----+---------------------+
1 row in set (0.00 sec)

評(píng)分

參與人數(shù) 2可用積分 +12 收起 理由
楓影誰(shuí)用了 + 10 贊一個(gè)!
小版主殺手 + 2 很給力!

查看全部評(píng)分

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-04-10 16:39 |只看該作者
good job!

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2012-04-11 13:25 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
0
4 [報(bào)告]
發(fā)表于 2012-04-11 13:49 |只看該作者
回復(fù) 3# kerlion
這個(gè)項(xiàng)目的db端處理的東西很多,當(dāng)初就這樣設(shè)置的。
另一個(gè)項(xiàng)目用過(guò),第三方的qurartz,程序調(diào)度不錯(cuò)。

   
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP