日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

MySQL數據源

MySQL數據源為您提供讀取和寫入MySQL的雙向通道,本文為您介紹DataWorks的MySQL數據同步的能力支持情況。

支持的MySQL版本

  • 離線讀寫:

    支持MySQL 5.5.x、MySQL 5.6.x、MySQL 5.7.x、MySQL 8.0.x,兼容Amazon RDS for MySQLAzure MySQLAmazon Aurora MySQL

    離線同步支持讀取視圖表。

  • 實時讀取:

    數據集成實時讀取MySQL數據是基于實時訂閱MySQL實現的,當前僅支持實時同步MySQL 5.5.x、MySQL 5.6.x、MySQL 5.7.x、MySQL 8.0.x(非8.0新特性,比如functional index,僅兼容原有功能)版本的MySQL數據,兼容Amazon RDS for MySQLAzure MySQLAmazon Aurora MySQL

    重要

    如果需要同步DRDS的MySQL,請不要將DRDS的MySQL配置為MySQL數據源,您可以參考配置DRDS數據源文檔直接將其配置為DRDS數據源。

使用限制

實時讀

  • 不支持同步MySQL只讀庫實例的數據。

  • 不支持同步含有Functional index的表。

  • 不支持XA ROLLBACK。

    針對已經XA PREPARE的事務數據,實時同步會將其同步到目標端,如果XA ROLLBACK,實時同步不會針對XA PREPARE的數據做回滾寫入的操作。若要處理XA ROLLBACK場景,需要手動將XA ROLLBACK的表從實時同步任務中移除,再添加表后重新進行同步。

  • 僅支持同步MySQL服務器Binlog配置格式為ROW。

  • 實時同步不會同步被級聯刪除的關聯表記錄。

  • 對于Amazon Aurora MySQL數據庫,需要連接到您的主/寫數據庫,因為AWS不允許在Aurora MySQL的只讀副本上激活binlog功能。實時同步任務需要binlog來執行增量更新。

  • 實時同步在線DDL變更僅支持通過數據管理DMS對MySQL表進行加列(Add Column)在線DDL變更。

離線讀

MySQL Reader插件在進行分庫分表等多表同步時,若要對單表進行切分,則需要滿足任務并發數大于表個數這一條件,否則切分的Task數目等于表的個數。

支持的字段類型

各版本MySQL的全量字段類型請參見MySQL官方文檔。以下以MySQL 8.0.x為例,為您羅列當前主要字段的支持情況。

字段類型

離線讀(MySQL Reader)

離線寫(MySQL Writer)

實時讀

實時寫

TINYINT

支持

支持

支持

支持

SMALLINT

支持

支持

支持

支持

INTEGER

支持

支持

支持

支持

BIGINT

支持

支持

支持

支持

FLOAT

支持

支持

支持

支持

DOUBLE

支持

支持

支持

支持

DECIMAL/NUMBERIC

支持

支持

支持

支持

REAL

不支持

不支持

不支持

不支持

VARCHAR

支持

支持

支持

支持

JSON

支持

支持

支持

支持

TEXT

支持

支持

支持

支持

MEDIUMTEXT

支持

支持

支持

支持

LONGTEXT

支持

支持

支持

支持

VARBINARY

支持

支持

支持

支持

BINARY

支持

支持

支持

支持

TINYBLOB

支持

支持

支持

支持

MEDIUMBLOB

支持

支持

支持

支持

LONGBLOB

支持

支持

支持

支持

ENUM

支持

支持

支持

支持

SET

支持

支持

支持

支持

BOOLEAN

支持

支持

支持

支持

BIT

支持

支持

支持

支持

DATE

支持

支持

支持

支持

DATETIME

支持

支持

支持

支持

TIMESTAMP

支持

支持

支持

支持

TIME

支持

支持

支持

支持

YEAR

支持

支持

支持

支持

LINESTRING

不支持

不支持

不支持

不支持

POLYGON

不支持

不支持

不支持

不支持

MULTIPOINT

不支持

不支持

不支持

不支持

MULTILINESTRING

不支持

不支持

不支持

不支持

MULTIPOLYGON

不支持

不支持

不支持

不支持

GEOMETRYCOLLECTION

不支持

不支持

不支持

不支持

數據同步前準備:MySQL環境準備

在DataWorks上進行數據同步前,您需要參考本文提前在MySQL側進行數據同步環境準備,以便在DataWorks上進行MySQL數據同步任務配置與執行時服務正常。以下為您介紹MySQL同步前的相關環境準備。

準備工作1:確認MySQL版本

