mydumper または myloader を使用して大規模なデータベースを Azure Database for MySQL に移行する
Azure Database for MySQL は、高可用な MySQL データベースをクラウドで実行し、管理し、スケーリングするために使用されるマネージド サービスです。 1 TB を超える MySQL データベースを Azure Database for MySQL に移行する際は、次の利点を持つ mydumper や myloader などのコミュニティ ツールを使用することを検討してください。
- 並列処理により、移行時間が短縮されます。
- 高価な文字セットの変換ルーチンを回避することで、パフォーマンスが向上します。
- テーブルやメタデータなどのファイルの出力形式が異なるため、データの表示や解析が容易になります。 すべてのスレッドでスナップショットが維持されるため、整合性が保たれます。
- プライマリとレプリカ ログの位置が正確になります。
- データベースやテーブルの包含または除外を指定する PERL 互換正規表現 (PCRE) をサポートしているため、管理が容易です。
- スキーマとデータが一緒になります。 他の論理移行ツールのように、これらを別々に扱う必要はありません。
このクイックスタートでは、mydumper や myloader を使用して MySQL データベースをインストール、バックアップ、および復元する方法について説明します。
前提条件
MySQL データベースの移行を開始する前に、次のことを行う必要があります。
Azure portal を使用して、Azure Database for MySQL サーバーを作成する。
Azure portal を使用して、Linux を実行する Azure VM を作成します (Ubuntu を推奨)。
注意
ツールをインストールする前に、次の点を考慮してください。
- ソースがオンプレミスにあり、Azure に (ExpressRoute を使用して) 高帯域で接続されている場合、ツールを Azure VM にインストールすることを検討してください。
- ソースとターゲットの間の帯域幅に問題がある場合は、ソースの近くに mydumper をインストールし、ターゲット サーバーの近くに myloader をインストールします。 ツール Azcopy を使用して、オンプレミスまたはその他のクラウド ソリューションから Azure にデータを移動することができます。
- ソースがオンプレミスにあり、Azure に (ExpressRoute を使用して) 高帯域で接続されている場合、ツールを Azure VM にインストールすることを検討してください。
次の手順を実行して、mysql クライアントをインストールします。
- 次のコマンドを実行して、Linux を実行している Azure VM のパッケージ インデックスを更新します。
sudo apt update
- 次のコマンドを実行して、mysql クライアント パッケージをインストールします。
sudo apt install mysql-client
mydumper や myloader をインストールする
mydumper や myloader をインストールするには、次の手順を実行します。
OS のディストリビューションに応じて、次のコマンドを実行して、mydumper や myloader に適したパッケージをダウンロードします。
wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
注意
$(lsb_release -cs) は、ご自身のディストリビューションを特定するのに役立ちます。
mydumper の .deb パッケージをインストールするには、次のコマンドを実行します。
sudo dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
ヒント
お使いの Linux ディストリビューションによってインストーラは異なるため、パッケージをインストールする際に使用するコマンドも異なります。 mydumper や myloader は、Fedora、RedHat、Ubuntu、Debian、openSUSE、MacOSX のディストリビューションで使用できます。 詳細については、 mydumper のインストール方法 に関するページを参照してください
mydumper を使用してバックアップを作成する
mydumper を使用してバックアップを作成するには、次のコマンドを実行します。
mydumper --host=<servername> --user=<username> --password=<Password> --outputdir=./backup --rows=100000 --compress --build-empty-files --threads=16 --compress-protocol --trx-consistency-only --ssl --regex '^(<Db_name>\.)' -L mydumper-logs.txt
このコマンドでは、次の変数を使用します。
-host: 接続先のホスト
-user: 必要なアクセス許可を持つユーザー名
-password: ユーザー パスワード
-rows: テーブルをこの行数のチャンクに分割します
-outputdir: 出力ファイルのダンプ先ディレクトリ
-regex: データベースの照合に使用する正規表現。
-trx-consistency-only: トランザクションの整合性のみ
-threads: 使用するスレッドの数。既定値は 4 です。 コンピューターの仮想コアの 2 倍の値を使用することを推奨します。
Note
mydumper で使用できるその他のオプションの詳細については、mydumper --help を実行してください。 詳細については mydumper や myloader のドキュメントを参照してください
複数のデータベースを並列でダンプするには、次の例のように正規表現変数を変更します: regex '^(DbName1.|DbName2.)
myloader を使用してデータベースを復元する
mydumper を使用してバックアップしたデータベースを復元するには、次のコマンドを実行します。
myloader --host=<servername> --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=500 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
このコマンドでは、次の変数を使用します。
- -host: 接続先のホスト
- -user: 必要なアクセス許可を持つユーザー名
- -password: ユーザー パスワード
- -directory: バックアップが保存されている場所。
- -queries-per-transaction: 500 以下の値に設定することをお勧めします
- -threads: 使用するスレッドの数。既定値は 4 です。 コンピューターの仮想コアの 2 倍の値を使用することを推奨します
ヒント
myloader で使用できるその他のオプションの詳細については、myloader --help を実行してください
データベースを復元した後は、常にソース データベースとターゲット データベースの間のデータの整合性を検証することをお勧めします。
Note
mydumper や myloader ツールに関する問題やフィードバックは、 こちら から送信してください。