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 ~]#