數據集成對MySQL版本有要求,您可參考上文支持的MySQL版本章節,查看當前待同步的MySQL是否符合版本要求。您可以在MySQL數據庫通過如下語句查看當前MySQL數據庫版本。

SELECT version();

準備工作2:配置賬號權限

建議您提前規劃并創建一個專用于DataWorks訪問數據源的MySQL賬號,操作如下。

  1. 可選:創建賬號。

    操作詳情請參見創建MySQL賬號

  2. 配置權限。

    • 離線

      在離線同步場景下:

      • 在離線讀MySQL數據時,此賬號需擁有同步表的讀(SELECT)權限。

      • 在離線寫MySQL數據時,此賬號需擁有同步表的寫(INSERTDELETEUPDATE)權限。

    • 實時

      在實時同步場景下,此賬號需要擁有數據庫的SELECTREPLICATION SLAVEREPLICATION CLIENT權限。

    您可以參考以下命令為賬號添加權限,或直接給賬號賦予SUPER權限。如下執行語句在實際使用時,請替換'同步賬號'為上述創建的賬號。

    -- CREATE USER '同步賬號'@'%' IDENTIFIED BY '密碼'; //創建同步賬號并設置密碼,使其可以通過任意主機登錄數據庫。%表示任意主機。
    GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '同步賬號'@'%'; //授權同步賬號數據庫的 SELECT, REPLICATION SLAVE, REPLICATION CLIENT權限。

    *.*表示授權同步賬號對所有數據庫的所有表擁有上述權限。您也可以指定授權同步賬號對目標數據庫的指定表擁有上述權限。例如,授權同步賬號對test數據庫的user表擁有上述權限,則可以使用GRANT SELECT, REPLICATION CLIENT ON test.user TO '同步賬號'@'%';語句。

    說明

    REPLICATION SLAVE語句為全局權限,不能指定授權同步賬號對目標數據庫的指定表擁有相關權限。

準備工作3:(僅實時同步需要)開啟MySQL Binlog

數據集成通過實時訂閱MySQL Binlog實現增量數據實時同步,您需要在DataWorks配置同步前,先開啟MySQL Binlog服務。操作如下:

重要
  • 如果Binlog在消費中,則無法被數據庫刪除。如果實時同步任務運行延遲將可能導致源端Binlog長時間被消費,請合理配置任務的延遲告警,并及時關注數據庫的磁盤空間。

  • Binlog至少保留72小時以上,避免任務失敗后因Binlog已經消失,再啟動無法重置位點到故障發生前而導致的數據丟失(此時只能使用全量離線同步來補齊數據)。

  1. 檢查Binlog是否開啟。

    • 使用如下語句檢查Binlog是否開啟。

      SHOW variables like "log_bin";

      返回結果為ON時,表明已開啟Binlog。

    • 如果您使用備用庫同步數據,則還可以通過如下語句檢查Binlog是否開啟。

      SHOW variables LIKE "log_slave_updates";

      返回結果為ON時,表明備用庫已開啟Binlog。

    如果返回的結果與上述結果不符:

  2. 查詢Binlog的使用格式。

    使用如下語句查詢Binlog的使用格式。

    SHOW variables LIKE "binlog_format";

    返回結果說明:

    • 返回ROW,表示開啟的Binlog格式為ROW

    • 返回STATEMENT,表示開啟的Binlog格式為STATEMENT

    • 返回MIXED,表示開啟的Binlog格式為MIXED

    重要

    DataWorks實時同步僅支持同步MySQL服務器Binlog配置格式為ROW。如果返回非ROW請修改Binlog Format。

  3. 查詢Binlog完整日志是否開啟。

    使用如下語句查詢Binlog完整日志是否開啟。

    show variables like "binlog_row_image";

    返回結果說明:

    • 返回FULL,表示Binlog開啟了完整日志。

    • 返回MINIMAL,表示Binlog開啟了最小日志,未開啟完整日志。

    重要

    DataWorks實時同步,僅支持同步開啟了Binlog完整日志的MySQL服務器數據。若查詢結果返回非FULL,請修改binlog_row_image的配置。

OSS binlog讀取授權配置

在添加MySQL數據源時,如果配置模式阿里云實例模式,且RDS MySQL實例地域與DataWorks項目空間在同一地域,您可以開啟支持OSS binlog讀取,開啟后,在無法訪問RDS binlog時,將會嘗試從OSS獲取binlog,以避免實時同步任務中斷。

如果選擇的OSS binlog訪問身份阿里云RAM子賬號阿里云RAM角色,您還需參考如下方式配置賬號授權。

