📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiDBデータ移行のクイックスタート

TiDB データ移行 (DM) 、MySQL互換データベースからTiDBにデータを複製する強力なツールです。このガイドでは、 TiUPプレイグラウンド使用して開発またはテスト用のローカルTiDB DM環境を迅速に構築する方法と、ソースMySQLデータベースからターゲットTiDBデータベースへのデータ移行という簡単なタスクを段階的に説明します。

注記:

本番への展開については、 TiUPを使用して DMクラスタをデプロイ参照してください。

ステップ1: テスト環境をセットアップする

TiUPはクラスタ運用・保守ツールです。Playground機能を使用すると、開発・テスト用にTiDBデータベースとTiDB DMを備えた一時的なローカル環境を迅速に起動できます。

  1. TiUPをインストールします:

    curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh

    注記:

    既にTiUPがインストールされている場合は、フラグ--dm-master--dm-worker使用するには、v1.16.1 以降にアップデートされていることを確認してください。現在のバージョンを確認するには、次のコマンドを実行します。

    tiup --version

    TiUP を最新バージョンにアップグレードするには、次のコマンドを実行します。

    tiup update --self
  2. ターゲット TiDB データベースと DM コンポーネントを使用してTiUP Playground を起動します。

    tiup playground v8.5.3 --dm-master 1 --dm-worker 1 --tiflash 0 --without-monitor
  3. 出力で TiDB と DM が実行されているかどうかを確認して環境を確認します。

    TiDB Playground Cluster is started, enjoy! Connect TiDB: mysql --host 127.0.0.1 --port 4000 -u root Connect DM: tiup dmctl --master-addr 127.0.0.1:8261 TiDB Dashboard: http://127.0.0.1:2379/dashboard
  4. 現在のターミナルでtiup playgroundを実行したままにして、次の手順のために新しいターミナルを開きます。

    このプレイグラウンド環境は、ターゲットTiDBデータベースとレプリケーションエンジン(DMマスターとDMワーカー)の実行プロセスを提供します。MySQL(ソース)→ DM(レプリケーションエンジン)→ TiDB(ターゲット)というデータフローを処理します。

ステップ2: ソースデータベースを準備する(オプション)

