Maxscaleについて調べていたところ、中継するSQL文の内容に応じて、指定したサーバにSQLを飛ばすように出来るフィルター機能(Named Server Filter)があるようなので、試してみる事にした。
なお、検証に用いたMaxscaleのバージョンは1.3.1を利用している。

今回は、SQL文に「five」という文字列があった場合は特定のサーバに行く、というような記述をしてみる。

●/etc/maxscale.cnf(Before)

properties
[maxscale] threads=4 # 同時処理数 log_messages=1 log_trace=1 logdir=/var/log/maxscale [Splitter Service] type=service router=readwritesplit servers=BS-PUB-GALERA-01,BS-PUB-GALERA-02,BS-PUB-GALERA-03 max_slave_connections=100% user=maxscale passwd=パスワード localhost_match_wildcard_host=true enable_root_user=true [Splitter Listener] type=listener service=Splitter Service protocol=MySQLClient port=3306 [Galera Monitor] type=monitor module=galeramon servers=BS-PUB-GALERA-01,BS-PUB-GALERA-02,BS-PUB-GALERA-03 user=maxscale passwd=パスワード monitor_interval=3000 use_priority=true [CLI] type=service router=cli [CLI Listener] type=listener service=CLI protocol=maxscaled address=127.0.0.1 port=6603 [BS-PUB-GALERA-01] type=server address=IPアドレス port=3306 protocol=MySQLBackend priority=1 [BS-PUB-GALERA-02] type=server address=IPアドレス port=3306 protocol=MySQLBackend priority=2 [BS-PUB-GALERA-03] type=server address=IPアドレス port=3306 protocol=MySQLBackend priority=3

●/etc/maxscale.cnf(After)

properties
threads=4 # 同時処理数 log_messages=1 log_trace=1 logdir=/var/log/maxscale [NamedServerFilter] type=filter module=namedserverfilter match=five options=ignorecase server=BS-PUB-GALERA-02 [Splitter Service] type=service router=readwritesplit servers=BS-PUB-GALERA-01,BS-PUB-GALERA-02,BS-PUB-GALERA-03 max_slave_connections=100% user=maxscale passwd=パスワード localhost_match_wildcard_host=true enable_root_user=true filters=NamedServerFilter [Splitter Listener] type=listener service=Splitter Service protocol=MySQLClient port=3306 [Galera Monitor] type=monitor module=galeramon servers=BS-PUB-GALERA-01,BS-PUB-GALERA-02,BS-PUB-GALERA-03 user=maxscale passwd=パスワード monitor_interval=3000 use_priority=true [CLI] type=service router=cli [CLI Listener] type=listener service=CLI protocol=maxscaled address=127.0.0.1 port=6603 [BS-PUB-GALERA-01] type=server address=IPアドレス port=3306 protocol=MySQLBackend priority=1 [BS-PUB-GALERA-02] type=server address=IPアドレス port=3306 protocol=MySQLBackend priority=2 [BS-PUB-GALERA-03] type=server address=IPアドレス port=3306 protocol=MySQLBackend priority=3

このように設定することで、文字列「five」が含まれているSQLが指定したサーバに向くことをクエリーログから確認できた。
なお、一応上下関係があるようで、Read/Write Splitの方が優先されるのか、INSERT文はそのままマスターノードに行った。