はじめに
MariaDB のデータベースProxy, MaxScale は2018年はじめに GA となったバージョン 2.2 以降,設定ファイルの書式が変更されております。2.1以前のバージョンで有効だった書式が,バージョン 2.2 以降,警告もしくはエラーとなる場合がありますので,本記事にて解説致します。
オブジェクト名の空白
MaxScale の設定ファイル(デフォルト: /etc/maxscale.cnf)において,[ ] で囲まれる service, listener, server 名などのオブジェクト名はこれまで半角スペースを含むことができましたが,MaxScale 2.2 で REST API が導入され,以下のようなリクエストを行う際にURLに空白を含めると問題が生じるため,MaxScale内部で空白はハイフン(-)に変換されます。
1 |
GET http://localhost:8989/v1/monitors/MariaDB-Monitor |
旧書式
1 2 3 4 |
[My Monitor] type=monitor module=mysqlmon ... |
MaxScale 2.2以降の書式
1 2 3 4 |
[My-Monitor] type=monitor module=mariadbmon ... |
今後,オブジェクト名には半角スペースを含めないことを推奨致します。
MaxScale 2.2 Knowledge Base : Whitespace in Object Names
モジュール/プロトコル名の変更
これまでモジュール/プロトコル名に MySQL が含まれていたモジュール/プロトコル名(共有オブジェクト名)は mariadb で始まるモジュール/プロトコル名に変更されました。
旧モジュール名 | 新モジュール名 |
---|---|
MySQLClient | mariadbclient |
MySQLBackend | mariadbbackend |
mysqlmon | mariadbmon |
router_options
router の設定において,これまでは router_options=
でオプションをコンマで区切って列記していましたが,2.3 ではサポートしない書式となり,router_options=
を使用せず,各オプションを1行ごとに指定する書式となります。
router_options in Binlogrouter
MaxScale 2.3 readwritesplit Legacy Configuration
旧書式
1 2 3 4 5 6 |
[replication-router] type=service router=binlogrouter router_options=server-id=4000,binlogdir=/var/lib/mysql,filestem=binlog user=maxuser password=maxpwd |
2.3以降の書式
1 2 3 4 5 6 7 8 9 |
[replication-router] type=service router=binlogrouter user=maxuser password=maxpwd # ex-router_options server-id=4000 binlogdir=/var/lib/mysql filestem=binlog |
maxscale.cnf 設定例
MaxScale 2.3 で Master x 1 – Slave x 2 構成で自動failoverを行う場合,以下のような設定が必要となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
[maxscale] threads=auto #log_warning=1 [MariaDB-Monitor] type=monitor module=mariadbmon servers=server1,server2,server3 user=maxuser password=maxpwd auto_failover=true auto_rejoin=true [Splitter-Service] type=service router=readwritesplit servers=server1,server2,server3 user=maxuser password=maxpwd [Splitter-Listener] type=listener service=Splitter-Service protocol=mariadbclient port=3306 [server1] type=server address=192.168.1.101 port=3306 protocol=mariadbbackend [server2] type=server address=192.168.1.102 port=3306 protocol=mariadbbackend [server3] type=server address=192.168.1.103 port=3306 protocol=mariadbbackend |
旧モジュール名が使用されていた場合,MaxScale のログファイル /var/log/maxscale/maxscale.log に以下のような警告メッセージが記録されます(MaxScale 2.3.2の場合)。
1 2 |
2018-12-17 23:20:00 warning: Protocol module 'mysqlbackend' has been deprecated, use 'mariadbbackend' instead. 2018-12-17 23:20:00 warning: Protocol module 'mysqlclient' has been deprecated, use 'mariadbclient' instead. |
MaxScale 2.3 では警告メッセージが記録されるだけですが,将来的にはエラーとなり MaxScale が起動しなくなる可能性がありますので,以前のバージョンからの設定ファイルを流用されている場合は留意が必要となります。
MariaDB MaxScale 2.2.1 Release Notes
まとめ
今回は MaxScale 2.2/2.3 で変更された設定ファイル書式に関して解説させて頂きました。2.1 以前のバージョンから MaxScale を使用されていて,MaxScale を最新版に更新される場合は,今回解説を行った箇所に関して留意頂ければと存じます。