データXの決意は、MySQL 8読み取りおよび書き込みをサポートします

  はじめに:あなたはDATAXをインストールして使用初めて、またはサーバーMySQLバージョンが<= 5.7である、私の以前のエッセイを参照してくださいhttps://www.cnblogs.com/zifan/p/9194793.html

  背景:MySQLは5.6から8.0.19にアップグレードした後、元の通常はDATAX間違っを実行していることがわかりました。

  エラーメッセージ:(ページズームを参照してください)での私の最初の一見

1  2020 - 03 - 18  100010.038 [ 00 - 0 - -writer] StdoutPluginCollector ERROR 
 2トランザクションの独立読み取り取得できませんでした:java.sql.SQLExceptionというが唯一ステータスサーバ
 3 com.mysql.jdbc.SQLError.createSQLExceptionで(SQLError.java:996)〜[mysqlの-コネクタ- Javaベース5.134の.jar:5.134 ]
 4:com.mysql.jdbc.SQLError.createSQLException(SQLError.javaで935〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134 ]
 5:com.mysql.jdbc.SQLError.createSQLException(SQLError.javaで924〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134 ]
 6:com.mysql.jdbc.SQLError.createSQLException(SQLError.javaで870〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134 ]
 7:com.mysql.jdbc.SQLError.createSQLException(SQLError.javaで902〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134 ]
 8:com.mysql.jdbc.SQLError.createSQLException(SQLError.javaで892〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134 ]
 9:com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.javaで3607〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134 ]
 10:com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.javaで3576〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134]
 11 com.mysql.jdbc.PreparedStatement.checkReadOnlySafeStatement(PreparedStatement.java:で1114年)〜[MySQLのコネクタ- Javaベース5.134の.jar:5.134 ]
 12:com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.javaで1134〜[MySQLのコネクタ- Javaベース)5.134の.jar:5.134 ]
 13:com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter $ Task.doOneInsert(CommonRdbmsWriter.javaで382 [プラグインRDBMS-util-)0.01 - SNAPSHOT.jarに:NA]
14:com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter $ Task.doBatchInsert(CommonRdbmsWriter.javaで362 [プラグインRDBMS-util-)0.01 - SNAPSHOT.jarに:NA]
 15 com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter $ Task.startWriteWithConnection(CommonRdbmsWriter.java:で297)[プラグインRDBMS-util- 0.01 - SNAPSHOT.jarに:NA]
 16 com.alibaba.datax.plugin.rdbms.writer.CommonRdbmsWriter $ Task.startWrite(CommonRdbmsWriter.java:で319)[プラグインRDBMS-util- 0.01 - SNAPSHOT.jarに:NA]
 17:com.alibaba.datax.plugin.writer.mysqlwriter.MysqlWriter $ Task.startWrite(MysqlWriter.javaで78 [mysqlwriter-)0.01 - SNAPSHOT.jarに:NA]
 18 com.alibaba.datax.core.taskgroup.runner.WriterRunner.runで(WriterRunner.java:56)[DATAX-コア- 0.01 - SNAPSHOT.jarに:NA]
 19 java.lang.Thread.run(Thread.java:で748)NA:1.8 .0_241]
 20ます。java.sql.SQLException:起因する未知のシステム変数' tx_read_only '
コードの表示

  ただ、最初と最後の行に焦点を当てます。あなたが百度に行く最初の行は、情報のいくつかは、あなたが「トランザクション分離レベル」参照の下にデータベースを設定できるようにすることを教えてくれます:https://www.cnblogs.com/jeffen/p/6005410.html

SET GLOBALのTRANSACTION_ISOLATION = ' READ-COMMITTED ' ;

  また、私はまだ与えられてMysql8の観点から、試してみましたが、他のMySQLバージョンあなたは、このソリューションを試すことができます参考:https://www.cnblogs.com/lewic/p/10685004.html、究極の原因はまだ問題ではありませんバージョンを推進すべきである見つけます。

  見てみましょう最後の行:ます。java.sql.SQLException:不明なシステム変数「tx_read_only」、情報のほとんどは、ドライブが一貫性のないバージョン管理の問題であることを示しています。上記をまとめると、死の唯一の原因は、そこにある「ドライブバージョンのMySQLの間違った」であるので、解決策は、自然のドライブをアップグレードすることです。

  元のドライブを初めて目:

LL {%Datax_Path} /プラグイン/ライター/ mysqlwriter / libsに/ | grepのmysqlの-CON

  2020年3月23日の時点では、GitHubの MySQLドライバのダウンロード最新DATAXのtarパッケージは、MySQLコネクタ- Javaベース5.1.34.jarが含まれています。それは、ああ、誰かがインターネットからの最初の8直接ダウンロードのだと思う等にドライブスローを交換します。この時間と一致していません、

  参考:https://blog.csdn.net/jason_9527/article/details/100995505

  私は何の問題を考えていませんが、問題を完全に解決することはできませんが、アウト警告、いくつかの誤りがあるでしょう。例えば:

