datax datax-web 同步 mysql 數(shù)據(jù)(單機(jī)部署)

版本說(shuō)明
datax 3.0
datax-web 2.1.2
mysql MySQL8 MariaDB10

datax 部署

  1. 準(zhǔn)備環(huán)境: linux, java8, python3
    需要 java 和 jps
    sudo update-alternatives --install /usr/bin/java java /usr/lib/jdk/jdk/bin/java 300
    sudo update-alternatives --install /usr/bin/jps jps /usr/lib/jdk/jdk/bin/jps 300

其中, /usr/lib/jdk/jdk/ 是 jdk 的安裝位置

  1. 下載,官方github給出了編譯后的jar壓縮包地址 datax.tar.gz
    源碼編譯打包使用 maven 命令 mvn -U clean package assembly:assembly -Dmaven.test.skip=true
    結(jié)果在 target 里, 和下載的 一樣是 datax.tar.gz

  2. 解壓到自己希望的位置上 tar -zxvf datax3.tar.gz

  3. (可選) 替換 python3 適用的腳本. 把 bin 下的三個(gè)文件替換為 datax-web 提供的 python3 版本

  4. 測(cè)試 datax 命令行. 在 datax 目錄下
    python3 bin/datax.py job/job.json
    有如下輸出即表示成功(當(dāng)然這只是從memery讀,寫(xiě)到console的這一種)

2021-09-27 18:37:26.012 [job-0] INFO  JobContainer - 
任務(wù)啟動(dòng)時(shí)刻                    : 2021-09-27 18:37:15
任務(wù)結(jié)束時(shí)刻                    : 2021-09-27 18:37:26
任務(wù)總計(jì)耗時(shí)                    :                 10s
任務(wù)平均流量                    :          253.91KB/s
記錄寫(xiě)入速度                    :          10000rec/s
讀出記錄總數(shù)                    :              100000
讀寫(xiě)失敗總數(shù)                    :                   0
  1. 替換 mysql 驅(qū)動(dòng)為 8.x. 見(jiàn)后文注意

datax-web 部署

  1. 下載源碼 git@github.com:WeiYe-Jing/datax-web.git

  2. 編譯打包 mvn clean install (百度網(wǎng)盤的下載速度還不如clone編譯的快呢)

  3. 解壓到希望的位置 tar -zxvf datax-web-2.1.2.tar.gz

  4. 執(zhí)行 ./bin/install.sh
    按照提示初始話 datax-web 自己的配置數(shù)據(jù)庫(kù)

  5. 配置datax (我這里忽略了email 的配置)
    vim modules/datax-executor/bin/env.properties

## PYTHON腳本執(zhí)行位置
#PYTHON_PATH=/home/hadoop/install/datax/bin/datax.py
PYTHON_PATH=/home/aaa/bin/datax3/bin/datax.py

