MySQL億レベルのデータ移行の移行ポリシー

2806 ワード

ステップ
サブプロジェクトは、データ同期インタフェースを提供し、状況に応じて同期されたスレッド数と一括挿入されたデータ量を選択できます.具体的な手順:
  • フルマイグレーション:現在のライブラリ内のすべての履歴データ(新しいプロジェクトはデータマイグレーションのインタフェースを提供し、大量にデータを移行することができ、このプロセスはライブラリ内の大部分のデータを消去する)
  • インクリメンタルマイグレーション:フルマイグレーション開始時刻を記録し、マイグレーションフルマイグレーション中に変更するデータ
  • .
  • データの比較:インタフェースを通じてCassandraとMySQLの中のデータを比較して、最終的なデータの一致性は一定の99.99%以上の
  • に達します
  • デュアルライト:フルマイグレーションとインクリメンタルマイグレーションに問題がないことをデータ比で確認した後、デュアルライトを開きます.ダブルライトに問題がある場合は、データのペアよりもダブルライトの問題を発見することができます.
  • 切Cassandra読み:ダブル書き込みに問題がないことを確認した後、MySQL書き込みを閉じます.

  • テスト結果
    Spring-data-cassandra
  • 5スレッド、各スレッド150データ、1時間、808万データ、13.4万/分
  • 5スレッド、各スレッド500データ、15分、274万データ、22.8万/分Spring-data-cassandra接続駆動時の速度が遅すぎて、検査後、Spring-data-cassandraのAPIで、一括挿入操作、内部実現は1本1本挿入の
  • であることが分かった.
    Cassandra-driver
    本機では、Cassandraの同時読み取りと同時書き込みを修正するスレッド数は32で、ロットごとのデータサイズは5000 kbで、読み取りと書き込みのタイムアウト注意は500000ミリ秒で、テスト結果は以下の通りです.
  • は、ノード
      10   ,MySQL    5000 ,    1000 ,   ,137  45.6 /   1000     21.9  
      10   ,MySQL    5000 ,    2000 ,   ,76  38 /      1000     26.3  
      6   ,MySQL    5000 ,    2000 ,   ,99  50 /       1000     20  
      6   ,MySQL    5000 ,    5000 ,   ,52  52 /       1000     19.2  
      5   ,MySQL    5000 ,    1000 ,7  ,400  57 /      1000     17.5  
      5   ,MySQL    5000 ,    2000 ,   ,56  56 /      1000     17.8  
      5   ,MySQL    5000 ,    5000 ,   ,36  36 /      1000     27.7  
  • を使用する.
  • は2つのノードに追加されました:
      5   ,MySQL    5000 ,    5000 ,   ,790  79 /    1000    12.6  
      5   ,MySQL    10000 ,    5000 ,   ,632  63.2 /  1000    15.8  
      10   ,MySQL    5000 ,    5000 ,   ,650  65 /    1000    15.3  
    
  • commitLogを閉じ、2つのノード
     5   ,MySQL    5000 ,    5000 ,   ,760  76 /     1000    13.1  
    
  • commitLogを閉じ、1つのノード
      5   ,MySQL    5000 ,    5000 ,   ,690  69 /  1000    14.5  
      5   ,MySQL    5000 ,    5000 ,2.5  ,110 ,44 /  1000    22.7  
      5   ,MySQL    1000 ,    5000 ,3  ,133 , 44 /  1000    22.7  
      5   ,MySQL    10000 ,    5000 ,3  ,84 , 28 /  1000    35.7  
      10   ,MySQL    10000 ,    5000 ,2  ,87 , 43.5 /  1000    22.9  
      
  • サーバ上で実行、3つのノード
      5   ,MySQL    10000 ,    5000 , 80 /   1000    12.5  
      5   ,MySQL    20000 ,    5000 , 85 /   1000    11.8  
      5   ,MySQL    10000 ,    10000 , 80 /   1000    12.5  
      10   ,MySQL    10000 ,    5000 , 76 /   1000    13.1  
      
  • Scylla-driver
    Scylla-driverドライバを使用すると、Cassandra-driverとほぼ同じ速度になります.
    ##まとめ
  • 計3台のサーバにCassandraをインストールし、Cassandraパラメータの構成が完全に一致している場合、86サーバでのデータ移行速度は45万/分~60万/分、120サーバで70万/分~80万/分、106サーバで80万/分~85万/分です.
  • データ移行中、Cassandraの同時スレッド、読み書きタイムアウト、JVMパラメータなどを修正してテストしてみましたが、データ移行中にサーバディスクが頻繁にIOしていることがわかりました.最終的なボトルネックはCassandraがmemtableのflushからディスクのSSTableにデータを転送することです.