目次

Search

  1. はじめに
  2. 一括取り込みデータベース

一括取り込みデータベース

一括取り込みデータベース

MySQLソース

MySQLソース

データベース取り込みタスクでMySQLソースを使用するには、最初にソースデータベースを準備し、使用に関する考慮事項を確認してください。

ソースの準備:

  • MySQLソースを含む
    データベース統合
    タスクをデプロイして実行するには、ソース接続で、必要な特権を持つデータベースユーザーを指定する必要があります。次のSQL文を使用して、これらのユーザーに特権を付与します。
    GRANT SELECT ON
    database_name
    .* TO '
    user_name
    '@'%'; GRANT SELECT TABLES ON
    database_name
    .* TO '
    user_name
    '@'%';
    増分ロードジョブの場合、次の追加の特権をユーザーに付与します。
    /* To fetch table and column details from system tables */ GRANT SELECT ON 'sys'.* TO '
    user_name
    '@'%'; /* To allow the user to monitor binary log information such as file name, position, and GTID */ GRANT REPLICATION CLIENT ON *.* TO '
    user_name
    ; /* Required for a multi-node MySQL cluster with master and slave configuration */ GRANT REPLICATION SLAVE ON *.* TO '
    user_name
    ;
  • 増分ロードジョブの場合、my.cnfファイルの[mysqld]セクションでdefault_storage_engine変数をInnoDBに設定します。次に、MySQLサーバーを再起動します。default_storage_engine設定を確認するには、次の文を使用します。
    SHOW VARIABLES LIKE '%engine%';
    出力で、default_storage_engine変数がInnoDBに設定されていることを確認します。
  • 一括取り込みデータベース
    は、ソースで変更イベントをキャプチャするために、MySQLによって生成されたバイナリログファイルを使用します。binlogは、MySQLサーバーインスタンスに対して行われたデータ変更に関する情報を含む一連のログファイルです。
    バイナリログを有効にするには、
    --log-bin
    オプションを使用してサーバーを起動するか、またはmy.cnfファイルでキーと値の
    log-bin="[HostName]-bin"
    設定を使用します。
    [HostName]
    は使用するホストの名前に置き換えてください。次に、MySQLサーバーを再起動します。バイナリログが有効になっていることを確認するには、次の文を使用します。
    SHOW VARIABLES LIKE 'log_bin';
    出力で、log_bin変数がONに設定されていることを確認します。
  • 増分ロードジョブの場合、次の文を使用して行ベースのログを有効にします。
    SET GLOBAL binlog_format = 'ROW';
    行ベースのログが有効になっていることを確認するには、次の文を使用します。
    SHOW VARIABLES LIKE 'binlog_format';
    出力で、binlog_formatシステム変数がROWに設定されていることを確認します。
  • 一括取り込みデータベース
    は、次のいずれかの方法でbinlogファイルを読み取ることができます。
    • グローバルトランザクションID(GTID) - MySQL GTIDモードを有効にすると、MySQLのすべてのトランザクションに、トランザクションを一意に識別するためのGTIDが割り当てられます。マルチクラスタ環境ではGTIDモードを使用してください。
    • binlogファイルの名前と位置 - MySQL のすべてのトランザクションは匿名として保存され、binlogファイルの名前と位置を使用して取得されます。MySQL GTIDモードが有効になっている場合、またはマルチクラスタ環境を使用している場合は、この方法を使用しないでください。マルチクラスタ環境では、フェイルオーバーが発生すると、binlogファイルの位置が変化し、データの一貫性が失われる可能性があります。
    GTIDモードを有効にするには、各MySQLサーバーで次の文を使用します。
    SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = WARN; SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = ON; SET @@GLOBAL.GTID_MODE = OFF_PERMISSIVE; SET @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
    各サーバーで、ステータス変数'Ongoing_anonymous_transaction_count'が 0(ゼロ)になるまで待ちます。次の文を使用して、ステータス変数の値を確認できます。
    SHOW STATUS LIKE 'Ongoing_anonymous_transaction_count';
    カウントが0の場合、次の文を使用してGTIDモードを有効にします。
    SET @@GLOBAL.GTID_MODE = ON;
  • 次のロードタイプとソースエディションの組み合わせを使用する場合、MySQLソースに接続するには、MySQLドライバファイルをダウンロードして特定のインストールサブディレクトリにコピーする必要があります。
    • MySQL Community EditionまたはMySQL Enterprise Editionソースを持つ増分ロードジョブ
    • MySQL Community Editionソースを持つ初期ロードジョブ
    • Amazon Relational Database Service (RDS) for MySQLソースを持つ初期ロードジョブ
    MySQL Enterprise Editionソースを持つ初期ロードジョブのみを実行する場合は、ドライバをダウンロードする必要はありません。
    MySQL JDBCドライバファイル、mysql-connector-java-<version>.jarをMySQL Community Downloads Webサイトからダウンロードし、次のディレクトリにコピーします。
    <
    Secure_Agent_installation_directory
    >/ext/connectors/thirdparty/com.mysql/
    接続プロパティを定義した後でAdministratorで接続をテストできるようにする場合は、Secure Agentのシステム構成の詳細でData Integration ServerサービスのMySQL_JDBC_DRIVER_JARNAMEパラメータも設定する必要があります。テスト後、パラメータを削除できます。このパラメータは、接続を使用してデータベース取り込みタスクを作成したり、関連するジョブを実行する場合には使用されません。