阿里云RAM子賬號
  1. 登錄RAM 訪問控制-用戶控制臺,找到需要授權的子賬號。具體操作:

  2. 單擊操作列的添加權限

  3. 配置如下關鍵參數后,單擊確認新增授權

    • 資源范圍:賬號級別。

    • 權限策略:系統策略。

    • 策略名稱AliyunDataWorksAccessingRdsOSSBinlogPolicy

    image

阿里云RAM角色
  1. 登錄RAM 訪問控制-角色控制臺,創建一個RAM角色。具體操作,請參見創建可信實體為阿里云賬號的RAM角色

    關鍵參數:

    • 選擇可信實體類型:阿里云賬號。

    • 角色名稱:自定義。

    • 選擇信任的云賬號:其他賬號,填寫DataWorks工作空間所屬的云賬號。

  2. 為創建好的RAM角色精確授權。具體操作,請參見為RAM角色授權

    關鍵參數:

    • 權限策略:系統策略。

    • 策略名稱AliyunDataWorksAccessingRdsOSSBinlogPolicy

  3. 為創建好的RAM角色修改信任策略。具體操作,請參見修改RAM角色的信任策略

    {
        "Statement": [
            {
                "Action": "sts:AssumeRole",
                "Effect": "Allow",
                "Principal": {
                    "Service": [
                        "<DataWorks使用者主賬號的云賬號ID>@cdp.aliyuncs.com"
                    ]
                }
            }
        ],
        "Version": "1"
    }

創建數據源

在進行數據同步任務開發時,您需要在DataWorks上創建一個對應的數據源,操作流程請參見創建并管理數據源詳細的配置參數解釋可在配置界面查看對應參數的文案提示

數據同步任務開發:MySQL同步流程引導

數據同步任務的配置入口和通用配置流程可參見下文的配置指導。

單表離線同步任務配置指導

單表實時同步任務配置指導

操作流程請參見DataStudio側實時同步任務配置

整庫離線、整庫(實時)全增量、整庫(實時)分庫分表等整庫級別同步配置指導

操作流程請參見數據集成側同步任務配置

常見問題

更多其他數據集成常見問題請參見數據集成常見問題

附錄:MySQL腳本Demo與參數說明

離線任務腳本配置方式

如果您配置離線任務時使用腳本模式的方式進行配置,您需要按照統一的腳本格式要求,在任務腳本中編寫相應的參數,詳情請參見通過腳本模式配置離線同步任務,以下為您介紹腳本模式下數據源的參數配置詳情。

Reader腳本Demo

本文為您提供單庫單表和分庫分表的配置示例:

說明

