1.一種并發(fā)主從同步方法,其包括:
接收來自主數(shù)據(jù)庫的數(shù)據(jù)同步任務(wù),所述數(shù)據(jù)同步任務(wù)包括可并行執(zhí)行的第一操作和需串行執(zhí)行的第二操作;
在從數(shù)據(jù)庫處于第一狀態(tài)下,將數(shù)據(jù)同步任務(wù)中的第一操作分發(fā)給多個第一線程中一個第一線程執(zhí)行,由第二線程執(zhí)行數(shù)據(jù)同步任務(wù)中的第二操作。
2.根據(jù)權(quán)利要求1所述的并發(fā)主從同步方法,其中,所述方法還包括:
在從數(shù)據(jù)庫處于第二狀態(tài)下,按照接收數(shù)據(jù)同步任務(wù)的順序,為所述數(shù)據(jù)同步任務(wù)設(shè)置令牌;
將設(shè)置有令牌的數(shù)據(jù)同步任務(wù)分發(fā)給多個第一線程中一個第一線程,由該第一線程執(zhí)行所述數(shù)據(jù)同步任務(wù)中的第一操作和第二操作。
3.根據(jù)權(quán)利要求1所述的并發(fā)主從同步方法,其中,所述將數(shù)據(jù)同步任務(wù)中的第一操作分發(fā)給多個第一線程中一個第一線程執(zhí)行進(jìn)一步包括:
依據(jù)負(fù)載均衡策略,從多個第一線程選擇一個第一線程;
將所述數(shù)據(jù)同步任務(wù)中的第一操作分發(fā)給所選擇的第一線程執(zhí)行。
4.根據(jù)權(quán)利要求2所述的并發(fā)主從同步方法,其中,所述將設(shè)置有令牌的數(shù)據(jù)同步任務(wù)分發(fā)給多個第一線程中一個第一線程進(jìn)一步包括:
依據(jù)負(fù)載均衡策略,從多個第一線程選擇一個第一線程;
將設(shè)置有令牌的數(shù)據(jù)同步任務(wù)分發(fā)給所選擇的第一線程。
5.根據(jù)權(quán)利要求2所述的并發(fā)主從同步方法,其中,在從數(shù)據(jù)庫處于第二狀態(tài)下,各個第一線程之間執(zhí)行的所述第一操作為并行操作;各個第一線程之間執(zhí)行的所述第二操作為串行操作。
6.根據(jù)權(quán)利要求2所述的并發(fā)主從同步方法,其中,在由該第一線程執(zhí)行所述數(shù)據(jù)同步任務(wù)中的第二操作之前,所述方法還包括:
判斷順序排在所述令牌前一位的令牌對應(yīng)的數(shù)據(jù)同步任務(wù)的第二操作是否執(zhí)行完成;其中,所述令牌的排列順序與接收數(shù)據(jù)同步任務(wù)的順序一致;
若否,則繼續(xù)等待,直至順序排在所述令牌前一位的令牌對應(yīng)的數(shù)據(jù)同步任務(wù)的第二操作執(zhí)行完成。
7.根據(jù)權(quán)利要求2所述的并發(fā)主從同步方法,其中,所述方法進(jìn)一步包括:
判斷所述從數(shù)據(jù)庫是否為從第二狀態(tài)切換為第一狀態(tài);
若是,判斷已設(shè)置令牌的數(shù)據(jù)同步任務(wù)是否執(zhí)行完成;
若已設(shè)置令牌的數(shù)據(jù)同步任務(wù)未執(zhí)行完成,則在所述將數(shù)據(jù)同步任務(wù)中的第一操作分發(fā)給多個第一線程中一個第一線程執(zhí)行,由第二線程執(zhí)行數(shù)據(jù)同步任務(wù)中的第二操作之前,所述方法還包括:等待已設(shè)置令牌的數(shù)據(jù)同步任務(wù)執(zhí)行完成。
8.根據(jù)權(quán)利要求2所述的并發(fā)主從同步方法,其中,所述方法進(jìn)一步包括:
判斷所述從數(shù)據(jù)庫是否為從第一狀態(tài)切換為第二狀態(tài);
若是,則判斷第二線程是否執(zhí)行完所有第二操作;
若第二線程未執(zhí)行完所有第二操作,則在所述按照接收數(shù)據(jù)同步任務(wù)的順序,為所述數(shù)據(jù)同步任務(wù)設(shè)置令牌之前,所述方法還包括:等待第二線程執(zhí)行完所有第二操作。
9.根據(jù)權(quán)利要求1-8中任一項所述的并發(fā)主從同步方法,其中,所述第一操作為用于將數(shù)據(jù)寫入從數(shù)據(jù)庫的寫數(shù)據(jù)操作,所述第二操作為用于將寫數(shù)據(jù)操作記錄到從庫日志文件中的寫日志操作。
10.一種并發(fā)主從同步裝置,其包括:
接收模塊,適于接收來自主數(shù)據(jù)庫的數(shù)據(jù)同步任務(wù),所述數(shù)據(jù)同步任務(wù)包括可并行執(zhí)行的第一操作和需串行執(zhí)行的第二操作;
分發(fā)模塊,適于在從數(shù)據(jù)庫處于第一狀態(tài)下,將數(shù)據(jù)同步任務(wù)中的第一操作分發(fā)給多個并行處理模塊中一個并行處理模塊執(zhí)行;
串行處理模塊,適于在從數(shù)據(jù)庫處于第一狀態(tài)下,執(zhí)行數(shù)據(jù)同步任務(wù)中的第二操作;
多個并行處理模塊,適于在從數(shù)據(jù)庫處于第一狀態(tài)下,執(zhí)行數(shù)據(jù)同步任務(wù)中的第一操作。