600万件のデータがあることを、実行ライン、単一テーブルの前提に、既存のシステムは、単一のリポジトリつのテーブルを持っていると仮定
3つのライブラリ、各ライブラリーは50万個のデータの量を置くために、各テーブルに4つのテーブルを分割しました
、することができますが、サブライブラリーのサブテーブルのデータベースミドルウェアを選択したと仮定すると、シャーディング-JDBC、mycat
どのようにして上記の行くためにオンラインシステムにサブライブラリーのサブテーブルへのスムーズな移行を入れてください
シャーディング-JDBC:自分自身の公式ウェブサイト、典型的な例を見つけるための公式ウェブサイトでは、ランニングは非常にシンプルであることを確認するために、しようとし、自分自身について書きます
mycat:自分自身の公式ウェブサイトは、公式ウェブサイトは、典型的な例を見つける自分自身について書くために、参照してみてください
1時間以内にあなたが得ることができます
3、顔の質問解析
この事実は、背の高い低からいくつかのソリューションがありますが、私たちが演奏されている、私はあなたを与えたもの
(1)移行プログラムを停止
私は6:00 AMに0:00には運用・保守がアクセスすることはできません行っていることを言って、通知をハングアップするために、あなたが最も低いプログラムの一つは非常に簡単で言わせて運用・保守、ウェブサイトやアプリのHuoer 12:00スタートです。。。。。。
次に0:00まで、かなりのシステムから、流れがない、停止が書かれており、この時、古いシングル単一テーブルのデータベースライブラリはまだ。そして、あなたはまっすぐに実行し、一回限りのツールの前に微分を記述する必要があり、その後、1つのデータベーステーブル内のデータは、うわー、内部のサブライブラリーのサブテーブルを書き込み乱闘を読み出します。
[OK]を、オーバー派生した後、あなたは最新のコードを使用して、SQLコードの可能性を含め、システムのデータベース接続の設定漢を変更し、変更する必要があり、その後、新しいサブライブラリーのサブテーブルまでの直接リンクを開始します。
、北京の夜景を見るために午前4時を見てみましょうビットを演奏し、家に帰る、私たちはShengelanyao、[OK]を、確認し、そして完璧
しかし、このプログラムは、我々は背の高い上の小さなプログラムを見て、低、誰でもできる比較します
(2)移行プログラムを倍増
これは、移行シナリオの我々の共通の一種である、それのいくつかは、より信頼性の高い、停止しないと、北京4時00分の景色を見ていません
動作に書かれたすべてのローカルのライブラリ、追加および削除されるまで、すべての古いライブラリの追加および削除に加えて、追加と削除をダブル書き込みと呼ばれている新しいライブラリのすべてを追加し、2つのライブラリを書くために、簡単に言えば、オンラインシステム、古いライブラリと新しいライブラリ。
次に展開した後、新しいライブラリのデータはるかに悪い、とは駆け上がると、古いライブラリデータは、このデータを書き込むための時間を決定するために、新しいライブラリを読み書き、派生ツールの前に言った最後のそれが読み込まれていない限り、フィールドのこのタイプgmt_modifiedに応じて変更新しいライブラリ内のデータのうち、ではない、または新規になります新しいライブラリよりデータを書き込みます。
同じがない場合はその後、ワンラウンドを行った後、データや矛盾があるかもしれません、自動的にチェックを行い、プログラム、各表ごとに古いものと新しいライブラリを比較したデータ、およびその後、それはそれらのための同じではありません、再び書き込みに古いライブラリからデータを読み取ります。各2つのライブラリのデータテーブルまでの繰り返しサイクルは、これまでまったく同じです。
データはまったく同じ、[OK]を、最新のコードがまだ動作のみでのサブライブラリーのサブテーブルに基づいていないだけサブライブラリーのサブテーブル、再デプロイメントを使用して、に基づいて、ダウンタイムのない数時間、非常に安定して続いたときに。だから今基本的には、データ移行などを再生するので、乾燥しています。