手把手教你做 Redis 雙向數(shù)據(jù)同步

簡(jiǎn)述

本文主要介紹 CloudCanal 如何做 Redis 雙向同步并防循環(huán),方案特點(diǎn)包括:

  • 支持 Redis 單節(jié)點(diǎn)姨蝴、主備奈应、分片集群
  • 支持?jǐn)?shù)據(jù)初始化防循環(huán)
  • 支持防循環(huán)輔助指令超時(shí)或永不超時(shí)設(shè)置

技術(shù)點(diǎn)

防循環(huán)事件

CloudCanal Redis 雙向同步采用輔助指令進(jìn)行循環(huán)判定惩琉,當(dāng)收到正常指令,計(jì)算其hash值,構(gòu)建輔助指令key亡蓉,反向查詢輔助指令是否存在录豺,如果存在則為循環(huán),過(guò)濾即可盖文。

對(duì)于輔助指令對(duì)端寫入以及源端查詢嘱蛋,CloudCanal 進(jìn)行了批量和多線程優(yōu)化,同步性能得到有效提升五续。

防循環(huán)兼容 分片集群洒敏、單節(jié)點(diǎn)、主備節(jié)點(diǎn)任意組合之間的數(shù)據(jù)遷移同步返帕。

單任務(wù)多節(jié)點(diǎn)事件訂閱

Redis 集群普遍具備多個(gè)節(jié)點(diǎn)桐玻,為了簡(jiǎn)化任務(wù)配置,CloudCanal 采用單任務(wù)多 Redis 節(jié)點(diǎn)訂閱方式荆萤,實(shí)現(xiàn)數(shù)據(jù)遷移和同步镊靴,整個(gè)過(guò)程更加便利可靠。

操作示例

準(zhǔn)備 CloudCanal

添加數(shù)據(jù)源

  • 本案例采用 阿里云云市場(chǎng)購(gòu)買的 2 個(gè) Redis 集群, 均位于杭州區(qū)域

  • 登錄 CloudCanal 平臺(tái) 链韭,數(shù)據(jù)源管理 -> 添加數(shù)據(jù)源 , 添加 2 個(gè) Redis 集群

  • 建議對(duì)數(shù)據(jù)源進(jìn)行描述修改偏竟,防止配置正反鏈路時(shí),識(shí)別錯(cuò)數(shù)據(jù)庫(kù)

    r1.png

創(chuàng)建正向同步任務(wù)

  • 任務(wù)管理->新建任務(wù)

  • 雙向同步中敞峭,正向任務(wù)一般指源端有數(shù)據(jù)踊谋,目標(biāo)端無(wú)數(shù)據(jù)的鏈路,涉及對(duì)端數(shù)據(jù)初始化

  • 第一個(gè)頁(yè)面旋讹,選擇源端和目標(biāo)端數(shù)據(jù)源和相關(guān)信息殖蚕,點(diǎn)擊下一步

    r2.png
  • 第二個(gè)頁(yè)面

    • 選擇 數(shù)據(jù)同步轿衔,并且勾選 全量數(shù)據(jù)初始化
    • 置灰自動(dòng)啟動(dòng),以便創(chuàng)建任務(wù)后設(shè)置雙向同步參數(shù)
    • 點(diǎn)擊 下一步
    r3.png
  • 第三個(gè)頁(yè)面,點(diǎn)擊確認(rèn)創(chuàng)建

  • 任務(wù)詳情 -> 參數(shù)設(shè)置

    • 設(shè)置源端數(shù)據(jù)源配置 deCycle 參數(shù)為 true
    • 設(shè)置源端數(shù)據(jù)源配置 deCycleEventExpireSec 參數(shù)為 1200 秒 (防循環(huán)輔助指令超時(shí)事件睦疫,超過(guò)后防循環(huán)即無(wú)效)
    • 生效配置并啟動(dòng)
    r4.png
  • 等待正向同步任務(wù)初始化完數(shù)據(jù)并正常同步

    此處不建議在正向同步任務(wù)創(chuàng)建后立即創(chuàng)建反向任務(wù)害驹,涉及到 repl-backlog-size 設(shè)置不足時(shí),反向任務(wù)啟動(dòng)強(qiáng)制走 FULL SYNC 導(dǎo)致新數(shù)據(jù)被老數(shù)據(jù)覆蓋問題

    r5.png

