實(shí)時(shí)同步單表數(shù)據(jù)時(shí),當(dāng)輸入數(shù)據(jù)源為MySQL時(shí),執(zhí)行同步任務(wù)前,您需要參考本文在數(shù)據(jù)源中配置好網(wǎng)絡(luò)、白名單等配置,為后續(xù)的數(shù)據(jù)同步做好網(wǎng)絡(luò)環(huán)境和賬號(hào)權(quán)限的準(zhǔn)備。

前提條件

配置數(shù)據(jù)源之前,請(qǐng)確保已完成以下規(guī)劃與準(zhǔn)備工作。
  • 準(zhǔn)備數(shù)據(jù)源:已購(gòu)買輸入數(shù)據(jù)源MySQL、輸出數(shù)據(jù)源。輸出數(shù)據(jù)源可以為MaxCompute、Hologres、Elasticsearch、DataHub及Kafka。
  • 資源規(guī)劃與準(zhǔn)備:已購(gòu)買獨(dú)享數(shù)據(jù)集成資源組,并完成資源配置。詳情可參見(jiàn)資源規(guī)劃與配置
  • 網(wǎng)絡(luò)環(huán)境評(píng)估與規(guī)劃:進(jìn)行數(shù)據(jù)集成前,您需根據(jù)業(yè)務(wù)情況,打通數(shù)據(jù)源、獨(dú)享數(shù)據(jù)集成資源組之間的網(wǎng)絡(luò),網(wǎng)絡(luò)聯(lián)通后參考本文進(jìn)行交換機(jī)、白名單等網(wǎng)絡(luò)環(huán)境下的訪問(wèn)配置。
    • 如果數(shù)據(jù)源和獨(dú)享數(shù)據(jù)集成資源組均處于同地域的同一VPC網(wǎng)絡(luò)中,數(shù)據(jù)源與資源組間的網(wǎng)絡(luò)天然聯(lián)通。
    • 如果數(shù)據(jù)源和獨(dú)享數(shù)據(jù)集成資源組均處于不同的網(wǎng)絡(luò)環(huán)境中,您需要通過(guò)VPN網(wǎng)關(guān)等方式,將數(shù)據(jù)源與資源組間的網(wǎng)絡(luò)打通。

背景信息

同步輸入數(shù)據(jù)源的數(shù)據(jù)至輸出數(shù)據(jù)源時(shí),您需要保障數(shù)據(jù)源與DataWorks的獨(dú)享數(shù)據(jù)集成資源組在網(wǎng)絡(luò)上是聯(lián)通的,且不存在賬號(hào)權(quán)限的訪問(wèn)限制。
  • 以下以使用同一VPC網(wǎng)絡(luò)環(huán)境為例,您需要將數(shù)據(jù)集成資源組所在的VPC網(wǎng)段添加至白名單中,保障數(shù)據(jù)集成資源組可訪問(wèn)數(shù)據(jù)源。實(shí)時(shí)同步單表數(shù)據(jù)(MySQL)
  • 賬號(hào)權(quán)限

    您需要規(guī)劃一個(gè)可訪問(wèn)數(shù)據(jù)源的賬號(hào),用于后續(xù)數(shù)據(jù)集成過(guò)程中訪問(wèn)數(shù)據(jù)源并進(jìn)行數(shù)據(jù)提取、寫入的同步操作。

  • 其他訪問(wèn)限制。

    來(lái)源數(shù)據(jù)源為MySQL時(shí),您需要開(kāi)啟Binlog。Binlog是記錄所有數(shù)據(jù)庫(kù)表結(jié)構(gòu)變更(例如執(zhí)行CREATE、ALTER操作)以及表數(shù)據(jù)修改(例如執(zhí)行INSERT、UPDATE、DELETE等)的日志。方便您可以通過(guò)Binlog日志中的內(nèi)容,查看數(shù)據(jù)庫(kù)的變更歷史、進(jìn)行數(shù)據(jù)庫(kù)增量備份和恢復(fù)以及主從數(shù)據(jù)庫(kù)的復(fù)制。

    Binlog日志的格式如下:
    • Statement:基于SQL語(yǔ)句的復(fù)制。Binlog中會(huì)保存每條修改數(shù)據(jù)的SQL語(yǔ)句。
    • Row:基于行的復(fù)制。Binlog中不保存SQL語(yǔ)句上下文的相關(guān)信息,僅保存被修改的記錄。
    • Mixed:混合模式復(fù)制。Statement與Row的結(jié)合,一般的語(yǔ)句修改使用Statement格式(例如函數(shù)),Statement無(wú)法完成復(fù)制的操作,則采用Row格式保存Binlog。MySQL會(huì)根據(jù)執(zhí)行的每條SQL語(yǔ)句自主識(shí)別使用哪種格式。