使用に関する考慮事項:

  • 一括取り込みデータベース
    は、初期ロード、増分ロード、および初期ロードと増分ロードの組み合わせジョブに対するMySQL、Amazon Aurora MySQL、Cloud SQL for MySQL、およびRDS for MySQLソースをサポートしています。
  • 一括取り込みデータベース
    では、ソーステーブルの各行が一意であることを想定しているため、各ソーステーブルにプライマリキーを持たせることをお勧めします。
    一括取り込みデータベース
    は、プライマリキーの代わりに一意のインデックスを許可しません。プライマリキーが指定されていない場合、
    一括取り込みデータベース
    はすべてのカラムをプライマリキーの一部であるかのように扱います。
  • ターゲットテーブルに存在しないレコードに対し、MySQLソーステーブルのプライマリキー値を更新すると、そのレコードはターゲットにレプリケートされません。ただし、監視インタフェースは更新カウントを増分してプライマリキーの更新を含めます。プライマリキー値の更新前にターゲットテーブルにレコードがすでに存在する場合、データはターゲットにレプリケートされます。
  • SETまたはENUMデータ型のMySQLソースカラムを含むデータベース取り込みジョブは、SETカラムとENUMカラムのデータを数値としてターゲットにレプリケートします。初期ロードジョブの場合は、タスクウィザードの
    [ソース]
    ページでmysql.set.and.enum.as.numericカスタムプロパティをfalseに設定して、SETまたはENUMデータを文字列またはvarchar形式でレプリケートすることができます。デフォルト値はtrueで、これにより、
    一括取り込みデータベース
    はSETまたはENUMデータを数値としてレプリケートします。
    増分ロードジョブの場合は、SETまたはENUMカラムデータの数値表現と文字列表現またはvarchar表現を切り替えることはできません。mysql.set.and.enum.as.numericカスタムプロパティをfalseに設定し、初期ロードジョブを実行した後に増分ロードジョブを実行すると、
    一括取り込みデータベース
    はSETおよびENUMデータを数値のみとしてターゲットにレプリケートします。
  • 一括取り込みデータベース
    では、次のMySQLデータ型はサポートされません。
    • BLOB
    • JSON
    • LONGBLOB
    • LONGTEXT
    • MEDIUMBLOB
    • MEDIUMTEXT
    • TEXT
    • TINYBLOB
    • TINYTEXT
    データベース取り込みタスクで、JSONデータ型のカラムを含むソーススキーマを指定する場合、タスクをデプロイすると、JSONカラムが無視され、ターゲットに対応するカラムは作成されません。その他のサポートされないデータ型の場合、データベース取り込みジョブはnullをプロパゲートします。
    サポートされているソースデータ型からターゲットデータ型へのデフォルトのマッピングについては、Default Data Type Mappingsを参照してください。