如果使用 python3, 把要使用的 python 放到 PATH 的前面(注意 PATH 里要能找到 python 命令, python3不行,盡管在datax里#! 指定了 python3)
vim modules/datax-executor/bin/datax-executor.sh

PATH=/opt/minconda/mypyenv/bin:$PATH

修改了環(huán)境變量需要重啟服務(wù)

  1. 替換 mysql 驅(qū)動(dòng)為 8.x. 見(jiàn)后文注意

datax-web 使用

  1. 啟動(dòng) web 服務(wù)
    啟動(dòng)服務(wù) ./bin/start-all.sh
    停止服務(wù) ./bin/stop-all.sh
    jps 查看服務(wù), 如果存在下面兩個(gè)進(jìn)程,即成功運(yùn)行
    DataXAdminApplication
    DataXExecutorApplication

  2. 訪問(wèn) web 服務(wù)
    訪問(wèn)(注意后面的路徑/index.html 不能丟,這里沒(méi)有默認(rèn)重定向)
    http://ip:9527/index.html
    默認(rèn)用戶名 admin 密碼 123456
    登錄后在 "用戶管理" 里修改密碼

  3. 執(zhí)行數(shù)據(jù)同步,依次進(jìn)行如下操作
    創(chuàng)建項(xiàng)目
    添加數(shù)據(jù)源
    創(chuàng)建任務(wù)模板
    任務(wù)構(gòu)建(有坑,見(jiàn)后文)
    任務(wù)管理里啟動(dòng)任務(wù)
    日志管理里查看執(zhí)行日志

datax 命令行使用

執(zhí)行一次數(shù)據(jù)同步
python3 bin/datax.py job/stream2stream.json

查看 job 配置模板
python3 bin/datax.py -r mysqlreader -w mysqlwriter
其中, -r 參數(shù)指定使用的 reader, -w 參數(shù)指定使用的 writer. 有哪些 reader writer 可以查看 plugin 目錄.

注意

  • jdbcUrl 需要參數(shù) serverTimezone=Asia/Shanghai, 否則會(huì)有類似下面的報(bào)錯(cuò)報(bào)錯(cuò):
Code:[DBUtilErrorCode-10], Description:[連接數(shù)據(jù)庫(kù)失敗. 請(qǐng)檢查您的 賬號(hào)、密碼、數(shù)據(jù)庫(kù)名稱乏矾、IP蔓彩、Port或者向 DBA 尋求幫助(注意網(wǎng)絡(luò)環(huán)境).]. - 具體錯(cuò)誤信息為:...

2021-09-27 01:14:32 [AnalysisStatistics.analysisStatisticsLog-53] 2021-09-27 01:14:32.737 [job-0] ERROR RetryUtil - Exception when calling callable, 異常Msg:Code:[DBUtilErrorCode-10], Description:[連接數(shù)據(jù)庫(kù)失敗. 請(qǐng)檢查您的 賬號(hào)摔寨、密碼绪撵、數(shù)據(jù)庫(kù)名稱、IP境蔼、Port或者向 DBA 尋求幫助(注意網(wǎng)絡(luò)環(huán)境).].  -  具體錯(cuò)誤信息為:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
2021-09-27 01:14:32 [AnalysisStatistics.analysisStatisticsLog-53] com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-10], Description:[連接數(shù)據(jù)庫(kù)失敗. 請(qǐng)檢查您的 賬號(hào)厅贪、密碼蠢护、數(shù)據(jù)庫(kù)名稱、IP养涮、Port或者向 DBA 尋求幫助(注意網(wǎng)絡(luò)環(huán)境).].  -  具體錯(cuò)誤信息為:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
2021-09-27 01:14:32 [AnalysisStatistics.analysisStatisticsLog-53]   at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
  • mysql8需要更換jdbcDriver mysql-connector, 注意有三處
    1. datax里 plugin/reader/mysqlreader/libs 的 mysql-connector-java-5.1.34.jar
    2. datax里 plugin/writer/mysqlwriter/libs 的 mysql-connector-java-5.1.34.jar
    3. datax-web里 modules/datax-admin/lib 的 mysql-connector-java-5.1.47.jar
cp mysql-connector-java-8.0.22.jar ~/bin/datax3/plugin/reader/mysqlreader/libs
cp mysql-connector-java-8.0.22.jar ~/bin/datax3/plugin/writer/mysqlwriter/libs
cp mysql-connector-java-8.0.22.jar ~/bin/datax-web-2.1.2/modules/datax-admin/lib
  • jdbc驅(qū)動(dòng)類: mysql8的驅(qū)動(dòng)與之前版本不同, 注意中間的 cj. 為 com.mysql.cj.jdbc.Driver

  • job 配置里 setting 不能有 byte 參數(shù).(見(jiàn)后文)

  • job 配置 json 里的 writer 里, "writeMode": "update" 可以覆蓋更新.

  • 在 writer 里,寫(xiě)入前禁用索引,寫(xiě)入后打開(kāi)索引,可以適當(dāng)提高寫(xiě)入速度(如果業(yè)務(wù)允許的話)

