天天看點

穿越資料的變遷 - 如何使用阿裡雲Redis資料閃回進行按時間點的資料恢複

在當下資料為王的時代,客戶的業務資料是一個企業的核心資産,各個行業客戶都在不斷追求在其使用的資料庫上有更為強大、細粒度的資料備份恢複功能,以應對各樣的資料丢失、業務邏輯錯誤帶來的商業風險。例如,在遊戲行業裡,有大量客戶存在“遊戲回檔”的實際需求,以應對營運或故障風險。再例如,2020年某上市公司出現删庫跑路事件,公司市值遭到嚴重打擊。對于上述情況,傳統的定時或手動備份的資料由于存在備份時間點與黑天鵝事件之間的時間差,是以均不是理想完備的解決方案。對于防範上述資料風險,最理想的功能是,資料能夠以秒級顆粒度恢複至黑天鵝事件發生的瞬時時間點上。

在傳統關系型資料庫中(如Oracle)提供了資料閃回功能,幫助客戶完成資料的按時間恢複。而在主流的高速緩存産品Redis、Memcached上卻鮮有類似的功能,個中原因主要是考慮到作為緩存産品,其中的資料可以丢失,而通過背後配備的持久化、事務性的關系型資料庫可以對緩存進行重新加載。但是,随着大量客戶對于低延遲的業務應用性能要求不斷的提高,對于一些對延遲要求極高的場景下,例如遊戲行業,越來越多的客戶選擇化簡架構,将Redis直接作為記憶體資料庫來使用,這便對Redis的資料安全可恢複提出了更大的挑戰。阿裡雲Redis作為行業内的領軍産品,擁有國内強大的Redis産品系列,在托管社群Redis版本的同時大力發展自主研發、相容Redis協定增強型鍵值存儲産品Tair(阿裡雲Redis企業版)。

其中“更安全”是阿裡雲Redis向廣大客戶提供服務的重要部分,針對上述客戶訴求,阿裡雲在Tair中的性能增強版上特别推出了資料閃回功能,幫助客戶實作在其指定時間點上恢複指定Redis執行個體資料的能力,提前為客戶可能出現的風險準備好一劑“後悔藥”。功能示意如下圖所示:

穿越資料的變遷 - 如何使用阿裡雲Redis資料閃回進行按時間點的資料恢複
使用這個能夠幫助使用者穿越資料變遷的黑科技隻需簡單幾步。

  • 開通阿裡雲Redis企業版性能增強版執行個體
  • 開啟資料閃回功能
  • 正常讀寫Redis資料庫
  • 一旦發生即時資料恢複要求,選擇對應執行個體和欲恢複的時間點,産生新執行個體
  • 切換應用連接配接的執行個體位址

下面以一個簡單的示例示範:

首先,我們先對一個阿裡雲Tair執行個體寫入一些資料,寫入腳本如下:

% cat preparerepldata.sh
#!/bin/bash
 
echo "started at: `date +%m%d%H%M%S`"
for i in `seq -f "%010g" 1 $1`
do
    namerand=$[ $RANDOM % 3 ]
    timerand=`date +%m%d%H%M%S`
    nationrand=$[ $RANDOM % 3 ]
    redis-cli -h   r-t4nq2viog3z4rshoxxpd.redis.singapore.rds.aliyuncs.com -a 'gnuhpc:Pa$$w0rd'   hset userprofile foo$timerand $namerand
    sleep 0.75 #consider the   latency for connection establish
done
 
echo "ended at:   `date +%m%d%H%M%S`"           

我們運作上述腳本以大約一秒的速率寫入帶時間戳的KV到一個叫做userprofile的hash結構中,一共寫入120個Key,代表業務寫入。

% bash preparerepldata.sh   120
OK
OK
…
 
% redis-cli -h hosts -a 'username:password'   hkeys userprofile | wc -l
     120
% redis-cli -h hosts -a 'username:password'   hkeys userprofile | sort -n
foo0803202709
…
foo0803202909           

如指令執行所示,我們是在08月03日20:27:09 –08月03日 20:29:09 寫入了120條資料。

随後在業務運作中,發現08月03日20:28:10之後,上述業務運作中發生資料風險,我們需要将新建立一個資料庫,将原資料庫在此時間點之前的資料恢複到這個新的資料庫執行個體中。

我們到阿裡雲Redis控制台的備份恢複功能,選擇資料閃回功能,點選“馬上閃回”按鈕,選擇克隆源類型是“過去時間點”,然後選擇要恢複的時間點:

穿越資料的變遷 - 如何使用阿裡雲Redis資料閃回進行按時間點的資料恢複

建立的執行個體就是我們要将指定時間點資料恢複到的目标執行個體,這裡值得一提的資料閃回隻要求目标執行個體容量大于等于源執行個體,而架構則可以與源執行個體不同,也就是說使用者可以自由選擇目标執行個體為标準主從、叢集或者讀寫分離架構的任何一個。

點選支付後等待片刻後執行個體建立完畢并完成資料恢複。

我們連接配接新建立的執行個體,看看究竟資料恢複的情況如何?

% redis-cli -h hosts -a 'username:password'   hkeys userprofile | wc -l
62

% redis-cli -h hosts -a 'username:password'   hkeys userprofile | sort -n
foo0803202709
…
foo0803202810           

可以看到,我們已經成功的恢複資料到了08月03日 20:28:10的資料,在此時間點之後的資料修改均沒有生效,使用者完美地規避了指定的時間點之後發生的資料風險。

作為全球領先的資料庫企業,阿裡雲資料庫的核心理念是更快、更穩、更安全(Faster, Stronger, Securer)的資料庫,緻力于為使用者提供擁有極緻性能、高穩定性和更加安全可靠的資料庫産品。作為“更安全”的踐行,阿裡雲Redis團隊在Redis企業版(Tair)中提供的資料閃回功能,具備了使用者指定秒級時間點的資料恢複功能,通過此功能為企業的高貴資料資産做最進階别的保駕護航,客戶可以更加放心的将Redis作為記憶體資料庫使用以簡化架構與業務的快速疊代。另外,我們雲資料庫專屬叢集MyBase還支援Redis,這是阿裡雲專為大中型企業使用者定制優化的解決方案,填補了市場空白,具有資源獨享、自主可運維、多資料庫混合部署等特點,讓使用者既享受到雲資料庫的靈活性,又滿足企業對資料庫合規性、高性能和安全性要求。

讓您不再有“從删庫到跑路”的噩夢!阿裡雲Redis企業版性能增強版特别推出資料閃回功能,幫助客戶實作在其指定時間點上恢複指定Redis執行個體資料的能力,詳見

https://help.aliyun.com/document_detail/148479.html