真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

【Otter】關(guān)于otter雙A模式的一點疑問

何為雙A模式:可以簡單理解為MySQL的雙主模式,互為主從
具體可參考:https://github.com/alibaba/otter/wiki/Manager配置介紹


官方博客的配置方法:

雙A同步相比于雙向同步,整個配置主要是一些參數(shù)上有變化,具體步驟:

成都創(chuàng)新互聯(lián)自成立以來,一直致力于為企業(yè)提供從網(wǎng)站策劃、網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、網(wǎng)站制作、電子商務(wù)、網(wǎng)站推廣、網(wǎng)站優(yōu)化到為企業(yè)提供個性化軟件開發(fā)等基于互聯(lián)網(wǎng)的全面整合營銷服務(wù)。公司擁有豐富的網(wǎng)站建設(shè)和互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開發(fā)管理經(jīng)驗、成熟的應(yīng)用系統(tǒng)解決方案、優(yōu)秀的網(wǎng)站開發(fā)工程師團隊及專業(yè)的網(wǎng)站設(shè)計師團隊。

  1. 配置一個channel 
    【Otter】關(guān)于otter雙A模式的一點疑問
  2. 配置兩個pipeline
    【Otter】關(guān)于otter雙A模式的一點疑問
  3. * 注意:除了需要定義一個主站點外,需要在高級設(shè)置中將一個pipeline的“支持DDL”設(shè)置為false,另一個設(shè)置為true,否則將提示“一個channel中只允許開啟單向ddl同步!”錯誤
  4. 每個pipeline各自配置canal,定義映射關(guān)系

背景:
111<->112 雙A模式

111->112_canal:111 同步數(shù)據(jù)至112 
  1. 主站點:true
  2. 支持ddl同步:    關(guān)閉     
  3. 跳過ddl異常:    開啟

112->111_canal:112同步數(shù)據(jù)至111
  1. 主站點:flase
  2. 支持ddl同步:    開啟
  3. 跳過ddl異常:    開啟

在以上的背景下
疑問一:數(shù)據(jù)的增刪查改都沒問題,但是當(dāng)在111上 執(zhí)行create table/Truncate 這類DDL語句后,不會同步到112上,反之在112上執(zhí)行可以同步至111,因為支持ddl同步這個參數(shù)的原因

解決辦法:
待續(xù)

疑問二:當(dāng)表沒有主鍵約束時,在非主站點上執(zhí)行insert會重復(fù)插入一條如:
  1. 非主站點上執(zhí)行:
  2. mysql> insert into test3 values(5);
  3. Query OK, 1 row affected (0.01 sec)

  4. mysql> select * from test3;
  5. +------+
  6. | id |
  7. +------+
  8. | 4 |
  9. | 5 |
  10. | 5 |
  11. +------+
  12. 3 rows in set (0.00 sec)

  13. 主站點上:
  14. mysql> select * from test3;
  15. +------+
  16. | id |
  17. +------+
  18. | 4 |
  19. | 5 |
  20. +------+
  21. 2 rows in set (0.00 sec)
同步至主站點了,但是非主站點會再插入一遍
原因:otter設(shè)計的單向回環(huán)
【Otter】關(guān)于otter雙A模式的一點疑問

思路:最終一致性

適用場景: A地和B地數(shù)據(jù)不對等,比如A地為主,寫入量比較高,B地有少量的數(shù)據(jù)寫入

單向回環(huán)流程:(比如圖中以HZ為trusted source站點)

  • us->hz同步的數(shù)據(jù),會再次進(jìn)入hz->us隊列,形成一次單向回環(huán)
  • hz->us同步的數(shù)據(jù),不會進(jìn)入us->hz隊列(回環(huán)終止,保證不進(jìn)入死循環(huán))

解決辦法:設(shè)計表都帶上自增主鍵


疑問三:如果兩邊同時插入一條數(shù)據(jù),自增id怎么辦?
  1. mysql> select * from admin;
  2. +----+---------+
  3. | id | role_id |
  4. +----+---------+
  5. | 8 | 77 |
  6. | 9 | 777 |
  7. | 11 | 99 |
  8. | 12 | 999 |
  9. | 16 | 888 |    ---可以看到,主站點丟失,未插入!
  10. +----+---------+
  11. 5 rows in set (0.00 sec)


在github上《otter數(shù)據(jù)庫入庫算法》部分看到這樣一段話:合并算法執(zhí)行后,單pk主鍵只有一條記錄,減少并行l(wèi)oad算法的復(fù)雜性(比如batch合并,并行/串行等處理)
因為并發(fā)插入之間的時間間隔非常短,短于同步之間的延遲,在主副站點分別插入后是同一條pk建,并且副站點后插入,那么副站點是最新副本集也就是trust 點,副站點數(shù)據(jù)覆蓋主站點數(shù)據(jù),《otter數(shù)據(jù)一致性》詳解!

解決辦法:參考官方雙a的做法,設(shè)置步長和起始值
  1. 修改兩臺的步長
  2. mysql> show global variables like '%auto_increment_increment%';
  3. +--------------------------+-------+
  4. | Variable_name | Value |
  5. +--------------------------+-------+
  6. | auto_increment_increment | 2 |
  7. +--------------------------+-------+

  8. mysql> show global variables like '%auto_increment_increment%';
  9. +--------------------------+-------+
  10. | Variable_name | Value |
  11. +--------------------------+-------+
  12. | auto_increment_increment | 1 |
  13. +--------------------------+-------+

  14. 再次測試
  15. [root@DB-22 dbaadmin]# python test.py 
    ()
    ()
    all over Mon Jul 31 17:54:10 2017
    [root@DB-22 dbaadmin]# python test.py 
    ()
    ()
    all over Mon Jul 31 17:54:21 2017



  16. mysql> select * from admin;
    +----+---------+
    | id | role_id |
    +----+---------+
    | 28 |     111 |
    +----+---------+
    1 row in set (0.00 sec)


    mysql> select * from admin;
    +----+---------+
    | id | role_id |
    +----+---------+
    | 28 |     111 |
    | 29 |     888 |
    | 30 |      88 |
    +----+---------+
    3 rows in set (0.00 sec)


    mysql> select * from admin;
    +----+---------+
    | id | role_id |
    +----+---------+
    | 28 |     111 |
    | 29 |     888 |
    | 30 |      88 |
    | 31 |     888 |
    | 32 |      88 |
    +----+---------+
    5 rows in set (0.00 sec)







文章名稱:【Otter】關(guān)于otter雙A模式的一點疑問
文章位置:http://weahome.cn/article/pcgghh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部