使用限制

  • DataWorks的數(shù)據(jù)集成實(shí)時(shí)同步MySQL數(shù)據(jù)是基于實(shí)時(shí)訂閱MySQL實(shí)現(xiàn)的,實(shí)時(shí)同步MySQL數(shù)據(jù)目前僅支持配置MySQL數(shù)據(jù)源為RDS的5.x8.x版本的MySQL,請(qǐng)不要將DRDS的MySQL配置為MySQL數(shù)據(jù)源,您可以參考配置DRDS數(shù)據(jù)源文檔直接將其配置為DRDS數(shù)據(jù)源。
  • 不支持XA ROLLBACK,針對(duì)已經(jīng)XA PREPARE的事務(wù)數(shù)據(jù),實(shí)時(shí)同步會(huì)將其同步到目標(biāo)端,如果XA ROLLBACK,實(shí)時(shí)同步不會(huì)針對(duì)XA PREPARE的數(shù)據(jù)做回滾寫入的操作。若要處理XA ROLLBACK場(chǎng)景,需要手動(dòng)將XA ROLLBACK的表從實(shí)時(shí)同步任務(wù)中移除,再添加表后重新進(jìn)行全量數(shù)據(jù)初始化以及增量實(shí)時(shí)同步。
  • 在添加MySQL數(shù)據(jù)源時(shí),若添加了其他阿里云賬號(hào)下的MySQL實(shí)例,后續(xù)同步任務(wù)配置該數(shù)據(jù)源時(shí),僅支持使用獨(dú)享數(shù)據(jù)集成資源組運(yùn)行該同步任務(wù),公共資源組無(wú)法訪問(wèn)該數(shù)據(jù)源中的數(shù)據(jù)。