1、ERROR:zeroDateTimeBehavior = convertToNull要改为CONVERT_TO_NULL 

2、WARN:ロードクラス`はcom.mysql.jdbc.Driverを" これは推奨されません。新しいドライバクラスは`com.mysql.cj.jdbc.Driverです" ドライバは自動的にSPIを介して登録され、ドライバクラスの手動ローディングは、一般的に不要です。 図3は、 WARN:サーバーなしのSSL接続を確立するの本人確認をお勧めしません。MySQLの5.5.45+によると、5.6.26+と5.7.6+要件のSSL接続は、デフォルトであれば、明示的なオプションISNによって確立されなければならない"トンセット。既存のアプリケーションがSSLを使用していないの遵守についてverifyServerCertificateプロパティがに設定されているあなたはuseSslオプション=設定することで、明示的無効SSLに必要 =、またはセットuseSslオプションをとトラストストアを提供するために、サーバ証明書の検証。

  採用「ソースコードを変更、それを自分でコンパイル」すべての問題を解決するためのアプローチをする必要があり、私たちはそう。参考:http://www.manongjc.com/detail/14-iexdburliccybhe.html

  最初のステップダウンロード出典:

  https://github.com/alibaba/DataX/archive/master.zip gitのクローンモードまたは直接ダウンロード。

  第二段階は、修正版のmysql-コネクタ-javaの主導します:

  見つけて {DataX_source_code_home} / mysqlreader /と {} DataX_source_code_homeバージョン8.0.Xの値を変更し、/ /のmysqlwriterでpom.xmlファイルを(直接「mysqlのコネクタ-Javaの迅速な位置決めのために検索することができ、Xは、あなた自身を書きたいです)バージョン番号へ

 あなただけの書き込みMySQLを使用する場合は、ディレクトリのみmysqlwriterでxmlファイルを変更することができます。

  第3のステップは、値convertToNull zeroDateTimeBehavior CONVERT_TO_NULLを修正することです。

  编辑{DataX_source_code_home} /plugin-rdbms-util/src/main/java/com/alibaba/datax/plugin/rdbms/util/DataBaseType.java

  全文はconvertToNull CONVERT_TO_NULL交換されます

#CHRIP {DataX_source_code_home} / convertToNullすべてのファイルのファイルを検索し、交換するために、フォルダの文字列に含まれている
{} DataX_source_code_home /プラグインRDBMSのvimを -util / srcに/メイン/ javaの/ COM /アリババ/ DATAX /プラグイン/ RDBMS / utilの/ DataBaseType.java 全文を交換する#次に、コマンドモード%sの/ convertToNull / CONVERT_TO_NULL /

  あなたは第四、五段階の直接包装DATAXをスキップする場合は、完璧なソリューションその他の警告をしたい場合これは、プログラムが正しく実行された、継続するための手順に従ってください。

  第四段階は、JDBCドライバの名前を変更することであるcom.mysql.cj.jdbc.Driverはcom.mysql.jdbc.Driverです

VI {DataX_source_code_home} /プラグインRDBMS-utilの/ SRC /メイン/ジャワ/ COM /アリババ/ DATAX /プラグイン/ RDBMS / UTIL / DataBaseType.java
 VI {DataX_source_code_home} / adswriter / SRC /メイン/ジャワ/ COM /アリババ/ DATAX /plugin/writer/adswriter/load/AdsHelper.java

  全文ははcom.mysql.jdbc.Driver com.mysql.cj.jdbc.Driver交換されます。

  第五工程JDBCリンク追加useSslオプション= falseを設定

  例えば:pythonのdatax.py file.json、file.jsonの設定項目: "jdbcUrlと": "JDBC:MySQLの:。?// $ {} writer_gateway / OMS&useUnicode = characterEncoding =真のUTF-8 &= useSslオプションをfalseに "、

  パッキン達人による第6のステップ :(参照開発者が提供するGitの手順に)

CD {DataX_source_code_home}
MVN -Uきれいなパッケージには、組立:組立-Dmaven.test.skip = 

  成功、ログショー次包装:

[INFO] BUILD SUCCESS
[INFO] ------------------------------------------ -----------------------
[INFO]は合計時間:午前8時12分
2015-12-13T16:26:48 + 08 [情報]で終了します:00
[INFO]最終的なメモリ:133M / 960M
[INFO] ------------------------------------ -----------------------------

  データX {} DataX_source_code_home /ターゲット/ DATAX / DATAX /位置成功包装袋の後、DATAX /プラグイン/ライター/ mysqlwriter / libsに/ディレクトリを参照、新しいドライバーと、既にジャーパッケージが含まれています

  最後のステップ:

  DATAXは、その後、ご希望の場所への移動を実行することです:pythonのdatax.py ./file.json、これまでのところ、OVER

 

おすすめ

転載: www.cnblogs.com/zifan/p/12550747.html