創(chuàng)建反向同步任務(wù)

  • 任務(wù)管理->新建任務(wù)

  • 第一個(gè)頁(yè)面蛤育,選擇源端和目標(biāo)端選擇數(shù)據(jù)源(請(qǐng)和正向任務(wù)所選數(shù)據(jù)源對(duì)調(diào))和相關(guān)信息宛官,點(diǎn)擊下一步

    r6.png
  • 第二個(gè)頁(yè)面

    • 選擇 數(shù)據(jù)同步,并去除全量數(shù)據(jù)初始化勾選
    • 置灰自動(dòng)啟動(dòng)瓦糕,以便創(chuàng)建任務(wù)后設(shè)置雙向同步參數(shù)
    • 點(diǎn)擊 下一步
    r7.png
  • 第三個(gè)頁(yè)面底洗,點(diǎn)擊確認(rèn)創(chuàng)建

  • 任務(wù)詳情 -> 參數(shù)設(shè)置

    • 設(shè)置源端數(shù)據(jù)源配置 deCycle 參數(shù)為 true , deCycleEventExpireSec 參數(shù)為 1200 秒
    • 生效配置并啟動(dòng)
    r8.png
  • 任務(wù)正常運(yùn)行

    r9.png

測(cè)試

  • 源端數(shù)據(jù)庫(kù)做數(shù)據(jù)變更,正向任務(wù)監(jiān)控有變更咕娄,反向任務(wù)沒有(即無(wú)循環(huán))

    r10.png
    r11.png
    f12.png
  • 目標(biāo)端數(shù)據(jù)庫(kù)做數(shù)據(jù)變更亥揖,反向任務(wù)監(jiān)控有變更,正向任務(wù)沒有(即無(wú)循環(huán))

    r13.png
    r14.png
    f15.png
  • 等待兩邊防循環(huán)輔助指令過(guò)期谭胚,檢查數(shù)據(jù)一致
    • 源端


      r16.png
    • 目標(biāo)端


      r17.png

常見問題

目前遺留的問題

  • 對(duì)于主備切換或者位點(diǎn)過(guò)老導(dǎo)致 FULL SYNC 控制還不夠精準(zhǔn)徐块,存在因全量遷移導(dǎo)致老數(shù)據(jù)覆蓋新數(shù)據(jù)問題
  • 防循環(huán)指令目前較有限: FULL DUMP 、 SET 灾而、 HSET 胡控、DEL,后續(xù)需要豐富常見指令防循環(huán)

總結(jié)

本文簡(jiǎn)單介紹了如何使用 CloudCanal 構(gòu)建 Redis 雙向同步旁趟,助力用戶實(shí)現(xiàn)異地多活昼激、災(zāi)備業(yè)務(wù)目標(biāo)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末锡搜,一起剝皮案震驚了整個(gè)濱河市橙困,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌耕餐,老刑警劉巖凡傅,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異肠缔,居然都是意外死亡夏跷,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門明未,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)槽华,“玉大人,你說(shuō)我怎么就攤上這事趟妥∶ㄌ” “怎么了?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)亲雪。 經(jīng)常有香客問我勇凭,道長(zhǎng),這世上最難降的妖魔是什么匆光? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任套像,我火速辦了婚禮酿联,結(jié)果婚禮上终息,老公的妹妹穿的比我還像新娘。我一直安慰自己贞让,他們只是感情好周崭,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著喳张,像睡著了一般续镇。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上销部,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天摸航,我揣著相機(jī)與錄音,去河邊找鬼舅桩。 笑死酱虎,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的擂涛。 我是一名探鬼主播读串,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼撒妈!你這毒婦竟也來(lái)了恢暖?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤狰右,失蹤者是張志新(化名)和其女友劉穎杰捂,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體棋蚌,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡嫁佳,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了附鸽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脱拼。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖坷备,靈堂內(nèi)的尸體忽然破棺而出熄浓,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布赌蔑,位于F島的核電站俯在,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏娃惯。R本人自食惡果不足惜跷乐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望趾浅。 院中可真熱鬧愕提,春花似錦、人聲如沸皿哨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)证膨。三九已至如输,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間央勒,已是汗流浹背不见。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留崔步,地道東北人稳吮。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像刷晋,于是被迫代替她去往敵國(guó)和親盖高。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容