MySQL複製操作可以將資料從一個MySQL伺服器(主)複製到其他的一個或多個MySQL伺服器(從)。試想一下,如果從伺服器不再局限為一個MySQL伺服器,而是其他任何資料庫伺服器或平台,並且複製事件要求即時進行,是否可以實現呢?
MySQL團隊最新推出的 MySQL Applier for Hadoop(以下簡稱Hadoop Applier)旨在解決這一問題。
用途
例如,複製事件中的從伺服器可能是一個資料倉儲系統,如Apache Hive,它使用HadoopDistributed File System(HDFS)作為資料存放區區。如果你有一個與HDFS相關的Hive中繼存放區,Hadoop Applier就可以即時填充Hive資料表。資料是從MySQL中以文字檔形式匯出到HDFS,然後再填充到Hive。
操作很簡單,只需在Hive運行HiveQL語句'CREATE TABLE',定義表的結構與MySQL相似,然後運行Hadoop Applier即可開始即時複製資料。
優勢
在Hadoop Applier之前,還沒有任何工具可以執行即時傳輸。之前的解決方案是通過Apache
Sqoop匯出資料到HDFS,儘管可以批量傳輸,但是需要經常將結果重複匯入以保持資料更新。在進行大量資料轉送時,其他查詢會變得很慢。且在資料庫較
大的情況下,如果只進行了一點更改,Sqoop可能也需要較長時間來載入。
而Hadoop Applier則會讀取二進位日誌,只應用MySQL伺服器上發生的事件,並插入資料,不需要批量傳輸,操作更快,因此並不影響其他查詢的執行速度。
實現
Applier使用一個由libhdfs(用於操作HDFS中檔案的C庫)提供的API。即時匯入的過程如所示:
資料庫被映射作為一個單獨的目錄,它們的表被映射作為子目錄和一個Hive資料倉儲目錄。插入到每個表中的資料被寫入文字檔(命名如datafile1.txt),資料以逗號或其他符號分割(可通過命令列進行配置)。
詳細資料:MySQL Applier for Hadoop
:mysql-hadoop-applier-0.1.0-alpha.tar.gz(alpha版本,不可用於生產環境)