スマートスタイル TECH BLOG

データベース&クラウド技術情報

InnoDB – ColumnStore レプリケーション

本記事は MariaDB Corporation より寄稿された記事となります

MariaDB Platform X4 (MariaDB Enterprise Server 10.4) では 高機能 DB Proxy である MariaDB MaxScale を介して InnoDB テーブルから ColumnStore テーブルへのレプリケーションが可能となっております。
今回はその設定方法について解説致します。

テスト環境

今回は MaxScale 1 ノード,Enterprise Server 1ノード構成でテストを実施しました。

OS: CentOS 7.7.1908

Instance name Software IP Address
es104 Enterprise Server 10.4.11-5 192.168.2.104
mxs MaxScale 2.4.6 192.168.2.24

Vagrant / VMware Workstation Pro(もしくは VirtualBox) / Ansible を用いてデプロイ/プロビジョニング可能な Vagrantfile, Ansible Playbook を以下の GitHub レポジトリで公開しております。

https://github.com/goto-satoru/vagrant-mariadb-platform-x4-htap

MariaDB Enterprise Server 10.4.11-5 / ColumnStore 1.4.2 インストール

シングルノード構成の MariaDB Enterprise Server 10.4.11-5 / ColumnStore 1.4.2 のインストール手順は過去の投稿で解説しておりますので,こちらをご覧願います。

https://mariadb.com/ja/resources/blog/enterprise-server-10-4-11-5-columnstore-1-4/

なお,Enterprise Server のダウンロードには Customer Download Token が必要となり,MariaDB Platform のサブスクリプション契約が必要とされます。

MaxScale インストール/設定

MariaDB Enterprise Server, MaxScale yum レポジトリ設定後,以下のコマンドで MaxScale をインストールします。

MaxScale の設定ファイル,/etc/maxscle.cnf は以下のように設定します。

replication-filter / replication-router / replication-listener は InnoDB テーブル(データベース)を ColumnStore テーブルにレプリケーションするためのもので,base-router / base-listener はアプリケーションからの接続用です。

ここで,レプリケーション・フィルタは

のように設定されていますので,test_idb データベースの orders テーブルから test_cs.orders テーブルにレプリケーションします。
exclude パラメータに /norepl.*/ が設定されていますので,テーブル名が norepl で始まる テーブルはレプリケーションされません。

設定後,MaxScale を起動します。

MariaDB Enterprise Server 設定

es104 上で /etc/my.cnf.d/server.cnf 等,/etc/my.cnf.d/ に置かれる設定ファイルを以下のように設定します(拡張子: .cnf )。

現状,実装上の制限により binlog_format = STATEMENT である必要があります。

MaxScale 用に maxscale, レプリケーション用に repl, アプリケーションからの接続用に db_user というユーザを作成します。

MariaDB Enterprise Server を起動します。

以下の SQL 文を実行,レプリケーションを設定/開始します。

レプリケーション設定確認

es104(Enterprise Server) 上で SHOW SLAVE STATUS \G を実行し,以下のような出力が得られるか確認します。

mxs(MaxScale) 上で maxctrl list servers / maxctrl list services を実行し,以下と同等の出力が得られるか確認します。

テスト

以下の SQL 文を es104 ノード上で実行し,データベース/テーブル作成,データ INSERT を行います。

SELECT 文で InnoDBテーブル(test_idb), ColumnStoreテーブル(test_cs)双方に同じデータがあるか確認します。

InnoDBテーブル:

ColumnStoreテーブル:

正常にテーブル間のレプリケーションが行われていることが確認できました。
続いて,exclude パラメータのテストを行います。

test_idb.norepl から test_cs.norepl テーブルへのレプリケーションは行われていないことが確認できます。MaxScale で log_info=1 に設定(プロダクション環境では無効にしてください)している場合は,MaxScale のログ /var/log/maxscale/maxscale.log に以下のように [SKIP] とうタグがついたログが記録されます。

まとめ

今回は MariaDB Enterprise Server 上の InnoDB テーブル / ColumnStore テーブル間で MaxScale を用いてレプリケーションを行う方法について解説させて頂きました。

なお,MariaDB MaxScale は BSL(Business Source License) というライセンスが適用されております。プロダクション環境でバックエンドの MariaDB インスタンスが 3 以上の場合は Platform X4 サブスクリプションを購入頂く必要がございますので,留意願います。

MariaDB Platform X4 サブスクリプションの見積依頼は こちら から行うことができます。


執筆者情報

後藤 智(GOTO Satoru)
2017年6月よりMariaDB CorporationにてAPAC(Asia Pacific)地域におけるプリセールス業務を主に担当。現在は主に日本を担当。
この執筆者の他の記事をよむ
Return Top