下面是 mysql 的寫(xiě)法. /*!40000 xxx */是 mysql 的方言指令,不是注釋

            "preSql": [
              "LOCK TABLES `aim_table_name` WRITE",
              "/*!40000 ALTER TABLE `aim_table_name` DISABLE KEYS */"
            ],
            "postSql": [
              "/*!40000 ALTER TABLE `aim_table_name` ENABLE KEYS */",
              "UNLOCK TABLES"
            ],

job 配置示例(json里不支持注釋,這里的注釋只做說(shuō)明用)

{
  "job": {
    "setting": {
      "speed": {
        "channel": 3
        // 下面這個(gè)參數(shù)不能有了
        // , "byte": 1048576
      },
      "errorLimit": {
        "record": 0,
        "percentage": 0.02
      }
    },
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "xxx加密的",
            "password": "yyy加密的",
            "column": [
              "`id`",
              // 省略
            ],
            "splitPk": "",
            "connection": [
              {
                "table": [
                  "tab_name_from"
                ],
                "jdbcUrl": [
                  "jdbc:mysql://<ip or domain>:<port>/db_name?serverTimezone=Asia/Shanghai"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "mysqlwriter",
          "parameter": {
            "username": "aaa加密的",
            "password": "bbb加密的",
            // 對(duì)于 mysql, writeMode 為 update 時(shí)會(huì)執(zhí)行覆蓋更新
            "writeMode": "update",
            "column": [
              "`id`",
              // 省略
            ],
            // 寫(xiě)入前臨時(shí)禁用索引
            "preSql": [
              "LOCK TABLES `tab_name_to` WRITE",
              "/*!40000 ALTER TABLE `tab_name_to` DISABLE KEYS */"
            ],
            // 寫(xiě)入后打開(kāi)索引
            "postSql": [
              "/*!40000 ALTER TABLE `tab_name_to` ENABLE KEYS */",
              "UNLOCK TABLES"
            ],
            "connection": [
              {
                "table": [
                  "tab_name_to"
                ],
                "jdbcUrl": "jdbc:mysql://<ip or domain>:<port>/db_name?serverTimezone=Asia/Shanghai"
              }
            ]
          }
        }
      }
    ]
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葵硕,一起剝皮案震驚了整個(gè)濱河市眉抬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贬芥,老刑警劉巖吐辙,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蘸劈,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)尊沸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門威沫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人洼专,你說(shuō)我怎么就攤上這事棒掠。” “怎么了屁商?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵烟很,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我蜡镶,道長(zhǎng)雾袱,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任官还,我火速辦了婚禮芹橡,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘望伦。我一直安慰自己林说,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布屯伞。 她就那樣靜靜地躺著腿箩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劣摇。 梳的紋絲不亂的頭發(fā)上珠移,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音饵撑,去河邊找鬼剑梳。 笑死,一個(gè)胖子當(dāng)著我的面吹牛滑潘,可吹牛的內(nèi)容都是我干的垢乙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼语卤,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼追逮!你這毒婦竟也來(lái)了酪刀?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钮孵,失蹤者是張志新(化名)和其女友劉穎骂倘,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體巴席,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡历涝,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了漾唉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荧库。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赵刑,靈堂內(nèi)的尸體忽然破棺而出分衫,到底是詐尸還是另有隱情,我是刑警寧澤般此,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布蚪战,位于F島的核電站,受9級(jí)特大地震影響铐懊,放射性物質(zhì)發(fā)生泄漏邀桑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一居扒、第九天 我趴在偏房一處隱蔽的房頂上張望概漱。 院中可真熱鬧,春花似錦喜喂、人聲如沸瓤摧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)照弥。三九已至,卻和暖如春进副,著一層夾襖步出監(jiān)牢的瞬間这揣,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工影斑, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留给赞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓矫户,卻偏偏與公主長(zhǎng)得像片迅,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子皆辽,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容