すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:rds_dbsyncを使用してMySQLデータベースからAnalyticDB for PostgreSQLデータベースにデータを移行または同期する

最終更新日:Sep 24, 2024

rds_dbsyncは、データの移行または同期に使用されるオープンソースツールであり、複数のスレッドを介した同時データインポートをサポートします。 各ワーカースレッドは、特定のデータベーステーブルのデータをインポートします。 このツールは、ソースMySQLデータベースとターゲットデータベースに接続し、ソースMySQLデータベースからエクスポートするデータを取得し、COPYステートメントを使用してデータをターゲットデータベースにインポートします。 ツールのmysql2pgsql機能を使用すると、データを保存する必要なく、MySQLデータベースからAnalyticDB for PostgreSQLデータベースにデータを移行できます。

パラメーターの設定

my.cfgファイルを変更し、ソースデータベースとターゲットデータベースの接続情報を構成します。

  • ソースMySQLデータベースの接続情報:

    重要

    ソースMySQLデータベース内のすべてのユーザーテーブルに対する読み取り権限が必要です。

    [src.mysql]
    host = "192.168.1.1"
    port = "3306"
    user = "test"
    password = "test"
    db = "test"
    encodingdir = "share"
    encoding = "utf8"
  • 接続先データベースの接続情報 (PostgreSQL、PPAS、AnalyticDB for PostgreSQLなど):

    重要

    ターゲットデータベースのターゲットテーブルに対する書き込み権限が必要です。

    [desc.pgsql]
    connect_string = "host=192.168.1.2 dbname=test port=3432  user=test password=pgsql"

mysql2pgsql機能の使用

mysql2pgsql機能の構文:

./mysql2pgsql -l <tables_list_file> -d -n -j <number of threads> -s <schema of target table>

パラメーター:

  • -l: オプション。 このパラメーターには、データの同期が必要なテーブルを含むテキストファイルを指定します。 このパラメーターを指定しないと、ソースデータベース内のすべてのテーブルのデータが同期されます。 <tables_list_file> は、同期するテーブルのコレクションとテーブルクエリの条件を含むファイルの名前を指定します。 ファイルの内容は次の形式で指定できます。

    table1 : select * from table_big where column1 < '2016-08-05'
    table2 : 
    table3
    table4: select column1, column2 from tableX where column1 != 10
    table5: select * from table_big where column1 >= '2016-08-05'
  • -d: オプション。 このパラメーターは、ターゲットテーブルの作成に使用されるDDLステートメントのみが生成され、データが同期されないことを指定します。

  • -n: オプション。 このパラメーターは、テーブルパーティションの定義がDDLステートメントに含まれないことを指定します。 このパラメーターは-dパラメーターと一緒に使用する必要があります。

  • -j: オプション。 このパラメーターは、データの同期に同時に使用されるスレッドの数を指定します。 このパラメーターを指定しない場合、5つの同時スレッドが使用されます。

  • -s: オプション。 このパラメータは、ターゲットテーブルのスキーマを指定します。 このパラメーターをpublicに設定します。

一般的なシナリオ

完全なデータベース移行

データベースの完全移行を実行するには、次の手順を実行します。

  1. 次のコマンドを実行して、ターゲットデータベースにテーブルを作成するために使用されるDDLステートメントを取得します。

    ./mysql2pgsql -d
  2. DDLステートメントを使用して、ターゲットデータベースにテーブルを作成し、テーブルの配布キーを指定します。

  3. 次のコマンドを実行して、すべてのテーブルのデータを同期します。

    ./mysql2pgsql

    このコマンドは、すべてのテーブルのデータをソースMySQLデータベースからターゲットデータベースに移行します。 既定では、5つの同時スレッドを使用して、テーブルからデータを読み取り、インポートします。

部分的なテーブル移行

  1. tab_list.txtという名前のファイルを作成し、ファイルに次の内容を入力します。

    t1
    t2 : select * from t2 where c1 > 138888
  2. 次のコマンドを実行して、t1テーブルとt2テーブルのデータを同期します。 c1 > 138888条件を満たすデータのみがt2テーブルに移行されます。

    ./mysql2pgsql -l tab_list.txt

ダウンロードと手順