操作步驟

  1. 配置白名單。
    將獨(dú)享數(shù)據(jù)資源組所在的VPC網(wǎng)段添加至MySQL的白名單中,操作如下:
    1. 查看并記錄獨(dú)享數(shù)據(jù)資源組所在的VPC網(wǎng)絡(luò)。
      1. 登錄DataWorks控制臺(tái)
      2. 在左側(cè)導(dǎo)航欄,單擊資源組列表
      3. 獨(dú)享資源組頁(yè)簽下,單擊目標(biāo)數(shù)據(jù)集成資源組后的查看信息
      4. 復(fù)制對(duì)話框中的EIP地址網(wǎng)段至數(shù)據(jù)庫(kù)白名單。查看EIP地址和網(wǎng)段
      5. 獨(dú)享資源組頁(yè)簽下,單擊目標(biāo)數(shù)據(jù)集成資源組后的網(wǎng)絡(luò)設(shè)置
      6. 專有網(wǎng)絡(luò)綁定頁(yè)簽,查看交換機(jī)網(wǎng)段并將其添加至數(shù)據(jù)庫(kù)的白名單中。查看交換機(jī)網(wǎng)段
    2. 將上述步驟中記錄的獨(dú)享數(shù)據(jù)集成資源組的EIP地址和網(wǎng)段添加至MySQL集群的白名單中。
  2. 創(chuàng)建賬號(hào)并配置賬號(hào)權(quán)限。
    您需要規(guī)劃一個(gè)數(shù)據(jù)庫(kù)的登錄賬號(hào)用于后續(xù)執(zhí)行操作,此賬號(hào)需要擁有數(shù)據(jù)庫(kù)的 SELECT, REPLICATION SLAVE, REPLICATION CLIENT權(quán)限。
    1. 創(chuàng)建賬號(hào)。
      操作詳情請(qǐng)參見(jiàn)創(chuàng)建MySQL賬號(hào)
    2. 配置權(quán)限。
      您可以參考以下命令為賬號(hào)添加此權(quán)限,或直接給賬號(hào)賦予SUPER權(quán)限。如下執(zhí)行語(yǔ)句在實(shí)際使用時(shí),請(qǐng)?zhí)鎿Q'同步賬號(hào)'為上述創(chuàng)建的賬號(hào)。
      -- CREATE USER '同步賬號(hào)'@'%' IDENTIFIED BY '密碼'; //創(chuàng)建同步賬號(hào)并設(shè)置密碼,使其可以通過(guò)任意主機(jī)登錄數(shù)據(jù)庫(kù)。%表示任意主機(jī)。
      GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '同步賬號(hào)'@'%'; //授權(quán)同步賬號(hào)數(shù)據(jù)庫(kù)的 SELECT, REPLICATION SLAVE, REPLICATION CLIENT權(quán)限。
      *.*表示授權(quán)同步賬號(hào)對(duì)所有數(shù)據(jù)庫(kù)的所有表?yè)碛猩鲜鰴?quán)限。您也可以指定授權(quán)同步賬號(hào)對(duì)目標(biāo)數(shù)據(jù)庫(kù)的指定表?yè)碛猩鲜鰴?quán)限。例如,授權(quán)同步賬號(hào)對(duì)test數(shù)據(jù)庫(kù)的user表?yè)碛猩鲜鰴?quán)限,則可以使用GRANT SELECT, REPLICATION CLIENT ON test.user TO '同步賬號(hào)'@'%';語(yǔ)句。
      說(shuō)明 REPLICATION SLAVE語(yǔ)句為全局權(quán)限,不能指定授權(quán)同步賬號(hào)對(duì)目標(biāo)數(shù)據(jù)庫(kù)的指定表?yè)碛邢嚓P(guān)權(quán)限。
  3. 開(kāi)啟MySQL的Binlog。
    檢查Binlog是否開(kāi)啟并查詢Binlog格式,操作如下:
    • 使用如下語(yǔ)句檢查Binlog是否開(kāi)啟。
      show variables like "log_bin";

      返回結(jié)果為ON時(shí),表明已開(kāi)啟Binlog。

    • 如果您使用備用庫(kù)同步數(shù)據(jù),則還可以通過(guò)如下語(yǔ)句檢查Binlog是否開(kāi)啟。
      show variables like "log_slave_updates";

      返回結(jié)果為ON時(shí),表明備用庫(kù)已開(kāi)啟Binlog。

    如果返回的結(jié)果與上述結(jié)果不符,請(qǐng)參考MySQL官方文檔開(kāi)啟Binlog。
    使用如下語(yǔ)句查詢Binlog的使用格式。
    show variables like "binlog_format";
    返回結(jié)果說(shuō)明:
    • 返回ROW,表明開(kāi)啟的Binlog格式為ROW
    • 返回STATEMENT,表明開(kāi)啟的Binlog格式為STATEMENT
    • 返回MIXED,表明開(kāi)啟的Binlog格式為MIXED

后續(xù)步驟

配置完成數(shù)據(jù)源后,輸入數(shù)據(jù)源、資源實(shí)例、輸出數(shù)據(jù)源彼此間已可網(wǎng)絡(luò)聯(lián)通,且不存在訪問(wèn)限制。您可將輸入數(shù)據(jù)源和輸出數(shù)據(jù)源添加至DataWorks的數(shù)據(jù)源列表中,便于后續(xù)創(chuàng)建數(shù)據(jù)同步方案時(shí)關(guān)聯(lián)輸入和輸出數(shù)據(jù)源。添加數(shù)據(jù)源操作可參見(jiàn)添加數(shù)據(jù)源