本文JSON示例中的注釋僅用于展示部分重要參數含義,實際配置時,請移除注釋內容。

  • 配置單庫單表

    {
      "type": "job",
      "version": "2.0",//版本號。
      "steps": [
        {
          "stepType": "mysql",//插件名。
          "parameter": {
            "column": [//列名。
              "id"
            ],
            "connection": [
              {
                "querySql": [
                  "select a,b from join1 c join join2 d on c.id = d.id;"
                ],
                "datasource": ""http://數據源名稱。
              }
            ],
            "where": "",//過濾條件。
            "splitPk": "",//切分鍵。
            "encoding": "UTF-8"http://編碼格式。
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "stream",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        }
      ],
      "setting": {
        "errorLimit": {
          "record": "0"http://錯誤記錄數。
        },
        "speed": {
          "throttle": true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
          "concurrent": 1,//作業并發數。
          "mbps": "12"http://限流,此處1mbps = 1MB/s。
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }
  • 配置分庫分表

    說明

    分庫分表是指在MySQL Reader端可以選擇多個MySQL數據表,且表結構保持一致。此處的‘分庫分表’是指多個MySQL寫入同一個目標表,如想要支持整庫級別配置分庫分表,還請在數據集成站點建立任務并選擇整庫分庫分表能力

    {
      "type": "job",
      "version": "2.0",
      "steps": [
        {
          "stepType": "mysql",
          "parameter": {
            "indexes": [
              {
                "type": "unique",
                "column": [
                  "id"
                ]
              }
            ],
            "envType": 0,
            "useSpecialSecret": false,
            "column": [
              "id",
              "buyer_name",
              "seller_name",
              "item_id",
              "city",
              "zone"
            ],
            "tableComment": "測試訂單表",
            "connection": [
              {
                "datasource": "rds_dataservice",
                "table": [
                  "rds_table"
                ]
              },
              {
                "datasource": "rds_workshop_log",
                "table": [
                  "rds_table"
                ]
              }
            ],
            "where": "",
            "splitPk": "id",
            "encoding": "UTF-8"
          },
          "name": "Reader",
          "category": "reader"
        },
        {
          "stepType": "odps",
          "parameter": {},
          "name": "Writer",
          "category": "writer"
        },
        {
          "name": "Processor",
          "stepType": null,
          "category": "processor",
          "copies": 1,
          "parameter": {
            "nodes": [],
            "edges": [],
            "groups": [],
            "version": "2.0"
          }
        }
      ],
      "setting": {
        "executeMode": null,
        "errorLimit": {
          "record": ""
        },
        "speed": {
          "concurrent": 2,
          "throttle": false
        }
      },
      "order": {
        "hops": [
          {
            "from": "Reader",
            "to": "Writer"
          }
        ]
      }
    }

Reader腳本參數

腳本參數名

描述

是否必選

默認值

datasource

數據源名稱,腳本模式支持添加數據源,此配置項填寫的內容必須與添加的數據源名稱保持一致。

table

選取的需要同步的表名稱。一個數據集成任務只能從一張表中讀取數據。

table用于配置范圍的高級用法示例如下:

  • 您可以通過配置區間讀取分庫分表,例如'table_[0-99]'表示讀取'table_0''table_1''table_2'直到'table_99'

  • 如果您的表數字后綴的長度一致,例如'table_000''table_001''table_002'直到'table_999',您可以配置為'"table": ["table_00[0-9]", "table_0[10-99]", "table_[100-999]"]'

說明

任務會讀取匹配到的所有表,具體讀取這些表中column配置項指定的列。如果表不存在,或者讀取的列不存在,會導致任務失敗。

column

所配置的表中需要同步的列名集合,使用JSON的數組描述字段信息 。默認使用所有列配置,例如[ * ]。

  • 支持列裁剪:列可以挑選部分列進行導出。

  • 支持列換序:列可以不按照表schema信息順序進行導出。

  • 支持常量配置:您需要按照MySQL SQL語法格式,例如["id","table","1","'mingya.wmy'","'null'","to_char(a+1)","2.3","true"]

    • id為普通列名。

    • table為包含保留字的列名。

    • 1為整型數字常量。

    • 'mingya.wmy'為字符串常量(注意需要加上一對單引號)。

    • 關于null

      • " "表示空。

      • null表示null。

      • 'null'表示null這個字符串。

    • to_char(a+1)為計算字符串長度函數。

    • 2.3為浮點數。

    • true為布爾值。

  • column必須顯示指定同步的列集合,不允許為空。

splitPk

MySQL Reader進行數據抽取時,如果指定splitPk,表示您希望使用splitPk代表的字段進行數據分片,數據同步因此會啟動并發任務進行數據同步,提高數據同步的效能。

  • 推薦splitPk用戶使用表主鍵,因為表主鍵通常情況下比較均勻,因此切分出來的分片也不容易出現數據熱點。

  • 目前splitPk僅支持整型數據切分,不支持字符串、浮點和日期等其他類型 。如果您指定其他非支持類型,忽略splitPk功能,使用單通道進行同步。

  • 如果不填寫splitPk,包括不提供splitPk或者splitPk值為空,數據同步視作使用單通道同步該表數據 。

where

篩選條件,在實際業務場景中,往往會選擇當天的數據進行同步,將where條件指定為gmt_create>$bizdate

  • where條件可以有效地進行業務增量同步。如果不填寫where語句,包括不提供where的key或value,數據同步均視作同步全量數據。

  • 不可以將where條件指定為limit 10,這不符合MySQL SQL WHERE子句約束。

querySql(高級模式,向導模式不支持此參數的配置)

在部分業務場景中,where配置項不足以描述所篩選的條件,您可以通過該配置型來自定義篩選SQL。配置該項后,數據同步系統會忽略tables、columns和splitPk配置項,直接使用該項配置的內容對數據進行篩選。例如,需要進行多表join后同步數據,使用select a,b from table_a join table_b on table_a.id = table_b.id。當您配置querySql時,MySQL Reader直接忽略table、column、where和splitPk條件的配置,querySql優先級大于tablecolumnwheresplitPk選項。datasource通過它解析出用戶名和密碼等信息。

說明

querySql需要區分大小寫,例如,寫為querysql會不生效。

useSpecialSecret

多來源數據源時,是否使用各自數據源的密碼。取值包括:

  • true

  • false

如果您配置了多個來源數據源,且各個數據源使用的用戶名密碼不一致,您可以設置使用各自數據源的密碼,即此參數設置為true

false

Writer腳本Demo

{
  "type": "job",
  "version": "2.0",//版本號。
  "steps": [
    {
      "stepType": "stream",
      "parameter": {},
      "name": "Reader",
      "category": "reader"
    },
    {
      "stepType": "mysql",//插件名。
      "parameter": {
        "postSql": [],//導入后的準備語句。
        "datasource": "",//數據源。
        "column": [//列名。
          "id",
          "value"
        ],
        "writeMode": "insert",//寫入模式,您可以設置為insert、replace或update。
        "batchSize": 1024,//一次性批量提交的記錄數大小。
        "table": "",//表名。
        "nullMode": "skipNull",//NULL值處理策略。
        "skipNullColumn": [//需要跳過NULL值的列。
          "id",
          "value"
        ],
        "preSql": [
          "delete from XXX;"http://導入前的準備語句。
        ]
      },
      "name": "Writer",
      "category": "writer"
    }
  ],
  "setting": {
    "errorLimit": {//錯誤記錄數。
      "record": "0"
    },
    "speed": {
      "throttle": true,//當throttle值為false時,mbps參數不生效,表示不限流;當throttle值為true時,表示限流。
      "concurrent": 1,//作業并發數。
      "mbps": "12"http://限流,控制同步的最高速率,防止對上游/下游數據庫讀取/寫入壓力過大,此處1mbps = 1MB/s。
    }
  },
  "order": {
    "hops": [
      {
        "from": "Reader",
        "to": "Writer"
      }
    ]
  }
}

Writer腳本參數

腳本參數名

描述

是否必選

默認值

datasource

數據源名稱,腳本模式支持添加數據源,此配置項填寫的內容必須與添加的數據源名稱保持一致。

table

選取的需要同步的表名稱。

writeMode

選擇導入模式,可以支持insert intoon duplicate key updatereplace into三種方式:

  • insert into:當主鍵/唯一性索引沖突時會寫不進去沖突的行,以臟數據的形式體現。

    如果您通過腳本模式配置任務,請設置writeModeinsert

  • on duplicate key update:沒有遇到主鍵/唯一性索引沖突時,與insert into行為一致。沖突時會用新行替換已經指定的字段的語句,寫入數據至MySQL。

    如果您通過腳本模式配置任務,請設置writeModeupdate

  • replace into:沒有遇到主鍵/唯一性索引沖突時,與insert into行為一致。沖突時會先刪除原有行,再插入新行。即新行會替換原有行的所有字段。

    如果您通過腳本模式配置任務,請設置writeModereplace

insert

nullMode

NULL值處理策略,取值范圍:

  • writeNull:當源端字段數據是NULL值時,給目標端字段寫入NULL值。

  • skipNull:當源端字段數據是NULL值時,目標端不寫入本字段,若目標端有默認值定義,該列值會使用目標端默認值,若目標端無默認值定義,該列值會是NULL。配置此參數時,需要同時配置skipNullColumn參數。

重要

配置為skipNull時,任務會動態拼接寫數據的SQL語句以支持目標端默認值,會增多FLUSH次數,降低同步速度,最差情況下會每條數據FLUSH一次。

writeNull

skipNullColumn

nullMode配置為skipNull時,此參數配置的列不會被強制寫為NULL,會優先使用對應列本身的默認值。

配置格式:["c1", "c2", ...],其中,c1c2需要配置為column參數的子集。

默認為本任務配置的所有列。

column

目標表需要寫入數據的字段,字段之間用英文所逗號分隔,例如"column": ["id", "name", "age"]。如果要依次寫入全部列,使用星號(*)表示, 例如"column": ["*"]

preSql

執行數據同步任務之前率先執行的SQL語句。目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句。例如,執行前清空表中的舊數據(truncate table tablename)。

說明

當有多條SQL語句時,不支持事務。

postSql

執行數據同步任務之后執行的SQL語句,目前向導模式僅允許執行一條SQL語句,腳本模式可以支持多條SQL語句。例如,加上某一個時間戳alter table tablename add colname timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

說明

當有多條SQL語句時,不支持事務。

batchSize

一次性批量提交的記錄數大小,該值可以極大減少數據同步系統與MySQL的網絡交互次數,并提升整體吞吐量。如果該值設置過大,會導致數據同步運行進程OOM異常。

256

updateColumn

writeMode配置成update時,發生遇到主鍵/唯一性索引沖突時所更新的字段。字段之間用英文逗號所分隔,例如 "updateColumn":["name", "age"]