Maxscaleで指定したサーバをメンテナンスモードにする

Maxscaleを使っていて、再起動などで後ろにいる特定のDBサーバに接続させないようにしたい時もあるだろう。
そんなときは、指定したDBサーバをメンテナンスモードにすればよい。

Maxscaleで特定サーバをメンテナンスモードにしたい場合は、maxadminコマンドで以下のように実行すればよい。

maxadmin -p パスワード(初期:mariadb) set server サーバ名 maintenance

[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
BS-PUB-GALERA-01   | 172.28.0.132    |  3306 |           1 | Slave, Synced, Running
BS-PUB-GALERA-02   | 172.28.0.133    |  3306 |           1 | Master, Synced, Running
BS-PUB-GALERA-03   | 172.28.0.134    |  3306 |           1 | Slave, Synced, Running
-------------------+-----------------+-------+-------------+--------------------
[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb set server BS-PUB-GALERA-03 maintenance
[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
BS-PUB-GALERA-01   | 172.28.0.132    |  3306 |           1 | Slave, Synced, Running
BS-PUB-GALERA-02   | 172.28.0.133    |  3306 |           1 | Master, Synced, Running
BS-PUB-GALERA-03   | 172.28.0.134    |  3306 |           1 | Maintenance, Slave, Synced, Running
-------------------+-----------------+-------+-------------+--------------------

これで、指定したサーバはメンテナンスモードに切り替わったため、このサーバにはアクセスされない。
なお、メンテナンスモードを終了する場合は以下のようにコマンドを実行する。

maxadmin -p パスワード(初期:mariadb) clear server サーバ名 maintenance

[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
BS-PUB-GALERA-01   | 172.28.0.132    |  3306 |           1 | Slave, Synced, Running
BS-PUB-GALERA-02   | 172.28.0.133    |  3306 |           1 | Master, Synced, Running
BS-PUB-GALERA-03   | 172.28.0.134    |  3306 |           1 | Maintenance, Slave, Synced, Running
-------------------+-----------------+-------+-------------+--------------------
[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb clear server BS-PUB-GALERA-03 maintenance
[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
BS-PUB-GALERA-01   | 172.28.0.132    |  3306 |           1 | Slave, Synced, Running
BS-PUB-GALERA-02   | 172.28.0.133    |  3306 |           1 | Master, Synced, Running
BS-PUB-GALERA-03   | 172.28.0.134    |  3306 |           1 | Slave, Synced, Running
-------------------+-----------------+-------+-------------+--------------------

なお、Masterノードをメンテナンスモードにする場合は、そのままだと書き込みができなくなってしまうため、別途以下のようにコマンドを実行しMasterノードを切り替える必要がある。

maxadmin -p パスワード(初期:mariadb) set server サーバ名 master

[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
BS-PUB-GALERA-01   | 172.28.0.132    |  3306 |           0 | Slave, Synced, Running
BS-PUB-GALERA-02   | 172.28.0.133    |  3306 |           0 | Master, Synced, Running
BS-PUB-GALERA-03   | 172.28.0.134    |  3306 |           0 | Synced, Running
-------------------+-----------------+-------+-------------+--------------------
[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb set server BS-PUB-GALERA-02 maintenance
[root@BS-PUB-GFRONT-01 ~]# mysql -u test -ppassword -h 127.0.0.1 -e 'insert into test1234.sample(id) values(1);'
ERROR 1045 (28000): failed to create new session
[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb set server BS-PUB-GALERA-03 master
[root@BS-PUB-GFRONT-01 ~]# maxadmin -p mariadb list servers
Servers.
-------------------+-----------------+-------+-------------+--------------------
Server             | Address         | Port  | Connections | Status
-------------------+-----------------+-------+-------------+--------------------
BS-PUB-GALERA-01   | 172.28.0.132    |  3306 |           0 | Slave, Synced, Running
BS-PUB-GALERA-02   | 172.28.0.133    |  3306 |           0 | Maintenance, Master, Synced, Running
BS-PUB-GALERA-03   | 172.28.0.134    |  3306 |           0 | Master, Synced, Running
-------------------+-----------------+-------+-------------+--------------------
[root@BS-PUB-GFRONT-01 ~]# mysql -u test -ppassword -h 127.0.0.1 -e 'insert into test1234.sample(id) values(1);'
[root@BS-PUB-GFRONT-01 ~]#