ソースデータベースとして、1つ以上のMySQLインスタンスを使用できます。MySQL互換インスタンスを既にお持ちの場合は、 ステップ3に進んでください。そうでない場合は、以下の手順に従ってテスト用のインスタンスを作成してください。

    Docker を使用すると、テスト用の MySQL 8.0 インスタンスをすばやくデプロイできます。

    1. MySQL 8.0 Docker コンテナを実行します。

      docker run --name mysql80 \ -e MYSQL_ROOT_PASSWORD=MyPassw0rd! \ -p 3306:3306 \ -d mysql:8.0
    2. MySQLに接続します。

      docker exec -it mysql80 mysql -uroot -pMyPassw0rd!
    3. DM テストに必要な権限を持つ専用ユーザーを作成します。

      CREATE USER 'tidb-dm'@'%' IDENTIFIED WITH mysql_native_password BY 'MyPassw0rd!'; GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%';
    4. サンプルデータを作成します。

      CREATE DATABASE hello; USE hello; CREATE TABLE hello_tidb ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ); INSERT INTO hello_tidb (name) VALUES ('Hello World'); SELECT * FROM hello_tidb;

    macOS では、 Homebrew使用して MySQL 8.0 をローカルにすばやくインストールして起動できます。

    1. Homebrewを更新し、MySQL 8.0 をインストールします。

      brew update brew install mysql@8.0
    2. MySQL コマンドをシステム パスでアクセスできるようにします。

      brew link mysql@8.0 --force
    3. MySQL サービスを開始します。

      brew services start mysql@8.0
    4. rootユーザーとして MySQL に接続します。

      mysql -uroot
    5. DM テストに必要な権限を持つ専用ユーザーを作成します。

      CREATE USER 'tidb-dm'@'%' IDENTIFIED WITH mysql_native_password BY 'MyPassw0rd!'; GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%';
    6. サンプルデータを作成します。

      CREATE DATABASE hello; USE hello; CREATE TABLE hello_tidb ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ); INSERT INTO hello_tidb (name) VALUES ('Hello World'); SELECT * FROM hello_tidb;

    CentOS などのエンタープライズ Linux ディストリビューションでは、MySQL Yum リポジトリから MySQL 8.0 をインストールできます。

    1. MySQL Yumリポジトリのダウンロードページから MySQL Yum リポジトリ パッケージをダウンロードしてインストールします。Linux バージョン 9 以外の場合は、次の URL のel9 (Enterprise Linux バージョン 9) を置き換え、MySQL バージョン 8.0 の場合はmysql80そのままにする必要があります。

      sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
    2. MySQLをインストールします。

      sudo yum install -y mysql-community-server --nogpgcheck
    3. MySQLを起動します。

      sudo systemctl start mysqld
    4. MySQL ログで一時的な root パスワードを見つけます。

      sudo grep 'temporary password' /var/log/mysqld.log
    5. 一時パスワードを使用してrootユーザーとして MySQL に接続します。

      mysql -uroot -p
    6. rootパスワードをリセットします:

      ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyPassw0rd!';
    7. DM テストに必要な権限を持つ専用ユーザーを作成します。

      CREATE USER 'tidb-dm'@'%' IDENTIFIED WITH mysql_native_password BY 'MyPassw0rd!'; GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%';
    8. サンプルデータを作成します。

      CREATE DATABASE hello; USE hello; CREATE TABLE hello_tidb ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ); INSERT INTO hello_tidb (name) VALUES ('Hello World'); SELECT * FROM hello_tidb;

    Ubuntu では、公式の Ubuntu リポジトリから MySQL をインストールできます。

    1. パッケージリストを更新します:

      sudo apt-get update
    2. MySQLをインストールします。

      sudo apt-get install -y mysql-server
    3. mysqlサービスが実行されているかどうかを確認し、必要に応じてサービスを開始します。

      sudo systemctl status mysql sudo systemctl start mysql
    4. ソケット認証を使用してrootユーザーとして MySQL に接続します。

      sudo mysql
    5. DM テストに必要な権限を持つ専用ユーザーを作成します。

      CREATE USER 'tidb-dm'@'%' IDENTIFIED WITH mysql_native_password BY 'MyPassw0rd!'; GRANT PROCESS, BACKUP_ADMIN, RELOAD, REPLICATION SLAVE, REPLICATION CLIENT, SELECT ON *.* TO 'tidb-dm'@'%';
    6. サンプルデータを作成します。

      CREATE DATABASE hello; USE hello; CREATE TABLE hello_tidb ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) ); INSERT INTO hello_tidb (name) VALUES ('Hello World'); SELECT * FROM hello_tidb;

    ステップ3: TiDB DMソースを構成する

    ソースMySQLデータベースを準備したら、TiDB DMをそのデータベースに接続するための設定を行います。そのためには、接続の詳細を含むソース設定ファイルを作成し、 dmctlツールを使用して設定を適用します。

    1. ソース構成ファイルmysql-01.yamlを作成します。

      注記:

      この手順では、 ステップ2で説明されているように、ソース データベースにレプリケーション権限を持つtidb-dmユーザーがすでに作成されていることを前提としています。

      source-id: "mysql-01" from: host: "127.0.0.1" user: "tidb-dm" password: "MyPassw0rd!" # In production environments, it is recommended to use a password encrypted with dmctl. port: 3306
    2. DM データ ソースを作成します。

      tiup dmctl --master-addr 127.0.0.1:8261 operate-source create mysql-01.yaml

    ステップ4: TiDB DMタスクを作成する

    ソースデータベースを設定したら、TiDB DM で移行タスクを作成できます。このタスクは、ソース MySQL インスタンスを参照し、ターゲット TiDB データベースへの接続詳細を定義します。

    1. DMタスク構成ファイルtiup-playground-task.yamlを作成します。

      # Task name: tiup-playground-task task-mode: "all" # Execute all phases - full data migration and incremental sync. # Source (MySQL) mysql-instances: - source-id: "mysql-01" ## Target (TiDB) target-database: host: "127.0.0.1" port: 4000 user: "root" password: "" # If the password is not empty, it is recommended to use a password encrypted with dmctl.
    2. 構成ファイルを使用してタスクを開始します。

      tiup dmctl --master-addr 127.0.0.1:8261 start-task tiup-playground-task.yaml

    ステップ5: データ複製を確認する

    移行タスクを開始したら、データレプリケーションが期待どおりに動作しているかどうかを確認します。1 dmctlを使用してタスクのステータスを確認し、ターゲット TiDB データベースに接続して、ソース MySQL データベースからデータが正常に複製されていることを確認します。

    1. TiDB DM タスクのステータスを確認します。

      tiup dmctl --master-addr 127.0.0.1:8261 query-status
    2. ターゲット TiDB データベースに接続します。

      mysql --host 127.0.0.1 --port 4000 -u root --prompt 'tidb> '
    3. 複製されたデータを確認します。1 ステップ2サンプルデータを作成した場合、MySQLソースデータベースからターゲットTiDBデータベースに複製されたテーブルhello_tidbが表示されます。

      SELECT * FROM hello.hello_tidb;

      出力は次のようになります。

      +----+-------------+ | id | name | +----+-------------+ | 1 | Hello World | +----+-------------+ 1 row in set (0.00 sec)

    ステップ6: クリーンアップ(オプション)

    テストが完了したら、 TiUP Playground を停止し、ソース MySQL インスタンス (テスト用に作成された場合) を削除し、不要なファイルを削除することで、環境をクリーンアップできます。

    1. TiUP Playgroundを停止します。

      TiUP Playground が実行中のターミナルで、 Control + Cを押してプロセスを終了します。これにより、すべての TiDB および DM コンポーネントが停止し、ターゲット環境が削除されます。

    2. ソース MySQL インスタンスを停止して削除します。

      ステップ2でテスト用のソース MySQL インスタンスを作成した場合は、次の手順に従ってそれを停止し、削除します。

        Docker コンテナを停止して削除するには:

        docker stop mysql80 docker rm mysql80

        テスト目的のみでHomebrewを使用して MySQL 8.0 をインストールした場合は、サービスを停止してアンインストールします。

        brew services stop mysql@8.0 brew uninstall mysql@8.0

        注記:

        すべての MySQL データ ファイルを削除する場合は、MySQL データ ディレクトリ (通常は/opt/homebrew/var/mysqlにあります) を削除します。

        テスト目的のみで MySQL Yum リポジトリから MySQL 8.0 をインストールした場合は、サービスを停止してアンインストールします。

        sudo systemctl stop mysqld sudo yum remove -y mysql-community-server

        注記:

        すべての MySQL データ ファイルを削除する場合は、MySQL データ ディレクトリ (通常は/var/lib/mysqlにあります) を削除します。

        テスト目的のみで公式 Ubuntu リポジトリから MySQL をインストールした場合は、サービスを停止してアンインストールします。

        sudo systemctl stop mysql sudo apt-get remove --purge -y mysql-server sudo apt-get autoremove -y

        注記:

        すべての MySQL データ ファイルを削除する場合は、MySQL データ ディレクトリ (通常は/var/lib/mysqlにあります) を削除します。

      • TiDB DM 構成ファイルが不要になった場合は削除します。

        rm mysql-01.yaml tiup-playground-task.yaml
      • TiUPが不要になった場合は、アンインストールできます。

        rm -rf ~/.tiup

      次は何?

      テスト環境でソース MySQL データベースからターゲット TiDB データベースにデータを移行するタスクを正常に作成したので、次の操作を実行できます。

      このページは役に立ちましたか?