MySQL データベース間で増分データ移行タスクを開始すると、Data Transmission Service (DTS) はソースデータベースのバイナリログ設定を事前チェックします。このトピックでは、各バイナリログのチェック項目と失敗の解決方法について説明します。
バイナリログの有効化
ソースデータベースでバイナリログが有効になっているかを確認します。このチェックが失敗した場合は、次の手順で問題を解決します。
解決策:
-
セルフマネージド MySQL データベースをホストするサーバーにログインします。
-
vimを使用して、my.cnf 設定ファイルの次のパラメーターを編集します。説明my.cnf のデフォルトパスは /etc/my.cnf です。実際のパスは異なる場合があります。
log_bin=mysql_bin binlog_format=row server_id=2 # 1 より大きい整数。この値は一例です。 binlog_row_image=full # ソースデータベースが MySQL 5.6 以降の場合は必須です。 -
MySQL サービスを再起動します:
/etc/init.d/mysqld restart説明お使いの環境によっては、他の再起動方法が適用される場合があります。
-
セルフマネージド MySQL ソースデータベースにログインし、この SQL ステートメントを実行して、バイナリログが有効になっていることを確認します。
show variables like '%log_bin%';期待される出力:
MySQL [pro1]> show variables like '%log_bin%'; +----------------------------------+-------+ | Variable_name | Value | +----------------------------------+-------+ | log_bin | ON | | log_bin_trust_function_creators | OFF | | sql_log_bin | ON | +----------------------------------+-------+ 3 rows in set (0.00 sec) -
DTS の事前チェックを再度実行します。
バイナリログ形式
ソースデータベースのバイナリログの形式が ROW に設定されているかを確認します。このチェックが失敗した場合は、次の手順で問題を解決します。
解決策:
-
セルフマネージド MySQL データベースをホストするサーバーにログインします。
-
my.cnf 設定ファイルで、binlog_format パラメーターを
ROWに設定します。説明my.cnf のデフォルトパスは /etc/my.cnf です。実際のパスは異なる場合があります。
log_bin=mysql_bin binlog_format=row # バイナリログの形式を row に設定します。 server_id=2 # 1 より大きい整数。この値は一例です。 binlog_row_image=full # ソースデータベースが MySQL 5.6 以降の場合は必須です。 -
MySQL サービスを再起動します:
/etc/init.d/mysqld restart説明お使いの環境によっては、他の再起動方法が適用される場合があります。
-
セルフマネージド MySQL ソースデータベースにログインし、この SQL ステートメントを実行して、バイナリログの形式が
ROWであることを確認します。show variables like "%binlog_format%";期待される出力:
MySQL [(none)]> show variables like "%binlog_format%"; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row in set (0.01 sec) -
DTS の事前チェックを再度実行します。
バイナリログの可用性
ソースデータベースからバイナリログファイルが削除されていないことを確認します。失敗した場合、バイナリログシーケンスが不完全であることを意味します。このチェックが失敗した場合は、次の手順で問題を解決します。
解決策:
-
[事前チェック] ダイアログボックスで、バイナリログの可用性のチェック項目の横にある情報アイコンをクリックします。
-
[詳細の表示] ダイアログボックスで、失敗の原因を特定し、欠落しているバイナリログファイル名をメモします。
-
欠落しているバイナリログファイルを評価し、対応を選択します。
-
欠落しているバイナリログファイルが重要ではなく、そのデータを破棄できる場合は、セルフマネージド MySQL ソースデータベースにログインし、この SQL ステートメントを実行して、指定されたファイルより前のすべてのバイナリログファイルをパージします:
PURGE BINARY LOGS TO '[$Binlog_Filename]';説明[$Binlog_Filename] は保持する最初のバイナリログファイルです。たとえば、
mysql_bin.000003が欠落している場合は、mysql_bin.000004を使用します。これにより、mysql_bin.000004より前のすべてのファイルがパージされます。 -
欠落しているファイルが重要な場合は、データベース管理者に連絡して復元してください。
-
-
DTS の事前チェックを再度実行します。
binlog_row_image 設定
このチェックは MySQL 5.6 以降にのみ適用されます。ソースデータベースの binlog_row_image パラメーターが full に設定されていることを確認します。失敗した場合、バイナリログが完全な行イメージを記録していないことを意味します。このチェックが失敗した場合は、次の手順で問題を解決します。
解決策:
-
セルフマネージド MySQL データベースをホストするサーバーにログインします。
-
my.cnf 設定ファイルで、binlog_row_image パラメーターを
fullに設定します。説明my.cnf のデフォルトパスは /etc/my.cnf です。実際のパスは異なる場合があります。
log_bin=mysql_bin binlog_format=row server_id=2 # 1 より大きい整数。この値は一例です。 binlog_row_image=full # ソースデータベースが MySQL 5.6 以降の場合は必須です。 -
MySQL サービスを再起動します:
/etc/init.d/mysqld restart説明お使いの環境によっては、他の再起動方法が適用される場合があります。
-
ソースデータベースにログインし、この SQL ステートメントを実行して、binlog_row_image が
FULLに設定されていることを確認します。show variables like "binlog_row_image"; -
DTS の事前チェックを再度実行します。