
Removed manual TOC, updated and combined the starting and stopping sections, removed leading space from code blocks.
264 lines
9.0 KiB
Markdown
264 lines
9.0 KiB
Markdown
# MariaDB MaxScale Administration Tutorial
|
|
|
|
The purpose of this tutorial is to introduce the MariaDB MaxScale Administrator
|
|
to a few of the common administration tasks. This is intended to be an
|
|
introduction for administrators who are new to MariaDB MaxScale and not a
|
|
reference to all the tasks that may be performed.
|
|
|
|
## Starting and Stopping MariaDB MaxScale
|
|
|
|
### Systemd
|
|
|
|
Most modern operating systems support the Systemd interface.
|
|
|
|
**Starting MaxScale:**
|
|
```
|
|
systemctl start maxscale
|
|
```
|
|
|
|
**Stopping MaxScale:**
|
|
```
|
|
systemctl stop maxscale
|
|
```
|
|
|
|
The MaxScale service file is located in `/lib/systemd/system/maxscale.service`.
|
|
|
|
### SysV
|
|
|
|
Legacy platforms should use the service interface to start MaxScale.
|
|
|
|
**Starting MaxScale:**
|
|
```
|
|
service maxscale start
|
|
```
|
|
|
|
**Stopping MaxScale:**
|
|
```
|
|
service maxscale stop
|
|
```
|
|
|
|
Additional command line arguments can be passed to MariaDB MaxScale with a
|
|
configuration file placed at `/etc/sysconfig/maxscale` on RPM installations and
|
|
`/etc/default/maxscale` file on DEB installations. Set the arguments in a
|
|
variable called `MAXSCALE_OPTIONS` and remember to surround the arguments with
|
|
quotes. The file should only contain environment variable declarations.
|
|
|
|
```
|
|
MAXSCALE_OPTIONS="--logdir=/home/maxscale/logs --piddir=/tmp --syslog=no"
|
|
```
|
|
|
|
Note that this is only supported on legacy SysV systems.
|
|
|
|
## Stopping MariaDB MaxScale via MaxAdmin
|
|
|
|
In order to shutdown MariaDB MaxScale using the maxadmin command you may either
|
|
connect with maxadmin in interactive mode or pass the "shutdown maxscale"
|
|
command you wish to execute as an argument to maxadmin.
|
|
|
|
```
|
|
sudo maxadmin shutdown maxscale
|
|
```
|
|
|
|
## Checking The Status Of The MariaDB MaxScale Services
|
|
|
|
It is possible to use the maxadmin command to obtain statistics about the
|
|
services that are running within MaxScale. The maxadmin command "list services"
|
|
will give very basic information regarding services. This command may be either
|
|
run in interactive mode or passed on the maxadmin command line.
|
|
|
|
```
|
|
$ maxadmin
|
|
MaxScale> list services
|
|
|
|
Services.
|
|
|
|
--------------------------+----------------------+--------+---------------
|
|
|
|
Service Name | Router Module | #Users | Total Sessions
|
|
|
|
--------------------------+----------------------+--------+---------------
|
|
|
|
RWSplitter | readwritesplit | 2 | 4
|
|
|
|
Cassandra | readconncouter | 1 | 1
|
|
|
|
CLI | cli | 2 | 2
|
|
|
|
--------------------------+----------------------+--------+---------------
|
|
|
|
MaxScale>
|
|
```
|
|
|
|
Network listeners count as a user of the service, therefore there will always be
|
|
one user per network port in which the service listens. More details can be
|
|
obtained by using the "show service" command.
|
|
|
|
## Persistent Connections
|
|
|
|
When clients who are accessing a database system through MariaDB MaxScale make
|
|
frequent short connections, there may be a benefit in using persistent
|
|
connections. This feature is controlled by two configuration values that are
|
|
specified per server in the relevant server section of the configuration file.
|
|
The configuration options are `persistpoolmax` and `persistmaxtime`.
|
|
|
|
Normally, when a client connection is terminated, all the related back end
|
|
database connections are also terminated. If the `persistpoolmax` options is set
|
|
to a non-zero integer, then up to that number of connections will be kept in a
|
|
pool for that server. When a new connection is requested by the system to handle
|
|
a client session, then a connection from the pool will be used if possible.
|
|
|
|
The connection will only be taken from the pool if it has been there for no more
|
|
than `persistmaxtime` seconds. The connection will also be discarded if it has
|
|
been disconnectedby the back end server. Connections will be selected so that
|
|
they match the user name and protocol for the new request.
|
|
|
|
Starting with MaxScale 2.1, when a MySQL protocol connection is taken from the
|
|
pool, the backend protocol module resets the session state. This allows
|
|
persistent connections to be used with no functional limitations.
|
|
|
|
The session state is reset when the first outgoing network transmission is done.
|
|
This _lazy initialization_ of the persistent connections allows MaxScale to take
|
|
multiple new connections into use but only initialize the ones that it actually
|
|
needs.
|
|
|
|
**Please note** that in versions before 2.1 the persistent connections may give
|
|
a different environment when compared to a fresh connection. For example, if the
|
|
previous use of the connection issued a "USE mydatabase;" statement then this
|
|
setting will be carried over into the reuse of the same connection. For many
|
|
applications this will not be noticeable, since each request will assume that
|
|
nothing has been set and will issue fresh requests such as "USE" to establish
|
|
the desired configuration. In exceptional cases this feature could be a problem.
|
|
|
|
It is possible to have pools for as many servers as you wish, with configuration
|
|
values in each server section.
|
|
|
|
## What Clients Are Connected To MariaDB MaxScale
|
|
|
|
To determine what client are currently connected to MariaDB MaxScale, you can
|
|
use the "list clients" command within maxadmin. This will give you IP address
|
|
and the ID’s of the DCB and session for that connection. As with any maxadmin
|
|
command this can be passed on the command line or typed interactively in
|
|
maxadmin.
|
|
|
|
```
|
|
$ maxadmin list clients
|
|
|
|
Client Connections
|
|
|
|
-----------------+------------------+----------------------+------------
|
|
|
|
Client | DCB | Service | Session
|
|
|
|
-----------------+------------------+----------------------+------------
|
|
|
|
127.0.0.1 | 0x7fe694013410 | CLI | 0x7fe69401ac10
|
|
|
|
-----------------+------------------+----------------------+------------
|
|
|
|
$
|
|
```
|
|
|
|
## Rotating the Log File
|
|
|
|
MariaDB MaxScale logs messages of different priority into a single log file.
|
|
With the exception if error messages that are always logged, whether messages of
|
|
a particular priority should be logged or not can be enabled via the maxadmin
|
|
interface or in the configuration file. By default, MaxScale keeps on writing to
|
|
the same log file. To prevent the file from growing indefinitely, the
|
|
administrator must take action.
|
|
|
|
The name of the log file is maxscale.log. When the log is rotated, MaxScale
|
|
closes the current log file and opens a new one using the same name.
|
|
|
|
Log file rotation is achieved by use of the "flush log" or “flush logs” command
|
|
in maxadmin.
|
|
|
|
```
|
|
maxadmin flush logs
|
|
```
|
|
|
|
As there currently is only the maxscale log, that is the only one that will be
|
|
rotated.
|
|
|
|
This may be integrated into the Linux _logrotate_ mechanism by adding a
|
|
configuration file to the /etc/logrotate.d directory. If we assume we want to
|
|
rotate the log files once per month and wish to keep 5 log files worth of
|
|
history, the configuration file would look as follows.
|
|
|
|
```
|
|
/var/log/maxscale/maxscale.log {
|
|
monthly
|
|
rotate 5
|
|
missingok
|
|
nocompress
|
|
sharedscripts
|
|
postrotate
|
|
\# run if maxscale is running
|
|
if test -n "`ps acx|grep maxscale`"; then
|
|
/usr/bin/maxadmin flush logs
|
|
fi
|
|
endscript
|
|
}
|
|
```
|
|
|
|
**Note**:
|
|
|
|
If 'root' user is no longer available for maxadmin connection and for example
|
|
'user1' is one of the allowed users, the maxadmin command should be run as:
|
|
|
|
`su - user1 -c '/usr/bin/maxadmin flush logs'`
|
|
|
|
If listening socket is not the default one, /tmp/maxadmin.sock, use -S option.
|
|
|
|
MariaDB MaxScale will also rotate all of its log files if it receives the USR1
|
|
signal. Using this the logrotate configuration script can be rewritten as
|
|
|
|
```
|
|
/var/log/maxscale/maxscale.log {
|
|
monthly
|
|
rotate 5
|
|
missingok
|
|
nocompress
|
|
sharedscripts
|
|
postrotate
|
|
kill -USR1 `cat /var/run/maxscale/maxscale.pid`
|
|
endscript
|
|
}
|
|
```
|
|
|
|
In older versions MaxScale renamed the log file, behaviour which is not fully
|
|
compliant with the assumptions of logrotate and may lead to issues, depending on
|
|
the used logrotate configuration file. From version 2.1 onwards, MaxScale will
|
|
not itself rename the log file, but when the log is rotated, MaxScale will
|
|
simply close and reopen (and truncate) the same log file. That will make the
|
|
behaviour fully compliant with logrotate.
|
|
|
|
## Taking A Database Server Out Of Use
|
|
|
|
MariaDB MaxScale supports the concept of maintenance mode for servers within a
|
|
cluster, this allows for planned, temporary removal of a database from the
|
|
cluster within the need to change the MariaDB MaxScale configuration.
|
|
|
|
To achieve the removal of a database server you can use the set server command
|
|
in the maxadmin utility to set the maintenance mode flag for the server. This
|
|
may be done interactively within maxadmin or by passing the command on the
|
|
command line.
|
|
|
|
```
|
|
sudo maxadmin set server dbserver3 maintenance
|
|
```
|
|
|
|
This will cause MariaDB MaxScale to stop routing any new requests to the server,
|
|
however if there are currently requests executing on the server these will not
|
|
be interrupted.
|
|
|
|
To bring the server back into service use the "clear server" command to clear
|
|
the maintenance mode bit for that server.
|
|
|
|
```
|
|
sudo maxadmin clear server dbserver3 maintenance
|
|
```
|
|
|
|
If multiple MariaDB MaxScale instances are configured to use the node
|
|
them maintenance mode must be set within each MariaDB MaxScale instance.
|