DataX は、Mysql と ElasticSearch (ES) 間のデータ同期を実装します。

1. Linux環境の要件

jdk1.8以降
python2

2. 準備作業

2.1 Linux インストール JDK

 yum install -y java-1.8.0-openjdk.x86_64

インストールが成功したかどうかを確認する

java -version

2.2 Linux に Python をインストールする

 yum install -y python

Python のバージョン番号を確認して、インストールが成功したかどうかを確認します。

python --version

2.3 DataX をダウンロードします。

3. DataX 圧縮パッケージをインポートして解凍します。

tar -zxvf datax.tar.gz 

4. 同期ジョブを作成する

datax/job では、json 形式、具体的な内容と主な設定の意味は次のとおりです。

Mysqlreader は、mysql データ部分を読み取り、mysql 関連情報の
ユーザー名を構成するために使用されます。パスワードはデータベース アカウントのパスワードです
。 querySql: データをクエリする必要がある SQL。列を通じて検索する必要があるフィールドを指定することもできます (querySql には高い優先順位)
elasticsearchwriter 部分は ES 部分にデータを書き込み、ES 関連情報を構成します。
エンドポイントは ES アドレス、index はインデックス、columns は列に書き込む必要がある情報、残りの構成はオプションです。

ピット!注: 実行中に mysql 接続が失敗したことを示すメッセージが表示され、アカウントのパスワード、IP、およびポート番号がすべて正しい場合は、記事に示されているように jdbcUrl の内容の後に useSSL=false を追加する必要があります。

vim /opt/software/datax/job/job.json

内容を次のものに置き換えます

{
    
    
    "job": {
    
    
      "setting": {
    
     
          "speed": {
    
    
              "channel": 1
          },
          "errorLimit": {
    
    
              "percentage": 0
          }
      },
      "content": [
          {
    
    
            "reader": {
    
    
                "name": "mysqlreader",
                "parameter": {
    
    
                    "username": "root",
                    "password": "123456",
                    "connection": [{
    
    
                        "querySql": ["select * from user_t"],
                        "jdbcUrl": ["jdbc:mysql://数据库地址:3306/mysql?useSSL=false"]
                    }]
                }
            },
              "writer": {
    
    
                  "name": "elasticsearchwriter",
                  "parameter": {
    
    
                      "endpoint":"http://ES地址:9200",
                       "accessId":"",
                      "accessKey":"",
                      "index": "user-demo",
                      "cleanup": false,
                      "discovery":false,
                      "column": [
                          {
    
    
                            "name": "id",
                            "type": "id"
                          },
                        {
    
    
                            "name": "userName",
                            "type": "text"
                        },
                                                 {
    
    
                            "name": "address",
                            "type": "text"
                        }

                      ]
                  }
              }
            }
        ]
        }
    }

5. ジョブの実行

構成後、次のコマンドを実行します。

 python /opt/software/datax/bin/datax.py /opt/software/datax/job/job.json 

独自の datax パスに変更することに注意してください

通常の状況では、多くの出力は次のようになります。mysql テーブルに 3 つのテスト データを挿入したため、読み取られたレコードの合計数が 3 で操作が完了します
ここに画像の説明を挿入します

6. 定期的なアップデート

6.1 スケジュールされたタスクの作成

vim crondatax
コンテンツ:
5 13 * * * python /opt/software/datax/bin/datax.py /opt/software/datax/job/job.json

/opt/software/datax/log. date +\%Y\%m\%d\%H\%M\%S2>&1
は、毎日 13:05 に python /opt/software/datax/bin/datax.py /opt/software/datax/job/job.json コマンドを実行することを意味します。出力アドレスは /opt/software/datax、名前は「log.time」です
。crontab 形式は次の図を参照できます。

6.2 スケジュールされたタスクを送信する

クロンタブ クロンダタックス

/sbin/サービス crond の再起動

6.3 スケジュールされたタスクの表示

crontab -l

7. 増分更新のアイデア


最終操作時刻フィールドは、データベース テーブルの設計時に追加されます。新しく追加および変更されたデータは、Datax の json に最新の時刻を記録します。mysqlクエリ ステートメントでは、スケジュールされたタスクのルールに従って、このフィールド時刻のデータはスケジュールされたタスクの時間間隔がクエリされるまでの時間を超えています。

おすすめ

転載: blog.csdn.net/m0_68681879/article/details/132764153