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に設定します。
一般的なシナリオ
完全なデータベース移行
データベースの完全移行を実行するには、次の手順を実行します。
次のコマンドを実行して、ターゲットデータベースにテーブルを作成するために使用されるDDLステートメントを取得します。
./mysql2pgsql -d
DDLステートメントを使用して、ターゲットデータベースにテーブルを作成し、テーブルの配布キーを指定します。
次のコマンドを実行して、すべてのテーブルのデータを同期します。
./mysql2pgsql
このコマンドは、すべてのテーブルのデータをソースMySQLデータベースからターゲットデータベースに移行します。 既定では、5つの同時スレッドを使用して、テーブルからデータを読み取り、インポートします。
部分的なテーブル移行
tab_list.txtという名前のファイルを作成し、ファイルに次の内容を入力します。
t1 t2 : select * from t2 where c1 > 138888
次のコマンドを実行して、t1テーブルとt2テーブルのデータを同期します。 c1 > 138888条件を満たすデータのみがt2テーブルに移行されます。
./mysql2pgsql -l tab_list.txt
ダウンロードと手順
mysql2pgsqlのバイナリインストールパッケージをダウンロードします。
mysql2pgsqlのソースコードをコンパイルする手順を参照してください。