私はマルチjdbcを使用して、データ移行の全テーブルクエリを実行します。並列75 jdbcを使用してテーブルあたり3000000行近くのdiffテーブルをクエリすると、すべてのデータがjdbcに返される前にMySQLが1つの接続を中止することがわかりました。MySQLが異常終了しました。不明なエラー
スローログ:
Time: 160919 9:09:38
[email protected]: test[test] @ [10.142.90.20]
Thread_id: 349 Schema: mmig_1005 QC_hit: No
Query_time: 161.997180 Lock_time: 0.000560 Rows_sent: 619246 Rows_examined: 619246
Full_scan: Yes Full_join: No Tmp_table: No Tmp_table_on_disk: No
Filesort: No Filesort_on_disk: No Merge_passes: 0
explain: id select_type table type possible_keys key key_len ref rows Extra
explain: 1 SIMPLE CAR_NEW_6 ALL NULL NULL NULL NULL 2923495
use mmig_1005;
SET timestamp=1474247378;
SELECT @@version, name, id, sharding_id, model
FROM CAR_NEW_6;
あり、テーブルmmig_1005.car_new_6ほぼ3000000行がありますが、MySQLはちょうど619246個の行を送信し、この接続を中断しました。スレッドIDは349であり、mysql-errログにこの接続が中止されています。
160919 9:09:38 [Warning] Aborted connection 349 to db: 'mmig_1005' user: 'test' host: '10.142.90.20' (Unknown error)
160919 9:09:38 [Warning] Aborted connection 305 to db: 'mmig_1001' user: 'test' host: '10.142.90.20' (Unknown error)
MySQLのパラメータ:そのデータが全て送信される前に
connect_timeout 10
deadlock_timeout_long 50000000
deadlock_timeout_short 10000
delayed_insert_timeout 300
innodb_flush_log_at_timeout 1
innodb_lock_wait_timeout 45
innodb_rollback_on_timeout OFF
interactive_timeout 1800
lock_wait_timeout 600
net_read_timeout 7200
net_write_timeout 7200
rpl_semi_sync_master_timeout 10000
slave_net_timeout 30
sqlasyntimeout 10
sqlasynwarntimeout 3
thread_pool_idle_timeout 60
wait_timeout 1800
innodb_log_buffer_size 134217728
max_allowed_packet 1073741824
なぜMySQLは、この接続を中止しますか?
1つのクエリが30分より長く続きましたか? – Drew
@ Drew、servalミニッツのみ。 – Zeyu