天天看點

利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料

背景

目前DLA的一鍵建倉可以非常友善的進行RDS資料歸檔任務,隻需要簡單配置一下,就可以每天同步

最新的歸檔資料到oss上,進而做一些DLA分析查詢等。

但是最近有的使用者提出,隻需要歸檔一次,下次不再歸檔,或者下次歸檔的目錄資料不覆寫之前的。

這樣可以保留每次歸檔的資料snapshot鏡像。這種場景在一些審計校對的業務中,确實會比較實用。

本文就針對這個場景,說明如何使用DLA的一鍵建倉任務,來做各個曆史資料鏡像的功能。整個過程主要

分以下幾步:

  • 一鍵建倉schema的建立與運作
  • 建立oss schema,建立對應的外表映射
  • 删除原來的一鍵建倉schema

實戰例子

下文示範例子:

某公司在阿裡雲RDS上,有一個finance庫,這個庫中各種表專門記錄了公司内部所有财務收支記錄。會計部門每個月初,需要對上個月的所有财務收支情況進行審計彙總。審計報告由高層管理人員稽核。

簡單的來講,使用者需要對RDS的資料做周期的一次性歸檔鏡像快照,不互相覆寫,長期有效的存儲着這個finance 庫曆史資料快照,并提供一下低頻分析查詢的功能操作。如:

  • 2月1号,備份finance庫目錄為 oss://test/finance/20200201/,子目錄有table1、table2、table3....
  • 3月1号,備份finance庫目錄為 oss://test/finance/20200301/,子目錄有table1、table2、table3....
  • 4月1号,備份finance庫目錄為 oss://test/finance/20200401/,子目錄有table1、table2、table3....
  • 5月1号,......

建立一鍵建倉任務運作,并擷取建表語句

建立一鍵建倉finance20200401任務,選擇 20200401目錄為schema資料根目錄
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料
立即運作finance20200401建倉任務,等待任務完成
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料
schema管理清單,進入finance20200401 複制建表語句
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料

如圖,執行show create table users; 得到如下

CREATE EXTERNAL TABLE `finance20200401`.`users` (
    `id` string COMMENT '',
    `username` string COMMENT '',
    `cardnum` string COMMENT '',
    `gmt_create` timestamp COMMENT ''
)
COMMENT ''
STORED AS `PARQUET`
LOCATION  'oss://oss-tiansihz-for-xxxxx-test/20200401/6/users'
TBLPROPERTIES (
    'auto.create.location' = 'true'
)           

這裡注意,看到“users”資料目錄這次放在了“oss://oss-tiansihz-for-xxxxx-test/20200401/6/”目錄下,

于是我們需要建立一個oss schema映射到這個目錄下,如下

建立oss schema

建立一個oss schema "20200401_snapshot",并映射到指定目錄下
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料

如圖,核心確定這個schema映射到了“oss://oss-tiansihz-for-xxxxx-test/20200401/6/”目錄下,建立執行即可

schema管理找到20200401_snapshot,點選“查詢資料”進入sql控制台
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料
20200401_snapshot在sql控制台把之前複制的users建表語句粘貼進來,并在location路徑最後加上“/”結尾
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料

執行之後,得到了對應的users表,就可以正常查詢了。

利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料

删除一鍵建倉任務schema “finance20200401”

此時,就可以吧一鍵建倉的finance20200401删除了,我們後續要查詢的歸檔資料就用20200401_snapshot 這個schema就可以了。

利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料
利用DLA一鍵建倉功能一次性歸檔RDS/MySQL全量資料

小結

這裡本質上是利用“一鍵建倉”的schema “finance20200401”完成“一次歸檔”RDS資料到oss上,然後立即删除這個一鍵建倉任務schema,防止後續每天都排程。歸檔過來的資料,使用oss schema 建立的外表來查詢即可。整個過程還是比較簡單的,方案供參考。

當然為了一次建倉歸檔排程,還有别的方案。比如在DLA建立一個mysql表 usersA,再建立一個oss表usersB, 兩個結構相同,然後DLA發起一個insert into B select from A sql就可以了。這裡不展開,有需要的可以咨詢“DLA答疑”客服。