はじめに
CData Syncを利用してMySQL間のデータベースレプリケーションを実施してみました。
今回は、MySQLをデータソースに選択している上で、レプリケーションの種類として[標準(個別設定)]を利用しているため、フルロードのレプリケーションになっています。
※2025/01時点では、MySQLをデータソースとして差分レプリケーションを実現するためには、CDC(変更データキャプチャ)機能を利用する必要があるようです。
https://www.cdata.com/jp/sync/connections/#sources
https://cdn.cdata.com/help/ASK/jp/sync/Change-Data-Capture.html
https://www.cdata.com/jp/blog/db-cdc-sync
構成 ※AWS環境
EC2のWindows ServerにMySQLとCData Syncを導入し、RDSのMySQLにレプリケーションを行います。
・EC2
Windows Server 2019
MySQL 8.0.40
CData Sync 24.3.9121
・RDS
MySQL 8.0.39
なお、CData Syncのライセンスは、30日間無償の評価版ライセンスを利用しています。
実施内容
ここからは下記の流れで手を動かしていきます。
1.CData Syncの導入
2.コネクタの設定
3.ジョブの設定
4.ジョブの実行
なお、事前にMySQLを導入したEC2のWindows ServerとRDSのMySQLを準備しています。
データソース側MySQLに準備したcdatatestというデータベースにて、yakinikuというテーブルを作成しました。
上記テーブルを同期先側MySQLに準備したcdatatest2というデータベースにレプリケーションしていきます。
1.CData Syncの導入
まず、下記のサイトで必要事項を入力し、インストーラと評価版のライセンスキーをメールで送付してもらいます。
https://www.cdata.com/jp/sync/download/
送付されたインストーラをWindows Serverに用意し、インストーラを実行します。
契約書への同意やインストール先、コンポーネント、スタートメニューフォルダの選択を既定の設定で進み、インストールを完了させます。
※CData Syncインストール後は、Windows版では規定でサービスとして構成されています。
インストール後は下記のURLにアクセスします。
http://localhost:8181/
管理ユーザの作成を促されるため、ユーザとパスワードを入力し作成します。
管理ユーザ作成後は、ユーザが正常に作成された旨の表示がされ、ログイン画面に移行するため、作成したユーザでログインします。
ログイン後は、ライセンス認証を行います。
[設定]のライセンスタブにて、[+ライセンスを追加]に進みます。
名前やメールアドレス、プロダクトキー(メールで送付されたライセンスキー)を入力し、利用規約に同意したうえで、入力情報の[保存]を行います。
ライセンス認証が行われると、[設定]のライセンスタブにて、有効期限やライセンスキー、バージョンなどの情報を確認することができます。
2.コネクタの設定
各データベースへのコネクタ(接続)を設定していきます。
[接続]にて、[+接続を追加]に進みます。
まずは、データソース側のコネクタを作成するため、データソースタブにて対象となるMySQLを検索・選択します。
設定タブにて、接続名やサーバ、認証方法、ユーザ、データベースなどを入力し、[作成およびテスト]を行います。
※データソースとなるMySQLコネクタの設定内容の詳細は下記URLのマニュアルに記載があります。
https://cdn.cdata.com/help/ASK/jp/sync/MySQL-Source.html
コネクタの作成とテストが完了すると、一覧に作成したコネクタが表示されます。
次は、同期先側のコネクタを作成するため、同期先タブにて対象となるMySQLを検索・選択した上で、設定内容を入力し、[作成およびテスト]を行います。
※同期先となるMySQLコネクタの設定内容の詳細は下記URLのマニュアルに記載があります。
https://cdn.cdata.com/help/ASK/jp/sync/MySQL-Destination.html
コネクタの作成とテストが完了すると、一覧に作成したコネクタが表示されます。
3.ジョブの設定
データベースレプリケーションを行うジョブを作成していきます。
[ジョブ]にて、[+ジョブを追加]-[新しいジョブを追加]に進みます。
ジョブの名前やデータソースと同期先のコネクタ、レプリケーションの種類を入力し、[ジョブを追加]を行います。
※"はじめに"にて記載したように、今回は、MySQLをデータソースに選択している上に、レプリケーションの種類として[標準(個別設定)]を選択するため、フルロードのレプリケーションになっています。
ジョブの作成が完了すると、一覧に作成したジョブが表示されます。
次に、ジョブにタスクを追加していきます。
一覧から対象のジョブに進み、タスクタブにて[+タスクを追加]に進みます。
対象のデータベースを選択した上で、レプリケーションの対象となるテーブルを選択し、[タスクを追加(n)]を行います。
タスクの追加が完了すると、一覧に追加したタスクが表示されます。
4.ジョブの実行
作成したジョブを実行していきます。
一覧から対象のジョブを選択し、タスクタブにて対象のタスクにチェックを付けたうえで、[▷実行]を行います。
実行が完了すると、実行のステータスや実行日時、処理時間、影響レコード数が表示されます。
また、ジョブのジョブ履歴タブでも実行内容を確認できます。
ジョブの実行が完了したため、実際にMySQLのデータベースを確認しました。
下記のように、データソース側のcdatatestデータベースのyakinikuテーブルが同期側のcdatatest2データベースにレプリケーションされていました。
<データソース側>
mysql> use cdatatest;
Database changed
mysql> SHOW TABLES;
+---------------------+
| Tables_in_cdatatest |
+---------------------+
| yakiniku |
+---------------------+
1 row in set (0.42 sec)
mysql> select * from yakiniku;
+----+------+
| id | name |
+----+------+
| 1 | beef |
| 2 | pork |
+----+------+
2 rows in set (0.19 sec)
<同期先側 - レプリケーション前>
mysql> use cdatatest2;
Database changed
mysql> SHOW TABLES;
Empty set (0.02 sec)
<同期先側 - レプリケーション後>
mysql> use cdatatest2;
Database changed
mysql> SHOW TABLES;
+----------------------+
| Tables_in_cdatatest2 |
+----------------------+
| yakiniku |
+----------------------+
1 row in set (0.00 sec)
mysql> select * from yakiniku;
+----+------+
| id | name |
+----+------+
| 1 | beef |
| 2 | pork |
+----+------+
2 rows in set (0.00 sec)
以上がジョブの手動実行になります。
スケジューリング実行も実施してみます。
ジョブの概要タブにて、スケジュールの[設定]に進みます。
ジョブ実行の間隔と毎時毎分を入力し、[保存]を行います。
スケジューリングが完了すると、設定した内容でスケジュールがオンになっていることや次回実行の日時が表示されます。
設定した実行時間に、自動でジョブが実行されていました。
おわりに
初めてデータベースレプリケーションを行いましたが、分かりやすい公式マニュアルやハンズオン資料があったため、比較的簡単に動作を検証することができました。
次は、CData SyncのCDC機能を利用したMySQL間の差分レプリケーションを記事にする予定です。
下記は、本文記載外の参考URLです。
https://cdn.cdata.com/help/ASK/jp/sync/index.html
https://www.cdata.com/jp/blog/cdatasync-handson-2023
※追記 2025/01/08
CDC機能を利用したMySQL間の差分レプリケーションを記事にしました。
https://qiita.com/haflaf7843/items/65e5c7cb7c6828d2b0fd