概要
Qlik Replicateは、データレプリケーションおよび同期ツールであり、ODBC/MySQL接続を介してOceanBaseデータベースに接続し、データベース間のデータ同期を実現します。本記事では、Qlik Replicateを設定してOceanBaseからSQL Serverへデータを同期する方法について説明します。
バージョン互換性
- OceanBaseデータベースバージョン:V4.2.5以上
- Qlik Replicateバージョン:V2025.11.0
前提条件
Qlik Replicateを使用する前に、以下のことを確認してください:
- Qlik Replicateがインストール済みであること。(Qlik Replicate公式ドキュメントを参照してインストールしてください)
- OceanBaseデータベースのデプロイが完了し、MySQLモードのユーザーテナントが作成されていること。テナント作成の詳細については、テナントの作成を参照してください。
- 作成したMySQL互換モードのテナントでBinlogサービスが有効になっていること。詳細については、OceanBase Binlogサービスを参照してください。
- SQL Serverを所有しており、そのネットワークがQlik Replicateのネットワークと正常に接続されていることを確認しています。
手順
ステップ1:データベース接続文字列の取得
OceanBaseデータベースのデプロイ担当者から接続文字列を取得します。例:
obclient -h$host -P$port -u$user_name -p$password -D$database_name
パラメータ説明:
$host:接続IPアドレス。ODP接続はODPアドレスを使用し、直接接続はOBServer IPを使用します。$port:接続ポート。ODPのデフォルトは2883、直接接続のデフォルトは2881です。$database_name:データベース名。注意
テナントに接続するユーザーは、データベースに対する
CREATE、INSERT、DROP、およびSELECT権限が付与されていなければなりません。ユーザー権限の詳細については、MySQLモードの権限分類を参照してください。$user_name:接続アカウント。ODP形式:ユーザー@テナント#クラスタまたはクラスタ:テナント:ユーザー。直接接続形式:ユーザー@テナント。$password:アカウントのパスワード。
接続文字列の詳細については、OBClientを使用してOceanBaseテナントに接続するを参照してください。
例:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
ステップ2:Qlik Replicateのインストール
本記事では、Dockerを使用してQlik Replicateをデプロイする方法を説明します。操作は以下のとおりです:
# 1. Linux版をダウンロード
wget https://github.com/qlik-download/replicate/releases/download/v2025.11.0/QlikReplicate_2025_11_0_Linux_X64.tar.gz
# 2. 解凍
tar -xzf QlikReplicate_2025_11_0_Linux_X64.tar.gz
# 3. RPMを抽出し、Dockerを作成
mkdir -p ar_docker/
rpm2cpio areplicate-*.rpm | cpio -iv --make-directories --no-absolute-filenames ./opt/attunity/replicate/addons/samples/docker/*
mv ./opt/attunity/replicate/addons/samples/docker/* ./ar_docker/
rm -rf ./opt
cd ar_docker
cp ../areplicate-*.rpm .
sed -i '/^mysql8\|^sqlserver18.1/!s/^/#/' drivers
# 4. MySQL ODBC 8.0.32ドライバーのインストール:
wget https://yum.oracle.com/repo/OracleLinux/OL8/MySQL80/connectors/community/x86_64/getPackage/mysql-connector-odbc-8.0.32-1.el8.x86_64.rpm
# 5. ODBC Driver 18のインストール
curl https://packages.microsoft.com/config/rhel/8/prod.repo > /etc/yum.repos.d/mssql-release.repo
ACCEPT_EULA=Y yum install -y msodbcsql18
# 6. Dockerfileの作成
./create-dockerfile.sh
sed -i 's/RUN yum -y install \/tmp\/areplicate-\*.rpm/RUN systemd=no yum -y install \/tmp\/areplicate-*.rpm/' Dockerfile
# 7. Dockerイメージのビルド
docker build --no-cache -t qlik-replicate:2025.11.0 .
# 8. コンテナの起動
docker run -d --name replicate-container \
--hostname replicate-host \
-e ReplicateDataFolder="/replicate/data" \
-e ReplicateAdminPassword="********" \
-e ReplicateRestPort="3552" \
-p 3552:3552 \
qlik-replicate:2025.11.0
# 9. Qlik Replicateが正常に起動したか確認する。
sudo netstat -ntlp | grep 3552
ブラウザでQlik Replicateサービスのアドレス:http://localhost:3552/attunityreplicate/login,にアクセスして、Qlik Replicateにログインします。デフォルトのアカウント名はadmin、パスワードはデプロイ時に設定したReplicateAdminPasswordの値です。
ステップ3:Qlik Replicateを使用して同期タスクを作成する
ソースエンドポイント(Source Endpoint)の設定
Qlik Replicateの管理画面で、新しいソースエンドポイントを作成し、タイプとして MySQL を選択します。
Server、Port、Username、Passwordを入力し、Test Connection をクリックして接続性を確認します。
またはODBC DSNを使用してOceanBaseに接続します:
a. Qlik Replicateコンテナにログインし、
/etc/odbc.iniを設定します:tee /etc/odbc.ini << 'EOF' [MySQL-Test] Description=MySQL Test Connection Driver=MySQL ODBC 8.0 Unicode Driver Server=$host Port=2883 User=$user_name Password=$password Option=3 Charset=utf8mb4 EOFb. すべてのDSNを一覧表示します:
odbcinst -q -sc. DSN接続をテストします:
isql -v MySQL-Test接続が成功したら、Qlik Replicateの画面でDSN
MySQL-Testを選択し、Test Connection をクリックします。
ターゲットエンドポイント(Target Endpoint)の設定
- ターゲットエンドポイントを作成します。例えば、SQL Server などです。
- Server、Username、Password、Database nameを入力し、Test Connection をクリックして接続性を確認します。
同期タスクの設定
- ETLタスクで、同期するテーブルと同期モード(フル/増分)を選択します。
タスクの開始
- 同期タスクを開始し、管理画面で実行状態を監視します。
結果の検証
同期タスクを開始した後、ターゲットデータベース(SQL Server)にログインし、以下の内容を確認してください:
- ターゲットデータベースのテーブル構造とデータがソースデータベースと一致しているかどうかを確認します。
- データの内容が完全で正確であるかどうかを検証します。
- 同期がリアルタイムであるかどうかを確認します。
- タスクの実行状態が正常であり、エラーやパフォーマンスボトルネックがないかどうかを確認します。
よくある質問
Q1:同期タスクでエラーが発生しました:Binary logging basename not found
原因:SQLクエリの実行時に変数が欠落しています。
解決策:OceanBaseの技術担当者にお問い合わせいただき、設定を確認し、以下の変数が正しく設定されていることをご確認ください:
SHOW GLOBAL VARIABLES LIKE 'log_bin_basename';
Q2:同期タスクでエラーが発生しました:Binary logging must use the FULL row image
原因:Binlogの行イメージ形式がFULLに設定されていません。
解決策:OceanBaseテナントで以下のコマンドを実行します:
SET GLOBAL binlog_format = 'ROW';
SET GLOBAL binlog_row_image = 'FULL';
Q3:Webページでのログインに失敗しました
原因:管理者パスワードがセキュリティポリシー要件を満たしていません。
解決策:adminユーザーのパスワードを変更してください。パスワードの要件については、Qlik Replicate公式ドキュメントを参照してください。
詳細を見る
- Qlik Replicate公式ドキュメント
- より詳細なサポートについては、OceanBaseテクニカルサポートチームまでお問い合わせください。