MySQL 5.0->再パーティション化されたストレージを使用したPercona Server 5.5のシームレスな移行

こんにちは。



本番環境からほとんど中断することなく、負荷下でMySQL 5.0からPercona Server 5.5に戦闘データベースを移行した経験を共有したいと思います



基地の現在の状態への進化を簡単に説明します



私たちのベースは古く、いくつかのMySQLアップグレードを生き延びました。 MySQL 3.xで開始しました 既にMySQL 5.0で負荷が増加したため、レプリケーションを構成し、読み取り用に別のサーバーを接続しました。 次に、 xtrabackupを使用せずに標準のMySQLツールを使用してこれを行いました。サイトでマスターダンプとポストスタブを作成するときにサーバーを完全にブロックしました。



その後、次の問題が発生しました-データボリューム上で場所が不足し始めました。 さらに、 InnoDBストレージは従来、単一のファイルに配置されていました。 多くのオプションが検討されています。 データベースをiSCSIボリュームに配置してから、より容量の大きいディスクをRAIDにドラッグし、 ボリュームグループ/論理ボリュームでそれらを拡張してからファイルシステムを拡張することで終わります。



一時的なオプションとして、 VMWare vCloudの下で仮想マシンからiSCSIボリュームを接続することにしました( 正直に言って、広告ではありません! )。 vCloudはすぐ隣にあります。



奴隷の実験から始めました。 この実験は成功し、しばらくの間、2番目の読み取り専用 MySQLiSCSIボリューム上のストレージを保持しました。



彼らは基地を完全にクラウドに移行することを真剣に考え始めました



実験として、 vCloudのサーバーを2番目の読み取りスレーブに接続しました。 すべての負荷を最初のスレーブからそれに転送しました。 パフォーマンスの面では、仮想サーバーがかなりのマージンで勝ちました。 vCloudホストのより強力なハードウェアの影響を受けます。 負荷を元に戻します。 彼らは考え始めました。



この瞬間、奇妙な神秘的な出来事が起こりました。 仮想サーバーへの負荷の実験が完了してから数時間後、データセンターで厄介な事故が発生し、その結果、物理スレーブを含む複数のサーバーの電源が切れました。 物理スレーブのiSCSIボリュームにあるリレーログがガベージを取得しました。 レプリケーションが停止しました。



この状況で最も論理的なアクションは、クラウドスレーブへの切り替えでした。



したがって、 vCloudではすでに1つの読み取り専用の足でした。 masterをドラッグする必要がありました。



彼らは、 Percona 5.5移行し、 InnoDBストレージの表形式パーティションを使用して、2台のサーバーにも移行することにしました。



移動中の主な制限は、任意の時間ベースを停止できないことでした。

InnoDBストレージをテーブルにパーティション化することについて話しているため、単にデータをコピーするだけでは機能しません。 ダンプから新しいベースを注入する必要があります。



マスターダンプを取得するには、 125ギガバイトのベースを1時間以上ロックする必要があります。 これは戦闘基地では受け入れられません。 xtrabackupを使用してマスターをバックアップし、結果のキャストでサーバーを上げ、そこからマスターダンプを削除することにしました。



だから、成分





InnoDBストレージを新しいサーバー上のテーブルに分割するには、オプション「 innodb_file_per_table = 1 」を設定する必要があります。



これはクラウドであるため、5分間で3台のサーバーが不足していることをふざけて確認します。



ダウンタイムを最小限に抑えるプログラムの一環として、新しいマスターで動作するようにアプリケーションを再構成せずに、新しいサーバーで古いマスターのIPを単純に上げることにしました。 これを行うには、古いサーバーのIPがすべてのクライアントの新しいウィザードで表示される必要があります。 この例では、5つのサーバーすべてが同じサブネット上にあるため、これに問題はありません。



そして今-アクションのシーケンス





合計で、4台のサーバーを取得します。2台は古いが、まだMySQL 5.0と戦っています 。2台の新しいPercona 5.5は現在のデータを使用しています。





楽しみが始まります。 マスターを切り替えます。 ここに戻りのないポイントがあります。 この瞬間から、マスターベースのダウンタイムに注目します。





全部



私たちの場合、ダウンタイムは約1分半でした。 この時間のほとんどは5.0-masterでした。 原則として、データベースを停止する前にInnoDBキャッシュをドロップすることで、ダウンタイムをさらに削減できました。



vCloudは良い仕事をしました。 仮想ディスクは多数の物理メディアによって「スミア」されるため、より強力なハードウェアとはるかに高速なディスクサブシステムにより、移動時のパフォーマンスが大幅に向上しました。



All Articles