1837 lines
		
	
	
		
			63 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			1837 lines
		
	
	
		
			63 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # MaxAdmin - Admin Interface
 | |
| 
 | |
| **NOTE:** MaxAdmin is deprecated, use [MaxCtrl](./MaxCtrl.md) instead.
 | |
| 
 | |
| # The Maxscale Administrative & Monitoring Client Application
 | |
| 
 | |
|  - [Overview](#overview)
 | |
|  - [Configuring MariaDB MaxScale for MaxAdmin](#configuring-mariadb-maxscale-for-maxadmin)
 | |
|  - [Running MaxAdmin](#running-maxadmin)
 | |
|  - [Working With Administration Interface Users](#working-with-administration-interface-users)
 | |
|  - [Getting Help](#getting-help)
 | |
|  - [Working with Services](#working-with-services)
 | |
|  - [Working with Servers](#working-with-servers)
 | |
|  - [Working with Sessions](#working-with-sessions)
 | |
|  - [Descriptor Control Blocks](#descriptor-control-blocks)
 | |
|  - [Working with Filters](#working-with-filters)
 | |
|  - [Working with Monitors](#working-with-monitors)
 | |
|  - [MariaDB MaxScale Status Commands](#maxscale-status-commands)
 | |
|  - [Administration Commands](#administration-commands)
 | |
|  - [Runtime Configuration Changes](#runtime-configuration-changes)
 | |
|    - [Servers](#servers)
 | |
|    - [Listeners](#listeners)
 | |
|    - [Monitors](#monitors)
 | |
|  - [Tuning MariaDB MaxScale](#tuning-mariadb-maxscale)
 | |
| 
 | |
| # Overview
 | |
| 
 | |
| MaxAdmin is a simple client interface that can be used to interact with the
 | |
| MariaDB MaxScale server, it allows the display of internal MariaDB MaxScale
 | |
| statistics, status and control of MariaDB MaxScale operations.
 | |
| 
 | |
| MaxAdmin supports
 | |
| 
 | |
| * Interactive user sessions
 | |
| 
 | |
| * Execution of one-off commands via command line arguments
 | |
| 
 | |
| * Execution of command scripts
 | |
| 
 | |
| # Configuring MariaDB MaxScale for MaxAdmin
 | |
| 
 | |
| In order to be able to use MaxAdmin, MariaDB MaxScale must be configured for it.
 | |
| 
 | |
| There are two ways MaxAdmin can connect to to MaxScale.
 | |
| 
 | |
| * Using a Unix domain socket.
 | |
| * Using a hostname and port.
 | |
| 
 | |
| The first alternative is introduced in MaxScale 2.0 and is the secure and
 | |
| recommended way. The second alternative is available for backward compatibility,
 | |
| but is _insecure_ and **deprecated** and _will be removed in a future version of
 | |
| MaxScale_.
 | |
| 
 | |
| An example configuration looks as follows:
 | |
| 
 | |
| ```
 | |
| [MaxAdmin]
 | |
| type=service
 | |
| router=cli
 | |
| 
 | |
| [MaxAdmin-Unix-Listener]
 | |
| type=listener
 | |
| service=MaxAdmin
 | |
| protocol=maxscaled
 | |
| socket=default
 | |
| 
 | |
| [MaxAdmin-Inet-Listener]
 | |
| type=listener
 | |
| service=MaxAdmin
 | |
| protocol=maxscaled
 | |
| address=localhost
 | |
| port=6603
 | |
| ```
 | |
| 
 | |
| In the configuration above, two listeners are created; one listening on the
 | |
| default Unix domain socket and one listening on the default port.
 | |
| 
 | |
| Which approach is used has other implications than just how the communication
 | |
| between MaxAdmin and MariaDB MaxScale is handled. In the former case, the
 | |
| authorization is based upon the Linux identity and in the latter case on
 | |
| explicitly created user accounts that have **no** relationship to the Linux
 | |
| accounts.
 | |
| 
 | |
| Note that if the socket path or port are changed, then MaxAdmin has to be
 | |
| invoked with `-S` or `-P` respectively.
 | |
| 
 | |
| # Running MaxAdmin
 | |
| 
 | |
| Depending on whether MariaDB MaxScale has been configured to use Unix domain
 | |
| sockets or internet sockets, MaxAdmin needs to be invoked slightly differently.
 | |
| 
 | |
| If Unix domain sockets are used, then MaxAdmin needs no additional arguments:
 | |
| 
 | |
| ```
 | |
| alice@host$ maxadmin
 | |
| MaxAdmin>
 | |
| ```
 | |
| 
 | |
| The above implies that the Linux user _alice_ has been enabled to use MaxAdmin.
 | |
| 
 | |
| If internet sockets are used, then either the host, port, user or password has
 | |
| to be specified explicitly:
 | |
| 
 | |
| ```
 | |
| alice@host$ maxadmin -u maxscale-admin
 | |
| Password:
 | |
| MaxScale>
 | |
| ```
 | |
| When internet sockets are enabled, initially it is possible to connect using
 | |
| the username `admin` and the password `mariadb`. These remain in effect as long
 | |
| as no other users have been created. As soon as the first user is added, the use
 | |
| of `admin/mariadb` as login credentials is disabled.
 | |
| 
 | |
| If Unix domain sockets are used, then initially only `root` has access. MaxAdmin
 | |
| usage can subsequently be enabled for other Linux users.
 | |
| 
 | |
| The MaxAdmin client application may be run in two different modes, either as an
 | |
| interactive command shell for executing commands against MariaDB MaxScale or by
 | |
| passing commands on the MaxAdmin command line itself.
 | |
| 
 | |
| # Working With Administration Interface Users
 | |
| 
 | |
| Both MaxAdmin and the newly added REST API use the administrative users of
 | |
| MaxScale. The network type administrative users are used by the REST API as well
 | |
| as MaxAdmin when it is configured to use a network listener. Linux account type
 | |
| users are only used by MaxAdmin when the UNIX Domain Socket interface is
 | |
| activated.
 | |
| 
 | |
| ## Administrative and Read-only Users
 | |
| 
 | |
| Administrative users can perform all operations that MaxScale offers. This
 | |
| includes both read-only operations as well as operations that modify the
 | |
| internal state of MaxScale or its modules.
 | |
| 
 | |
| The default user for both the network and the UNIX domain socket
 | |
| interfaces is an administrative user. This user will be removed once the
 | |
| first administrative user of that type is created. The default user for
 | |
| the network interface is `admin` with the password `mariadb`. The default
 | |
| user for the UNIX domain socket interface is `root`.
 | |
| 
 | |
| Users that can only perform read-only operations are created with `add
 | |
| readonly-user` command. These users can only perform operations that fetch data
 | |
| and do not modify the state of MaxScale.
 | |
| 
 | |
| To convert administrative users to read-only users, delete the old
 | |
| administrative user and create it as a read-only user.
 | |
| 
 | |
| ## What Users Have Been Defined?
 | |
| 
 | |
| In order to see the Linux users for whom MaxAdmin usage has been enabled and any
 | |
| explicitly created accounts, use the command _show users_.
 | |
| 
 | |
| ```
 | |
| MaxScale> show users
 | |
| Enabled Linux accounts (secure)    : alice, bob, cecil
 | |
| Created network accounts (insecure): maxscale-admin
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| Please note that `root` will not be shown.
 | |
| 
 | |
| ## Enabling a Linux account
 | |
| 
 | |
| To enable MaxAdmin usage for a particular Linux account, use the command _enable
 | |
| account_.  This command is passed a user name, which should be the same as that
 | |
| of an existing Linux user.
 | |
| 
 | |
| ```
 | |
| MaxScale> enable account bob
 | |
| ```
 | |
| 
 | |
| Note that it is not checked that the provided name indeed corresponds to an
 | |
| existing Linux account, so it is possible to enable an account that does not
 | |
| exist yet.
 | |
| 
 | |
| Note also that it is possible to enable a Linux account irrespective of how
 | |
| MaxAdmin has connected to MariaDB MaxScale. That is, the command is not
 | |
| restricted to MaxAdmin users connecting over a Unix domain socket.
 | |
| 
 | |
| ## Disabling a Linux account
 | |
| 
 | |
| To disable MaxAdmin usage for a particular Linux account, use the command
 | |
| _disable account_.  This command is passed a user name, which should be a Linux
 | |
| user for whom MaxAdmin usage earlier has been enabled.
 | |
| 
 | |
| ```
 | |
| MaxScale> disable account bob
 | |
| ```
 | |
| 
 | |
| Note also that it is possible to disable a Linux account irrespective of how
 | |
| MaxAdmin has connected to MariaDB MaxScale. That is, the command is not
 | |
| restricted to MaxAdmin users connecting over a Unix domain socket.
 | |
| 
 | |
| Note that it is possible to disable the current user, but that will only affect
 | |
| the next attempt to use MaxAdmin. `root` cannot be removed.
 | |
| 
 | |
| ## Add A New User
 | |
| 
 | |
| To add a new MaxAdmin user to be used when MaxAdmin connects over an internet
 | |
| socket, use the command _add user_. This command is passed a user name and a
 | |
| password.
 | |
| 
 | |
| ```
 | |
| MaxScale> add user maxscale-admin secretpwd
 | |
| User maxscale-admin has been successfully added.
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Delete A User
 | |
| 
 | |
| To remove a user the command _remove user_ is used and it is invoked with the
 | |
| username.
 | |
| 
 | |
| ```
 | |
| MaxScale> remove user maxscale-admin
 | |
| User maxscale-admin has been successfully removed.
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| Note that it is possible to remove the current user, but that will only affect
 | |
| the next attempt to use MaxAdmin. The last administrative account cannot be
 | |
| removed.
 | |
| 
 | |
| ## Creating Read-only Users
 | |
| 
 | |
| Currently, the `list` and `show` type commands are the only operations that
 | |
| read-only users can perform.
 | |
| 
 | |
| To create a read-only network user, use the `add readonly-user` command. To
 | |
| enable a local Linux account as a read-only user, use the `enable
 | |
| readonly-account` command. Both administrative and read-only users can be
 | |
| deleted with the `remove user` and `disable account` commands.
 | |
| 
 | |
| # Command Line Switches
 | |
| 
 | |
| The MaxAdmin command accepts a number of options. See the output of
 | |
| `maxadmin --help` for more details.
 | |
| 
 | |
| ## Interactive Operation
 | |
| 
 | |
| If no arguments other than the command line switches are passed to MaxAdmin it
 | |
| will enter its interactive mode of operation. Users will be prompted to enter
 | |
| commands with a **MaxScale>** prompt. The commands themselves are documented in
 | |
| the sections later in this document. A help system is available that will give
 | |
| some minimal details of the commands available.
 | |
| 
 | |
| Command history is available on platforms that support the libedit library. This
 | |
| allows the use of the up and down arrow keys to recall previous commands that
 | |
| have been executed by MaxAdmin. The default edit mode for the history is to
 | |
| emulate *emacs* commands, the behavior of libedit may however be customized using
 | |
| the .editrc file. To obtain the history of commands that have been executed use
 | |
| the inbuilt history command.
 | |
| 
 | |
| In interactive mode it is possible to execute a set of commands stored in an
 | |
| external file by using the source command. The command takes the argument of a
 | |
| filename which should contain a set of MariaDB MaxScale commands, one per
 | |
| line. These will be executed in the order they appear in the file.
 | |
| 
 | |
| ## Command Line Operation
 | |
| 
 | |
| MaxAdmin can also be used to execute commands that are passed on the command
 | |
| line, e.g.
 | |
| 
 | |
| ```
 | |
| -bash-4.1$ maxadmin -S /tmp/maxadmin.sock list services
 | |
| Password:
 | |
| Services.
 | |
| --------------------------+----------------------+--------+---------------
 | |
| Service Name              | Router Module        | #Users | Total Sessions
 | |
| --------------------------+----------------------+--------+---------------
 | |
| Test Service              | readconnroute        |      1 |     1
 | |
| Split Service             | readwritesplit       |      1 |     1
 | |
| Filter Service            | readconnroute        |      1 |     1
 | |
| QLA Service               | readconnroute        |      1 |     1
 | |
| Debug Service             | debugcli             |      1 |     1
 | |
| CLI                       | cli                  |      2 |    27
 | |
| --------------------------+----------------------+--------+---------------
 | |
| -bash-4.1$
 | |
| ```
 | |
| 
 | |
| The single command is executed and MaxAdmin then terminates. If the -p option is
 | |
| not given then MaxAdmin will prompt for a password. If a MariaDB MaxScale
 | |
| command requires an argument which contains whitespace, for example a service
 | |
| name, that name should be quoted. The quotes will be preserved and used in the
 | |
| execution of the MariaDB MaxScale command.
 | |
| 
 | |
| ```
 | |
| -bash-4.1$ maxadmin show service "QLA Service"
 | |
|     Password:
 | |
|     Service 0x70c6a0
 | |
|             Service:                QLA Service
 | |
|             Router:                 readconnroute (0x7ffff0f7ae60)
 | |
|             Number of router sessions:      0
 | |
|             Current no. of router sessions: 0
 | |
|             Number of queries forwarded:    0
 | |
|             Started:                Wed Jun 25 10:08:23 2014
 | |
|             Backend databases
 | |
|                     127.0.0.1:3309  Protocol: MariaDBBackend
 | |
|                     127.0.0.1:3308  Protocol: MariaDBBackend
 | |
|                     127.0.0.1:3307  Protocol: MariaDBBackend
 | |
|                     127.0.0.1:3306  Protocol: MariaDBBackend
 | |
|             Users data:             0x724340
 | |
|             Total connections:      1
 | |
|             Currently connected:    1
 | |
|     -bash-4.1$
 | |
| ```
 | |
| 
 | |
| Command files may be executed by redirecting them to MaxAdmin.
 | |
| 
 | |
| ```
 | |
| maxadmin < listall.ms
 | |
| ```
 | |
| 
 | |
| Another option is to use the #! mechanism to make the command file executable
 | |
| from the shell. To do this add a line at the start of your command file that
 | |
| contains the #! directive with the path of the MaxAdmin executable. Command
 | |
| options may also be given in this line. For example to create a script file that
 | |
| runs a set of list commands
 | |
| 
 | |
| ```
 | |
| #!/usr/bin/maxadmin
 | |
| list modules
 | |
| list servers
 | |
| list services
 | |
| list listeners
 | |
| list dcbs
 | |
| list sessions
 | |
| list filters
 | |
| ```
 | |
| 
 | |
| Then simply set this file to have execute permissions and it may be run like any
 | |
| other command in the Linux shell.
 | |
| 
 | |
| ## The .maxadmin file
 | |
| 
 | |
| MaxAdmin supports a mechanism to set defaults for the command line switches via
 | |
| a file in the home directory of the user. If a file named `.maxadmin` exists, it
 | |
| will be read and parameters set according to the entries in that file.
 | |
| 
 | |
| This mechanism can be used to provide defaults to the command line options. If a
 | |
| command line option is provided, it will still override the value in the
 | |
| `.maxadmin` file.
 | |
| 
 | |
| The parameters than can be set are:
 | |
|    * `1.4`: _hostname_, _port_, _user_ and _passwd_
 | |
|    * `2.0.0` and `2.0.1`: _socket_
 | |
|    * `2.0.2` onwards: _socket_, _hostname_, _port_, _user_ and _passwd_ (and as synonym _password_)
 | |
| 
 | |
| An example of a `.maxadmin` file that will alter the default socket path is:
 | |
| 
 | |
| ```
 | |
| socket=/somepath/maxadmin.socket
 | |
| ```
 | |
| 
 | |
| Note that if in `2.0.2` or later, a value for _socket_ as well as any of the
 | |
| internet socket related options, such as _hostname_, is provided in `.maxadmin`,
 | |
| then _socket_ takes precedence. In that case, provide at least one internet
 | |
| socket related option on the command line to force MaxAdmin to use an internet
 | |
| socket and thus the internet socket related options from `.maxadmin`.
 | |
| 
 | |
| The `.maxadmin` file may be made read only to protect any passwords written to
 | |
| that file.
 | |
| 
 | |
| # Getting Help
 | |
| 
 | |
| A help system is available that describes the commands available via the
 | |
| administration interface. To obtain a list of all commands available simply type
 | |
| the command `help`.
 | |
| 
 | |
| ```
 | |
| Available commands:
 | |
| add:
 | |
|     add user - Add insecure account for using maxadmin over the network
 | |
|     add server - Add a new server to a service
 | |
| 
 | |
| remove:
 | |
|     remove user - Remove account for using maxadmin over the network
 | |
|     remove server - Remove a server from a service or a monitor
 | |
| 
 | |
| create:
 | |
|     create server - Create a new server
 | |
|     create listener - Create a new listener for a service
 | |
|     create monitor - Create a new monitor
 | |
| 
 | |
| destroy:
 | |
|     destroy server - Destroy a server
 | |
|     destroy listener - Destroy a listener
 | |
|     destroy monitor - Destroy a monitor
 | |
| 
 | |
| alter:
 | |
|     alter server - Alter server parameters
 | |
|     alter monitor - Alter monitor parameters
 | |
|     alter service - Alter service parameters
 | |
|     alter maxscale - Alter maxscale parameters
 | |
| 
 | |
| set:
 | |
|     set server - Set the status of a server
 | |
|     set log_throttling - Set the log throttling configuration
 | |
| 
 | |
| clear:
 | |
|     clear server - Clear server status
 | |
| 
 | |
| disable:
 | |
|     disable log-priority - Disable a logging priority
 | |
|     disable sessionlog-priority - [Deprecated] Disable a logging priority for a particular session
 | |
|     disable root - Disable root access
 | |
|     disable syslog - Disable syslog logging
 | |
|     disable maxlog - Disable MaxScale logging
 | |
|     disable account - Disable Linux user
 | |
| 
 | |
| enable:
 | |
|     enable log-priority - Enable a logging priority
 | |
|     enable sessionlog-priority - [Deprecated] Enable a logging priority for a session
 | |
|     enable root - Enable root user access to a service
 | |
|     enable syslog - Enable syslog logging
 | |
|     enable maxlog - Enable MaxScale logging
 | |
|     enable account - Activate a Linux user account for MaxAdmin use
 | |
| 
 | |
| flush:
 | |
|     flush log - Flush the content of a log file and reopen it
 | |
|     flush logs - Flush the content of a log file and reopen it
 | |
| 
 | |
| list:
 | |
|     list clients - List all the client connections to MaxScale
 | |
|     list dcbs - List all active connections within MaxScale
 | |
|     list filters - List all filters
 | |
|     list listeners - List all listeners
 | |
|     list modules - List all currently loaded modules
 | |
|     list monitors - List all monitors
 | |
|     list services - List all services
 | |
|     list servers - List all servers
 | |
|     list sessions - List all the active sessions within MaxScale
 | |
|     list threads - List the status of the polling threads in MaxScale
 | |
|     list commands - List registered commands
 | |
| 
 | |
| reload:
 | |
|     reload config - Reload the configuration
 | |
|     reload dbusers - Reload the database users for a service
 | |
| 
 | |
| restart:
 | |
|     restart monitor - Restart a monitor
 | |
|     restart service - Restart a service
 | |
|     restart listener - Restart a listener
 | |
| 
 | |
| shutdown:
 | |
|     shutdown maxscale - Initiate a controlled shutdown of MaxScale
 | |
|     shutdown monitor - Stop a monitor
 | |
|     shutdown service - Stop a service
 | |
|     shutdown listener - Stop a listener
 | |
| 
 | |
| show:
 | |
|     show dcbs - Show all DCBs
 | |
|     show dbusers - [deprecated] Show user statistics
 | |
|     show authenticators - Show authenticator diagnostics for a service
 | |
|     show epoll - Show the polling system statistics
 | |
|     show eventstats - Show event queue statistics
 | |
|     show filter - Show filter details
 | |
|     show filters - Show all filters
 | |
|     show log_throttling - Show the current log throttling setting (count, window (ms), suppression (ms))
 | |
|     show modules - Show all currently loaded modules
 | |
|     show monitor - Show monitor details
 | |
|     show monitors - Show all monitors
 | |
|     show persistent - Show the persistent connection pool of a server
 | |
|     show server - Show server details
 | |
|     show servers - Show all servers
 | |
|     show serversjson - Show all servers in JSON
 | |
|     show services - Show all configured services in MaxScale
 | |
|     show service - Show a single service in MaxScale
 | |
|     show session - Show session details
 | |
|     show sessions - Show all active sessions in MaxScale
 | |
|     show tasks - Show all active housekeeper tasks in MaxScale
 | |
|     show threads - Show the status of the worker threads in MaxScale
 | |
|     show users - Show enabled Linux accounts
 | |
|     show version - Show the MaxScale version number
 | |
| 
 | |
| sync:
 | |
|     sync logs - Flush log files to disk
 | |
| 
 | |
| call:
 | |
|     call command - Call module command
 | |
| 
 | |
| 
 | |
| Type `help COMMAND` to see details of each command.
 | |
| Where commands require names as arguments and these names contain
 | |
| whitespace either the \ character may be used to escape the whitespace
 | |
| or the name may be enclosed in double quotes ".
 | |
| ```
 | |
| 
 | |
| To see more details on a particular command, and a list of the sub commands of
 | |
| the command, type help followed by the command name.
 | |
| 
 | |
| ```
 | |
| MaxScale> help list
 | |
| Available options to the `list` command:
 | |
| 
 | |
| list clients - List all the client connections to MaxScale
 | |
| 
 | |
| Usage: list clients
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list dcbs - List all active connections within MaxScale
 | |
| 
 | |
| Usage: list dcbs
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list filters - List all filters
 | |
| 
 | |
| Usage: list filters
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list listeners - List all listeners
 | |
| 
 | |
| Usage: list listeners
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list modules - List all currently loaded modules
 | |
| 
 | |
| Usage: list modules
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list monitors - List all monitors
 | |
| 
 | |
| Usage: list monitors
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list services - List all services
 | |
| 
 | |
| Usage: list services
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list servers - List all servers
 | |
| 
 | |
| Usage: list servers
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list sessions - List all the active sessions within MaxScale
 | |
| 
 | |
| Usage: list sessions
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list threads - List the status of the polling threads in MaxScale
 | |
| 
 | |
| Usage: list threads
 | |
| 
 | |
| ----------------------------------------------------------------------------
 | |
| 
 | |
| list commands - List registered commands
 | |
| 
 | |
| Usage: list commands [MODULE] [COMMAND]
 | |
| 
 | |
| Parameters:
 | |
| MODULE  Regular expressions for filtering module names
 | |
| COMMAND Regular expressions for filtering module command names
 | |
| 
 | |
| Example: list commands my-module my-command
 | |
| 
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| # Working With Services
 | |
| 
 | |
| A service is a very important concept in MariaDB MaxScale as it defines the
 | |
| mechanism by which clients interact with MariaDB MaxScale and can attached to
 | |
| the backend databases. A number of commands exist that allow interaction with
 | |
| the services.
 | |
| 
 | |
| ## What Services Are Available?
 | |
| 
 | |
| The _list services_ command can be used to discover what services are currently
 | |
| available within your MariaDB MaxScale configuration.
 | |
| 
 | |
| ```
 | |
| MaxScale> list services
 | |
| Services.
 | |
| --------------------------+-------------------+--------+----------------+-------------------
 | |
| Service Name              | Router Module     | #Users | Total Sessions | Backend databases
 | |
| --------------------------+-------------------+--------+----------------+-------------------
 | |
| RWSplit                   | readwritesplit    |      1 |              1 | server1, server2, server3, server4
 | |
| SchemaRouter              | schemarouter      |      1 |              1 | server1, server2, server3, server4
 | |
| RWSplit-Hint              | readwritesplit    |      1 |              1 | server1, server2, server3, server4
 | |
| ReadConn                  | readconnroute     |      1 |              1 | server1
 | |
| CLI                       | cli               |      2 |              2 |
 | |
| --------------------------+-------------------+--------+----------------+-------------------
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| In order to determine which ports services are using then the _list listeners_
 | |
| command can be used.
 | |
| 
 | |
| ```
 | |
| MaxScale> list listeners
 | |
| Listeners.
 | |
| ----------------------+---------------------+--------------------+-----------------+-------+--------
 | |
| Name                  | Service Name        | Protocol Module    | Address         | Port  | State
 | |
| ----------------------+---------------------+--------------------+-----------------+-------+--------
 | |
| RWSplit-Listener      | RWSplit             | MariaDBClient      | *               |  4006 | Running
 | |
| SchemaRouter-Listener | SchemaRouter        | MariaDBClient      | *               |  4010 | Running
 | |
| RWSplit-Hint-Listener | RWSplit-Hint        | MariaDBClient      | *               |  4009 | Running
 | |
| ReadConn-Listener     | ReadConn            | MariaDBClient      | *               |  4008 | Running
 | |
| CLI-Listener          | CLI                 | maxscaled          | default         |     0 | Running
 | |
| ----------------------+---------------------+--------------------+-----------------+-------+--------
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## See Service Details
 | |
| 
 | |
| It is possible to see the details of an individual service using the _show
 | |
| service_ command. This command should be passed the name of the service you wish
 | |
| to examine as an argument. Where a service name contains spaces characters there
 | |
| should either be escaped or the name placed in quotes.
 | |
| 
 | |
| ```
 | |
| MaxScale> show service RWSplit
 | |
| 	Service:                             RWSplit
 | |
| 	Router:                              readwritesplit
 | |
| 	State:                               Started
 | |
| 
 | |
| 	use_sql_variables_in:      all
 | |
| 	slave_selection_criteria:  LEAST_CURRENT_OPERATIONS
 | |
| 	master_failure_mode:       fail_instantly
 | |
| 	max_slave_replication_lag: -1
 | |
| 	retry_failed_reads:        true
 | |
| 	strict_multi_stmt:         true
 | |
| 	disable_sescmd_history:    true
 | |
| 	max_sescmd_history:        0
 | |
| 	master_accept_reads:       false
 | |
| 
 | |
| 	Number of router sessions:           	0
 | |
| 	Current no. of router sessions:      	1
 | |
| 	Number of queries forwarded:          	0
 | |
| 	Number of queries forwarded to master:	0 (0.00%)
 | |
| 	Number of queries forwarded to slave: 	0 (0.00%)
 | |
| 	Number of queries forwarded to all:   	0 (0.00%)
 | |
| 	Started:                             Thu Apr 20 09:45:13 2017
 | |
| 	Root user access:                    Disabled
 | |
| 	Backend databases:
 | |
| 		[127.0.0.1]:3000    Protocol: MariaDBBackend    Name: server1
 | |
| 		[127.0.0.1]:3001    Protocol: MariaDBBackend    Name: server2
 | |
| 		[127.0.0.1]:3002    Protocol: MariaDBBackend    Name: server3
 | |
| 		[127.0.0.1]:3003    Protocol: MariaDBBackend    Name: server4
 | |
| 	Total connections:                   1
 | |
| 	Currently connected:                 1
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| This allows the set of backend servers defined by the service to be seen along
 | |
| with the service statistics and other information.
 | |
| 
 | |
| ## Examining Service Users
 | |
| 
 | |
| MariaDB MaxScale provides an authentication model by which the client
 | |
| application authenticates with MariaDB MaxScale using the credentials they would
 | |
| normally use to with the database itself. MariaDB MaxScale loads the user data
 | |
| from one of the backend databases defined for the service. The _show dbusers_
 | |
| command can be used to examine the user data held by MariaDB MaxScale.
 | |
| 
 | |
| ```
 | |
| MaxScale> show dbusers RWSplit
 | |
| User names: @localhost @localhost.localdomain 14567USER@localhost monuser@localhost monuser@% 14609USER@localhost maxuser@localhost maxuser@% 14651USER@localhost maxtest@localhost maxtest@% 14693USER@localhost skysql@localhost skysql@% 14735USER@localhost cliuser@localhost cliuser@% repuser@localhost repuser@%
 | |
| MaxScale>
 | |
| 
 | |
| ```
 | |
| 
 | |
| ## Reloading Service User Data
 | |
| 
 | |
| MariaDB MaxScale will automatically reload user data if there are failed
 | |
| authentication requests from client applications. This reloading is rate limited
 | |
| and triggered by missing entries in the MariaDB MaxScale table. If a user is
 | |
| removed from the backend database user table it will not trigger removal from
 | |
| the MariaDB MaxScale internal table. The reload dbusers command can be used to
 | |
| force the reloading of the user table within MariaDB MaxScale.
 | |
| 
 | |
| ```
 | |
| MaxScale> reload dbusers RWSplit
 | |
| Reloaded database users for service RWSplit.
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Stopping A Service
 | |
| 
 | |
| It is possible to stop a service from accepting new connections by using the
 | |
| _shutdown service_ command. This will not affect the connections that are
 | |
| already in place for a service, but will stop any new connections from being
 | |
| accepted.
 | |
| 
 | |
| Connection requests are not processed while a service is stopped. New connection
 | |
| requests will remain in a queue that is processed once the service is
 | |
| restarted. A client application will see old connections work normally but new
 | |
| connections are unresponsive as long as the service is stopped.
 | |
| 
 | |
| **Note:** To forcefully prevent new connections from being made,
 | |
|           [destroy the listener](#destroying-listeners).
 | |
| 
 | |
| ```
 | |
| MaxScale> shutdown service RWSplit
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Restart A Stopped Service
 | |
| 
 | |
| A stopped service may be restarted by using the _restart service_ command.
 | |
| 
 | |
| ```
 | |
| MaxScale> restart service RWSplit
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| # Working With Servers
 | |
| 
 | |
| The server represents each of the instances of MariaDB or MySQL that a service
 | |
| may use.
 | |
| 
 | |
| ## What Servers Are Configured?
 | |
| 
 | |
| The command _list servers_ can be used to display a list of all the servers
 | |
| configured within MariaDB MaxScale.
 | |
| 
 | |
| ```
 | |
| MaxScale> list servers
 | |
| Servers.
 | |
| -------------------+-----------------+-------+-------------+--------------------
 | |
| Server             | Address         | Port  | Connections | Status
 | |
| -------------------+-----------------+-------+-------------+--------------------
 | |
| server1            | 127.0.0.1       |  3000 |           0 | Master, Running
 | |
| server2            | 127.0.0.1       |  3001 |           0 | Slave, Running
 | |
| server3            | 127.0.0.1       |  3002 |           0 | Slave, Running
 | |
| server4            | 127.0.0.1       |  3003 |           0 | Slave, Running
 | |
| -------------------+-----------------+-------+-------------+--------------------
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Server Details
 | |
| 
 | |
| It is possible to see more details regarding a given server using the _show
 | |
| server_ command.
 | |
| 
 | |
| ```
 | |
| MaxScale> show server server2
 | |
| Server 0x6501d0 (server2)
 | |
| 	Server:                              127.0.0.1
 | |
| 	Status:                              Slave, Running
 | |
| 	Protocol:                            MariaDBBackend
 | |
| 	Port:                                3001
 | |
| 	Server Version:                      10.1.22-MariaDB
 | |
| 	Node Id:                             3001
 | |
| 	Master Id:                           3000
 | |
| 	Slave Ids:
 | |
| 	Repl Depth:                          1
 | |
| 	Number of connections:               0
 | |
| 	Current no. of conns:                0
 | |
| 	Current no. of operations:           0
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| If the server has a non-zero value set for the server configuration item
 | |
| "persistpoolmax", then additional information will be shown:
 | |
| 
 | |
| ```
 | |
|     Persistent pool size:            1
 | |
|     Persistent measured pool size:   1
 | |
|     Persistent pool max size:        10
 | |
|     Persistent max time (secs):      3660
 | |
| ```
 | |
| 
 | |
| The distinction between pool size and measured pool size is that the first is a
 | |
| counter that is updated when operations affect the persistent connections pool,
 | |
| whereas the measured size is the result of checking how many persistent
 | |
| connections are currently in the pool. It can be slightly different, since any
 | |
| expired connections are removed during the check.
 | |
| 
 | |
| ## Setting The State Of A Server
 | |
| 
 | |
| MariaDB MaxScale maintains a number of status flags for each server that is
 | |
| configured. These status flags are normally maintained by the monitors but there
 | |
| are two commands in the user interface that can be used to manually set these
 | |
| flags; the _set server_ and _clear server_ commands.
 | |
| 
 | |
| |Flag       |Description                                                                                |
 | |
| |-----------|-------------------------------------------------------------------------------------------|
 | |
| |running    |The server is responding to requests, accepting connections and executing database commands|
 | |
| |master     |The server is a master in a replication or it can be used for database writes              |
 | |
| |slave      |The server is a replication slave or is considered as a read only database                 |
 | |
| |synced     |The server is a fully fledged member of a Galera cluster                                   |
 | |
| |maintenance|The server is in maintenance mode. It won't be used by services or monitored by monitors   |
 | |
| |stale      |The server is a [stale master server](../Monitors/MariaDB-Monitor.md)                      |
 | |
| 
 | |
| All status flags, with the exception of the maintenance flag, will be set by the
 | |
| monitors that are monitoring the server. If manual control is required the
 | |
| monitor should be stopped.
 | |
| 
 | |
| ```
 | |
| MaxScale> set server server3 maintenance
 | |
| MaxScale> clear server server3 maintenance
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Viewing the persistent pool of DCB
 | |
| 
 | |
| The DCBs that are in the pool for a particular server can be displayed (in the
 | |
| format described below in the DCB section) with a command like:
 | |
| 
 | |
| ```
 | |
| MaxScale> show persistent server1
 | |
| Number of persistent DCBs: 0
 | |
| ```
 | |
| 
 | |
| # Working With Sessions
 | |
| 
 | |
| The MariaDB MaxScale session represents the state within MariaDB
 | |
| MaxScale. Sessions are dynamic entities and not named in the configuration file,
 | |
| this means that sessions can not be easily named within the user interface. The
 | |
| sessions are referenced using ID values, these are actually memory address,
 | |
| however the important thing is that no two session have the same ID.
 | |
| 
 | |
| ## What Sessions Are Active in MariaDB MaxScale?
 | |
| 
 | |
| There are a number of ways to find out what sessions are active, the most
 | |
| comprehensive being the _list sessions_ command.
 | |
| 
 | |
| ```
 | |
| MaxScale> list sessions
 | |
| -----------------+-----------------+----------------+--------------------------
 | |
| Session          | Client          | Service        | State
 | |
| -----------------+-----------------+----------------+--------------------------
 | |
| 10               | localhost       | CLI            | Session ready for routing
 | |
| 11               | ::ffff:127.0.0.1 | RWSplit        | Session ready for routing
 | |
| -----------------+-----------------+----------------+--------------------------
 | |
| 
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| This will give a list of client connections.
 | |
| 
 | |
| ## Display Session Details
 | |
| 
 | |
| Once the session ID has been determined using one of the above method it is
 | |
| possible to determine more detail regarding a session by using the _show
 | |
| session_ command.
 | |
| 
 | |
| ```
 | |
| MaxScale> show session 11
 | |
| Session 11
 | |
| 	State:               Session ready for routing
 | |
| 	Service:             RWSplit
 | |
| 	Client Address:          maxuser@::ffff:127.0.0.1
 | |
| 	Connected:               Thu Apr 20 09:51:31 2017
 | |
| 
 | |
| 	Idle:                82 seconds
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| # Descriptor Control Blocks
 | |
| 
 | |
| The Descriptor Control Block or DCB is a very important entity within MariaDB
 | |
| MaxScale, it represents the state of each connection within MariaDB MaxScale. A
 | |
| DCB is allocated for every connection from a client, every network listener and
 | |
| every connection to a backend database. Statistics for each of these connections
 | |
| are maintained within these DCB’s.
 | |
| 
 | |
| As with session above the DCB’s are not named and are therefore referred to by
 | |
| the use of a unique ID, the memory address of the DCB.
 | |
| 
 | |
| ## Finding DCB’s
 | |
| 
 | |
| There are several ways to determine what DCB’s are active within a MariaDB
 | |
| MaxScale server, the most straightforward being the _list dcbs_ command.
 | |
| 
 | |
| ```
 | |
| MaxScale> list dcbs
 | |
| Descriptor Control Blocks
 | |
| ------------------+----------------------------+--------------------+----------
 | |
|  DCB              | State                      | Service            | Remote
 | |
| ------------------+----------------------------+--------------------+----------
 | |
|  0x68c0a0         | DCB for listening socket   | RWSplit            |
 | |
|  0x6e23f0         | DCB for listening socket   | CLI                |
 | |
|  0x691710         | DCB for listening socket   | SchemaRouter       |
 | |
|  0x7fffe40130f0   | DCB in the polling loop    | CLI                | localhost
 | |
|  0x6b7540         | DCB for listening socket   | RWSplit-Hint       |
 | |
|  0x6cd020         | DCB for listening socket   | ReadConn           |
 | |
|  0x7fffd80130f0   | DCB in the polling loop    | RWSplit            | ::ffff:127.0.0.1
 | |
|  0x7fffdc014590   | DCB in the polling loop    | RWSplit            |
 | |
|  0x7fffdc0148d0   | DCB in the polling loop    | RWSplit            |
 | |
|  0x7fffdc014c60   | DCB in the polling loop    | RWSplit            |
 | |
|  0x7fffdc014ff0   | DCB in the polling loop    | RWSplit            |
 | |
| ------------------+----------------------------+--------------------+----------
 | |
| 
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| A MariaDB MaxScale server that has activity on it will however have many more
 | |
| DCB’s than in the example above, making it hard to find the DCB that you
 | |
| require. The DCB ID is also included in a number of other command outputs,
 | |
| depending on the information you have it may be easier to use other methods to
 | |
| locate a particular DCB.
 | |
| 
 | |
| ## DCB Of A Client Connection
 | |
| 
 | |
| To find the DCB for a particular client connection it may be best to start with
 | |
| the list clients command and then look at each DCB for a particular client
 | |
| address to determine the one of interest.
 | |
| 
 | |
| ## DCB Details
 | |
| 
 | |
| The details of DCBs can be obtained by use of the _show dcbs_
 | |
| command
 | |
| 
 | |
| ```
 | |
| DCB: 0x68c0a0
 | |
| 	DCB state:          DCB for listening socket
 | |
| 	Service:            RWSplit
 | |
| 	Role:                     Service Listener
 | |
| 	Statistics:
 | |
| 		No. of Reads:             0
 | |
| 		No. of Writes:            0
 | |
| 		No. of Buffered Writes:   0
 | |
| 		No. of Accepts:           1
 | |
| 		No. of High Water Events: 0
 | |
| 		No. of Low Water Events:  0
 | |
| DCB: 0x7fffd80130f0
 | |
| 	DCB state:          DCB in the polling loop
 | |
| 	Service:            RWSplit
 | |
| 	Connected to:       ::ffff:127.0.0.1
 | |
| 	Username:           maxuser
 | |
| 	Role:                     Client Request Handler
 | |
| 	Statistics:
 | |
| 		No. of Reads:             5
 | |
| 		No. of Writes:            0
 | |
| 		No. of Buffered Writes:   6
 | |
| 		No. of Accepts:           0
 | |
| 		No. of High Water Events: 0
 | |
| 		No. of Low Water Events:  0
 | |
| DCB: 0x7fffdc014590
 | |
| 	DCB state:          DCB in the polling loop
 | |
| 	Service:            RWSplit
 | |
| 	Server name/IP:     127.0.0.1
 | |
| 	Port number:        3000
 | |
| 	Protocol:           MariaDBBackend
 | |
| 	Server status:            Master, Running
 | |
| 	Role:                     Backend Request Handler
 | |
| 	Statistics:
 | |
| 		No. of Reads:             4
 | |
| 		No. of Writes:            0
 | |
| 		No. of Buffered Writes:   3
 | |
| 		No. of Accepts:           0
 | |
| 		No. of High Water Events: 0
 | |
| 		No. of Low Water Events:  0
 | |
| ```
 | |
| 
 | |
| The information Username, Protocol, Server Status are not always relevant, and
 | |
| will not be shown when they are null.  The time the DCB was added to the
 | |
| persistent pool is only shown for a DCB that is in a persistent pool.
 | |
| 
 | |
| # Working with Filters
 | |
| 
 | |
| Filters allow the request contents and result sets from a database to be
 | |
| modified for a client connection, pipelines of filters can be created between
 | |
| the client connection and MariaDB MaxScale router modules.
 | |
| 
 | |
| ## What Filters Are Configured?
 | |
| 
 | |
| Filters are configured in the configuration file for MariaDB MaxScale, they are
 | |
| given names and may be included in the definition of a service. The _list
 | |
| filters_ command can be used to determine which filters are defined.
 | |
| 
 | |
| ```
 | |
| MaxScale> list filters
 | |
| Filters
 | |
| --------------------+-----------------+----------------------------------------
 | |
| Filter              | Module          | Options
 | |
| --------------------+-----------------+----------------------------------------
 | |
| counter             | testfilter      |
 | |
| QLA                 | qlafilter       | /tmp/QueryLog
 | |
| Replicate           | tee             |
 | |
| QLA_BLR             | qlafilter       | /tmp/QueryLog.blr0
 | |
| regex               | regexfilter     |
 | |
| MySQL5.1            | regexfilter     |
 | |
| top10               | topfilter       |
 | |
| --------------------+-----------------+----------------------------------------
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Retrieve Details Of A Filter Configuration
 | |
| 
 | |
| The command _show filter_ can be used to display information related to a
 | |
| particular filter.
 | |
| 
 | |
| ```
 | |
| MaxScale> show filter QLA
 | |
| Filter 0x719460 (QLA)
 | |
|     Module: qlafilter
 | |
|     Options:        /tmp/QueryLog
 | |
|             Limit logging to connections from       127.0.0.1
 | |
|             Include queries that match              select.*from.*user.*where
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Filter Usage
 | |
| 
 | |
| The _show session_ command will include details for each of the filters in use
 | |
| within a session.  First use _list sessions_ or _list clients_ to find the
 | |
| session of interest and then run the _show session_ command
 | |
| 
 | |
| ```
 | |
| MaxScale> list sessions
 | |
| -----------------+-----------------+----------------+--------------------------
 | |
| Session          | Client          | Service        | State
 | |
| -----------------+-----------------+----------------+--------------------------
 | |
| 6                | ::ffff:127.0.0.1 | RWSplit-Top    | Session ready for routing
 | |
| 7                | localhost       | CLI            | Session ready for routing
 | |
| -----------------+-----------------+----------------+--------------------------
 | |
| 
 | |
| MaxScale> show session 6
 | |
| Session 6
 | |
| 	State:               Session ready for routing
 | |
| 	Service:             RWSplit-Top
 | |
| 	Client Address:          maxuser@::ffff:127.0.0.1
 | |
| 	Connected:               Thu Apr 20 09:58:38 2017
 | |
| 
 | |
| 	Idle:                9 seconds
 | |
| 	Filter: Top
 | |
| 		Report size            10
 | |
| 		Logging to file /tmp/top.1.
 | |
| 		Current Top 10:
 | |
| 		1 place:
 | |
| 			Execution time: 0.000 seconds
 | |
| 			SQL: show tables from information_schema
 | |
| 		2 place:
 | |
| 			Execution time: 0.000 seconds
 | |
| 			SQL: show databases
 | |
| 		3 place:
 | |
| 			Execution time: 0.000 seconds
 | |
| 			SQL: show tables
 | |
| 		4 place:
 | |
| 			Execution time: 0.000 seconds
 | |
| 			SQL: select @@version_comment limit 1
 | |
| ```
 | |
| 
 | |
| The data displayed varies from filter to filter, the example above is the top
 | |
| filter. This filter prints a report of the current top queries at the time the
 | |
| show session command is run.
 | |
| 
 | |
| # Working With Monitors
 | |
| 
 | |
| Monitors are used to monitor the state of databases within MariaDB MaxScale in
 | |
| order to supply information to other modules, specifically the routers within
 | |
| MariaDB MaxScale.
 | |
| 
 | |
| ## What Monitors Are Running?
 | |
| 
 | |
| To see what monitors are running within MariaDB MaxScale use the _list monitors_
 | |
| command.
 | |
| 
 | |
| ```
 | |
| MaxScale> list monitors
 | |
| ---------------------+---------------------
 | |
| Monitor              | Status
 | |
| ---------------------+---------------------
 | |
| MySQL-Monitor        | Running
 | |
| ---------------------+---------------------
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Details Of A Particular Monitor
 | |
| 
 | |
| To see the details of a particular monitor use the _show monitor_ command.
 | |
| 
 | |
| ```
 | |
| MaxScale> show monitor MySQL-Monitor
 | |
| Monitor:           0x6577e0
 | |
| Name:              MySQL-Monitor
 | |
| State:             Running
 | |
| Sampling interval: 10000 milliseconds
 | |
| Connect Timeout:   3 seconds
 | |
| Read Timeout:      1 seconds
 | |
| Write Timeout:     2 seconds
 | |
| Monitored servers: [127.0.0.1]:3000, [127.0.0.1]:3001, [127.0.0.1]:3002, [127.0.0.1]:3003
 | |
| MaxScale MonitorId:	0
 | |
| Replication lag:	disabled
 | |
| Detect Stale Master:	enabled
 | |
| Server information
 | |
| 
 | |
| Server: server1
 | |
| Server ID: 3000
 | |
| Read only: OFF
 | |
| Slave configured: NO
 | |
| Slave IO running: NO
 | |
| Slave SQL running: NO
 | |
| Master ID: -1
 | |
| Master binlog file:
 | |
| Master binlog position: 0
 | |
| 
 | |
| Server: server2
 | |
| Server ID: 3001
 | |
| Read only: OFF
 | |
| Slave configured: YES
 | |
| Slave IO running: YES
 | |
| Slave SQL running: YES
 | |
| Master ID: 3000
 | |
| Master binlog file: binlog.000001
 | |
| Master binlog position: 435
 | |
| 
 | |
| Server: server3
 | |
| Server ID: 3002
 | |
| Read only: OFF
 | |
| Slave configured: YES
 | |
| Slave IO running: YES
 | |
| Slave SQL running: YES
 | |
| Master ID: 3000
 | |
| Master binlog file: binlog.000001
 | |
| Master binlog position: 435
 | |
| 
 | |
| Server: server4
 | |
| Server ID: 3003
 | |
| Read only: OFF
 | |
| Slave configured: YES
 | |
| Slave IO running: YES
 | |
| Slave SQL running: YES
 | |
| Master ID: 3000
 | |
| Master binlog file: binlog.000001
 | |
| Master binlog position: 435
 | |
| 
 | |
| 
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Shutting Down A Monitor
 | |
| 
 | |
| A monitor may be shutdown using the _shutdown monitor_ command. This allows for
 | |
| manual control of the status of servers using the _set server_ and _clear
 | |
| server_ commands.
 | |
| 
 | |
| ```
 | |
| MaxScale> shutdown monitor MySQL-Monitor
 | |
| MaxScale> list monitors
 | |
| ---------------------+---------------------
 | |
| Monitor              | Status
 | |
| ---------------------+---------------------
 | |
| MySQL-Monitor        | Stopped
 | |
| ---------------------+---------------------
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Restarting A Monitor
 | |
| 
 | |
| A monitor that has been shutdown may be restarted using the _restart monitor_
 | |
| command.
 | |
| 
 | |
| ```
 | |
| MaxScale> restart monitor MySQL-Monitor
 | |
| MaxScale> list monitors
 | |
| ---------------------+---------------------
 | |
| Monitor              | Status
 | |
| ---------------------+---------------------
 | |
| MySQL-Monitor        | Running
 | |
| ---------------------+---------------------
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| # MaxScale Status Commands
 | |
| 
 | |
| A number of commands exists that enable the internal MariaDB MaxScale status to
 | |
| be revealed, these commands give an insight to how MariaDB MaxScale is using
 | |
| resource internally and are used to allow the tuning process to take place.
 | |
| 
 | |
| ## MariaDB MaxScale Thread Usage
 | |
| 
 | |
| MariaDB MaxScale uses a number of threads, as defined in the MariaDB MaxScale
 | |
| configuration file, to execute the processing of requests received from clients
 | |
| and the handling of responses.
 | |
| 
 | |
| The _show threads_ command can be used to determine how many descriptors the
 | |
| threads are currently handling and how many descriptors the threads have handled
 | |
| in total during the life-time of MaxScale, and the current and historical load
 | |
| of the threads.
 | |
| ```
 | |
| MaxScale> show threads
 | |
| Polling Threads.
 | |
| 
 | |
|  ID | State      | #descriptors (curr) | #descriptors (tot)  | Load (1s) | Load (1m) | Load (1h) |
 | |
| ----+------------+---------------------+---------------------+-----------+-----------+-----------+
 | |
|   0 | Processing |                   3 |                   3 |         0 |         0 |         0 |
 | |
|   1 |    Polling |                   2 |                   2 |         0 |         0 |         0 |
 | |
|   2 |    Polling |                   2 |                   2 |         0 |         0 |         0 |
 | |
|   3 |    Polling |                   2 |                   2 |         0 |         0 |         0 |
 | |
| ```
 | |
| Note that as a client session may consist of one client descriptor and
 | |
| several server descriptors, it is not possible to deduce the number of
 | |
| client sessions from the descriptor count alone. If MaxScale is running ok,
 | |
| the number of current and total descriptors should be roughly the same for
 | |
| all threads.
 | |
| 
 | |
| The `Load (1s)` column shows the load during the last measured second, an
 | |
| operation which is performed once per second. That is, the displayed value
 | |
| shows the load for the second that ended 0 - 1 seconds before the
 | |
| `show threads` command was issued.
 | |
| 
 | |
| The load during the measured second is defined as
 | |
| `100 * (1 - time-spent-blocked-in-epoll_wait() / 1)` which translates into
 | |
| a load of `0` if the thread is blocked in `epoll_wait()` for the entire
 | |
| second, waiting for events to process, and `100` if the thread spends no time
 | |
| blocked in `epoll_wait()` but processing events for the entire duration.
 | |
| 
 | |
| The `Load (1m)` value is the moving average of the last 60 second load values
 | |
| and the `Load (1h)` value is the moving average of the last 60 minute load
 | |
| values.
 | |
| 
 | |
| ## The Housekeeper Tasks
 | |
| 
 | |
| Internally MariaDB MaxScale has a housekeeper thread that is used to perform
 | |
| periodic tasks, it is possible to use the command show tasks to see what tasks
 | |
| are outstanding within the housekeeper.
 | |
| 
 | |
| ```
 | |
| MaxScale> show tasks
 | |
| Name                      | Type     | Frequency | Next Due
 | |
| --------------------------+----------+-----------+-------------------------
 | |
| Load Average              | Repeated | 10        | Thu Apr 20 10:02:26 2017
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| # Administration Commands
 | |
| 
 | |
| ## What Modules Are In use?
 | |
| 
 | |
| In order to determine what modules are in use, and the version and status of
 | |
| those modules the _list modules_ command can be used.
 | |
| 
 | |
| ```
 | |
| MaxScale> list modules
 | |
| Modules.
 | |
| ----------------+-----------------+---------+-------+-------------------------
 | |
| Module Name     | Module Type     | Version | API   | Status
 | |
| ----------------+-----------------+---------+-------+-------------------------
 | |
| qc_sqlite       | QueryClassifier | V1.0.0  | 1.1.0 | Beta
 | |
| MySQLAuth       | Authenticator   | V1.1.0  | 1.1.0 | GA
 | |
| MariaDBClient   | Protocol        | V1.1.0  | 1.1.0 | GA
 | |
| MaxAdminAuth    | Authenticator   | V2.1.0  | 1.1.0 | GA
 | |
| maxscaled       | Protocol        | V2.0.0  | 1.1.0 | GA
 | |
| MySQLBackendAuth| Authenticator   | V1.0.0  | 1.1.0 | GA
 | |
| MariaDBBackend  | Protocol        | V2.0.0  | 1.1.0 | GA
 | |
| mariadbmon      | Monitor         | V1.5.0  | 3.0.0 | GA
 | |
| schemarouter    | Router          | V1.0.0  | 2.0.0 | Beta
 | |
| readwritesplit  | Router          | V1.1.0  | 2.0.0 | GA
 | |
| topfilter       | Filter          | V1.0.1  | 2.2.0 | GA
 | |
| readconnroute   | Router          | V1.1.0  | 2.0.0 | GA
 | |
| cli             | Router          | V1.0.0  | 2.0.0 | GA
 | |
| ----------------+-----------------+---------+-------+-------------------------
 | |
| 
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| This command provides important version information for the module. Each module
 | |
| has two versions; the version of the module itself and the version of the module
 | |
| API that it supports. Also included in the output is the status of the module,
 | |
| this may be "In Development", “Alpha”, “Beta”, “GA” or “Experimental”.
 | |
| 
 | |
| ## Enabling syslog and maxlog logging
 | |
| 
 | |
| MariaDB MaxScale can log messages to syslog, to a log file or to both. The
 | |
| approach can be set in the config file, but can also be changed from
 | |
| maxadmin. Syslog logging is identified by *syslog* and file logging by *maxlog*.
 | |
| 
 | |
| ```
 | |
| MaxScale> enable syslog
 | |
| MaxScale> disable maxlog
 | |
| ```
 | |
| 
 | |
| **NOTE** If you disable both, then you will see no messages at all.
 | |
| 
 | |
| ## Rotating the log file
 | |
| 
 | |
| MariaDB MaxScale logs messages to a log file in the log directory of MariaDB
 | |
| MaxScale. As the log file grows continuously, it is recommended to periodically
 | |
| rotate it. When rotated, the current log file will be closed and a new one with
 | |
| the *same* name opened.
 | |
| 
 | |
| To retain the earlier log entries, you need to first rename the log file and then
 | |
| instruct MaxScale to rotate it.
 | |
| 
 | |
| ```
 | |
| $ mv maxscale.log maxscale1.log
 | |
| $ # MaxScale continues to write to maxscale1.log
 | |
| $ kill -SIGUSR1 <maxscale-pid>
 | |
| $ # MaxScale closes the file (i.e. maxscale1.log) and reopens maxscale.log
 | |
| ```
 | |
| 
 | |
| There are two ways for rotating the log - *flush log maxscale* and *flush logs*;
 | |
| the result is identical. The two alternatives are due to historical
 | |
| reasons; earlier MariaDB MaxScale had several different log files.
 | |
| 
 | |
| ```
 | |
| MaxScale> flush log maxscale
 | |
| MaxScale> flush logs
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| ## Change MariaDB MaxScale Logging Options
 | |
| 
 | |
| From version 1.3 onwards, MariaDB MaxScale has a single log file where messages
 | |
| of various priority (aka severity) are logged. Consequently, you no longer
 | |
| enable or disable log files but log priorities. The priorities are the same as
 | |
| those of syslog and the ones that can be enabled or disabled are *debug*,
 | |
| *info*, *notice* and *warning*. *Error* and any more severe messages can not be
 | |
| disabled.
 | |
| 
 | |
| ```
 | |
| MaxScale> enable log-priority info
 | |
| MaxScale> disable log-priority notice
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| Please note that changes made via this interface will not persist across
 | |
| restarts of MariaDB MaxScale. To make a permanent change edit the maxscale.cnf
 | |
| file.
 | |
| 
 | |
| ## Adjusting the Log Throttling
 | |
| 
 | |
| From 2.0 onwards, MariaDB MaxScale will throttle messages that are logged too
 | |
| frequently, which typically is a sign that MaxScale encounters some error that
 | |
| just keeps on repeating. The aim is to prevent the log from flooding. The
 | |
| configuration specifies how many times a particular error may be logged during a
 | |
| period of a specified length, before it is suppressed for a period of a
 | |
| specified other length.
 | |
| 
 | |
| The current log throttling configuration can be queried with
 | |
| 
 | |
| ```
 | |
| MaxScale> show log_throttling
 | |
| 10 1000 100000
 | |
| ```
 | |
| 
 | |
| where the numbers are the count, the length (in milliseconds) of the period
 | |
| during which the counting is made, and the length (in milliseconds) of the
 | |
| period the message is subsequently suppressed.
 | |
| 
 | |
| The configuration can be set with
 | |
| 
 | |
| ```
 | |
| MaxScale> set log_throttling 10 1000 10000
 | |
| ```
 | |
| 
 | |
| where numbers are specified in the same order as in the *show* case. Setting any
 | |
| of the values to 0, disables the throttling.
 | |
| 
 | |
| ## Reloading The Configuration
 | |
| 
 | |
| **Note:** This command has been deprecated. Use the MaxScale REST API or the
 | |
|   MaxAdmin `alter` commands to change configuration values at runtime.
 | |
| 
 | |
| A command, _reload config_, is available that will cause MariaDB MaxScale to
 | |
| reload the maxscale.cnf configuration file. Note that not all configuration
 | |
| changes are taken into effect when the configuration is reloaded. Refer to
 | |
| the [Configuration Guide](../Getting-Started/Configuration-Guide.md)
 | |
| for a list of parameters that can be changed with it.
 | |
| 
 | |
| ## Shutting Down MariaDB MaxScale
 | |
| 
 | |
| The MariaDB MaxScale server may be shutdown using the _shutdown maxscale_
 | |
| command.
 | |
| 
 | |
| ```
 | |
| MaxScale> shutdown maxscale
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| # Runtime Configuration Changes
 | |
| 
 | |
| Starting with the 2.1 version of MaxScale, you can modify the runtime
 | |
| configuration. This means that new objects (servers, listeners, monitors)
 | |
| can be created, altered and removed at runtime.
 | |
| 
 | |
| ## Servers
 | |
| 
 | |
| ### Creating a New Server
 | |
| 
 | |
| In order to add new servers into MaxScale, they must first be created. They can
 | |
| be created with the `create server` command. Any runtime configuration changes
 | |
| to servers are persisted meaning that they will still be in effect even after a
 | |
| restart.
 | |
| 
 | |
| ```
 | |
| create server - Create a new server
 | |
| 
 | |
| Usage: create server NAME HOST [PORT] [PROTOCOL] [AUTHENTICATOR] [OPTIONS]
 | |
| 
 | |
| Parameters:
 | |
| NAME          Server name
 | |
| HOST          Server host address
 | |
| PORT          Server port (default 3306)
 | |
| PROTOCOL      Server protocol (default MariaDBBackend)
 | |
| AUTHENTICATOR Authenticator module name (default MySQLAuth)
 | |
| OPTIONS       Comma separated list of options for the authenticator
 | |
| 
 | |
| The first two parameters are required, the others are optional.
 | |
| 
 | |
| Example: create server my-db-1 192.168.0.102 3306
 | |
| ```
 | |
| 
 | |
| ### Adding Servers to Services and Monitors
 | |
| 
 | |
| To add a server to a service or a monitor, use the `add server` command. Any
 | |
| changes to the servers of a service or a monitor are persisted meaning that they
 | |
| will still be in effect even after a restart.
 | |
| 
 | |
| Servers added to services will only be taken into use by new sessions. Old
 | |
| sessions will only use the servers that were a part of the service when they
 | |
| were created.
 | |
| 
 | |
| ```
 | |
| add server - Add a new server to a service
 | |
| 
 | |
| Usage: add server SERVER TARGET...
 | |
| 
 | |
| Parameters:
 | |
| SERVER  The server that is added to TARGET
 | |
| TARGET  List of service and/or monitor names separated by spaces
 | |
| 
 | |
| A server can be assigned to a maximum of 11 objects in one command
 | |
| 
 | |
| Example: add server my-db my-service "Cluster Monitor"
 | |
| ```
 | |
| 
 | |
| ### Removing Servers from Services and Monitors
 | |
| 
 | |
| To remove servers from a service or a monitor, use the `remove server`
 | |
| command. The same rules about server usage for services that apply to `add
 | |
| server` also apply to `remove server`. The servers will only be removed from new
 | |
| sessions created after the command is executed.
 | |
| 
 | |
| ```
 | |
| remove server - Remove a server from a service or a monitor
 | |
| 
 | |
| Usage: remove server SERVER TARGET...
 | |
| 
 | |
| Parameters:
 | |
| SERVER  The server that is removed from TARGET
 | |
| TARGET  List of service and/or monitor names separated by spaces
 | |
| 
 | |
| A server can be removed from a maximum of 11 objects in one command
 | |
| 
 | |
| Example: remove server my-db my-service "Cluster Monitor"
 | |
| ```
 | |
| 
 | |
| ### Altering Servers
 | |
| 
 | |
| You can alter server parameters with the `alter server` command. Any changes to
 | |
| the address or port of the server will take effect for new connections
 | |
| only. Changes to other parameters will take effect immediately.
 | |
| 
 | |
| Please note that in order for SSL to be enabled for a created server, all of the
 | |
| required SSL parameters (`ssl`, `ssl_key`, `ssl_cert` and `ssl_ca_cert`) must be
 | |
| given in the same command.
 | |
| 
 | |
| ```
 | |
| alter server - Alter server parameters
 | |
| 
 | |
| Usage: alter server NAME KEY=VALUE ...
 | |
| 
 | |
| Parameters:
 | |
| NAME      Server name
 | |
| KEY=VALUE List of `key=value` pairs separated by spaces
 | |
| 
 | |
| This will alter an existing parameter of a server. The accepted values for KEY are:
 | |
| 
 | |
| address               Server address
 | |
| port                  Server port
 | |
| monuser               Monitor user for this server
 | |
| monpw                 Monitor password for this server
 | |
| ssl                   Enable SSL, value must be 'required'
 | |
| ssl_key               Path to SSL private key
 | |
| ssl_cert              Path to SSL certificate
 | |
| ssl_ca_cert           Path to SSL CA certificate
 | |
| ssl_version           SSL version
 | |
| ssl_cert_verify_depth Certificate verification depth
 | |
| 
 | |
| To configure SSL for a newly created server, the 'ssl', 'ssl_cert',
 | |
| 'ssl_key' and 'ssl_ca_cert' parameters must be given at the same time.
 | |
| 
 | |
| Example: alter server my-db-1 address=192.168.0.202 port=3307
 | |
| ```
 | |
| 
 | |
| ### Destroying Servers
 | |
| 
 | |
| You can destroy created servers with the `destroy server` command. Only servers
 | |
| created with the `create server` command should be destroyed. A server can only
 | |
| be destroyed once it has been removed from all services and monitors.
 | |
| 
 | |
| ```
 | |
| destroy server - Destroy a server
 | |
| 
 | |
| Usage: destroy server NAME
 | |
| 
 | |
| Parameters:
 | |
| NAME Server to destroy
 | |
| 
 | |
| Example: destroy server my-db-1
 | |
| ```
 | |
| 
 | |
| ## Listeners
 | |
| 
 | |
| ### Creating New Listeners
 | |
| 
 | |
| To create a new listener for a service, use the `create listener` command. This
 | |
| will create and start a new listener for a service which will immediately start
 | |
| listening for new connections on the specified port.
 | |
| 
 | |
| Please note that in order for SSL to be enabled for a created listeners, all of
 | |
| the required SSL parameters (`ssl`, `ssl_key`, `ssl_cert` and `ssl_ca_cert`)
 | |
| must be given. All the `create listener` parameters do not need to be defined in
 | |
| order for SSL to be enabled. The _default_ parameter can be used to signal that
 | |
| MaxScale should use a default value for the parameter in question.
 | |
| 
 | |
| ```
 | |
| create listener - Create a new listener for a service
 | |
| 
 | |
| Usage: create listener SERVICE NAME [HOST] [PORT] [PROTOCOL] [AUTHENTICATOR] [OPTIONS]
 | |
|                        [SSL_KEY] [SSL_CERT] [SSL_CA] [SSL_VERSION] [SSL_VERIFY_DEPTH]
 | |
| 
 | |
| Parameters
 | |
| SERVICE       Service where this listener is added
 | |
| NAME          Listener name
 | |
| HOST          Listener host address (default [::])
 | |
| PORT          Listener port (default 3306)
 | |
| PROTOCOL      Listener protocol (default MariaDBClient)
 | |
| AUTHENTICATOR Authenticator module name (default MySQLAuth)
 | |
| OPTIONS       Options for the authenticator module
 | |
| SSL_KEY       Path to SSL private key
 | |
| SSL_CERT      Path to SSL certificate
 | |
| SSL_CA        Path to CA certificate
 | |
| SSL_VERSION   SSL version (default MAX)
 | |
| SSL_VERIFY_DEPTH Certificate verification depth
 | |
| 
 | |
| The first two parameters are required, the others are optional.
 | |
| Any of the optional parameters can also have the value 'default'
 | |
| which will be replaced with the default value.
 | |
| 
 | |
| Example: create listener my-service my-new-listener 192.168.0.101 4006
 | |
| ```
 | |
| 
 | |
| ### Destroying Listeners
 | |
| 
 | |
| You can destroy created listeners with the `destroy listener` command. This will
 | |
| remove the persisted configuration and it will not be created on the next
 | |
| startup. The listener is destroyed and the listening port is immediately
 | |
| available for reuse.
 | |
| 
 | |
| ```
 | |
| destroy listener - Destroy a listener
 | |
| 
 | |
| Usage: destroy listener SERVICE NAME
 | |
| 
 | |
| Parameters:
 | |
| NAME Listener to destroy
 | |
| 
 | |
| The listener is deleted
 | |
| 
 | |
| Example: destroy listener my-listener
 | |
| ```
 | |
| 
 | |
| ## Monitors
 | |
| 
 | |
| ### Creating New Monitors
 | |
| 
 | |
| The `create monitor` command creates a new monitor that is initially
 | |
| stopped. Configure the monitor with the `alter monitor` command and then start
 | |
| it with the `restart monitor` command. The _user_ and _password_ parameters of
 | |
| the monitor must be defined before the monitor is started.
 | |
| 
 | |
| ```
 | |
| create monitor - Create a new monitor
 | |
| 
 | |
| Usage: create monitor NAME MODULE
 | |
| 
 | |
| Parameters:
 | |
| NAME    Monitor name
 | |
| MODULE  Monitor module
 | |
| 
 | |
| Example: create monitor my-monitor mariadbmon
 | |
| ```
 | |
| 
 | |
| ### Altering Monitors
 | |
| 
 | |
| To alter a monitor, use the `alter monitor` command. Module specific parameters
 | |
| can also be altered.
 | |
| 
 | |
| ```
 | |
| alter monitor - Alter monitor parameters
 | |
| 
 | |
| Usage: alter monitor NAME KEY=VALUE ...
 | |
| 
 | |
| Parameters:
 | |
| NAME      Monitor name
 | |
| KEY=VALUE List of `key=value` pairs separated by spaces
 | |
| 
 | |
| All monitors support the following values for KEY:
 | |
| user                    Username used when connecting to servers
 | |
| password                Password used when connecting to servers
 | |
| monitor_interval        Monitoring interval in milliseconds
 | |
| backend_connect_timeout Server coneection timeout in seconds
 | |
| backend_write_timeout   Server write timeout in seconds
 | |
| backend_read_timeout    Server read timeout in seconds
 | |
| 
 | |
| This will alter an existing parameter of a monitor. To remove parameters,
 | |
| pass an empty value for a key e.g. 'maxadmin alter monitor my-monitor my-key='
 | |
| 
 | |
| Example: alter monitor my-monitor user=maxuser password=maxpwd
 | |
| ```
 | |
| 
 | |
| ### Destroying Monitors
 | |
| 
 | |
| To destroy a monitor, use the `destroy monitor` command. All servers need to be
 | |
| removed from the monitor before it can be destroyed.
 | |
| 
 | |
| ```
 | |
| destroy monitor - Destroy a monitor
 | |
| 
 | |
| Usage: destroy monitor NAME
 | |
| 
 | |
| Parameters:
 | |
| NAME Monitor to destroy
 | |
| 
 | |
| The monitor is destroyed
 | |
| 
 | |
| Example: destroy monitor my-monitor
 | |
| ```
 | |
| 
 | |
| ## Services
 | |
| 
 | |
| ### Altering Services
 | |
| 
 | |
| To alter the common service parameters, use the `alter service` command. Module
 | |
| specific parameters cannot be altered with this command.
 | |
| 
 | |
| ```
 | |
| alter service - Alter service parameters
 | |
| 
 | |
| Usage: alter service NAME KEY=VALUE ...
 | |
| 
 | |
| Parameters:
 | |
| NAME      Service name
 | |
| KEY=VALUE List of `key=value` pairs separated by spaces
 | |
| 
 | |
| All services support the following values for KEY:
 | |
| user                          Username used when connecting to servers
 | |
| password                      Password used when connecting to servers
 | |
| enable_root_user              Allow root user access through this service
 | |
| max_retry_interval            Maximum restart retry interval
 | |
| max_connections               Maximum connection limit
 | |
| connection_timeout            Client idle timeout in seconds
 | |
| auth_all_servers              Retrieve authentication data from all servers
 | |
| strip_db_esc                  Strip escape characters from database names
 | |
| localhost_match_wildcard_host Match wildcard host to 'localhost' address
 | |
| version_string                The version string given to client connections
 | |
| weightby                      Weighting parameter name
 | |
| log_auth_warnings             Log authentication warnings
 | |
| retry_on_failure              Retry service start on failure
 | |
| 
 | |
| Example: alter service my-service user=maxuser password=maxpwd
 | |
| ```
 | |
| 
 | |
| ## MaxScale Core
 | |
| 
 | |
| ### Altering MaxScale
 | |
| 
 | |
| The core MaxScale parameters that can be modified at runtime can be altered with
 | |
| the `alter maxscale` command.
 | |
| 
 | |
| ```
 | |
| alter maxscale - Alter maxscale parameters
 | |
| 
 | |
| Usage: alter maxscale KEY=VALUE ...
 | |
| 
 | |
| Parameters:
 | |
| KEY=VALUE List of `key=value` pairs separated by spaces
 | |
| 
 | |
| The following configuration values can be altered:
 | |
| auth_connect_timeout         Connection timeout for permission checks
 | |
| auth_read_timeout            Read timeout for permission checks
 | |
| auth_write_timeout           Write timeout for permission checks
 | |
| admin_auth                   Enable admin interface authentication
 | |
| admin_log_auth_failures      Log admin interface authentication failures
 | |
| 
 | |
| Example: alter maxscale auth_connect_timeout=10
 | |
| ```
 | |
| 
 | |
| ## Other Modules
 | |
| 
 | |
| Modules can implement custom commands called _module commands_. These are
 | |
| intended to allow modules to perform very specific tasks.
 | |
| 
 | |
| To list all module commands, execute `list commands` in maxadmin. This shows all
 | |
| commands that the modules have exposed. It also explains what they do and what
 | |
| sort of arguments they take.
 | |
| 
 | |
| ```
 | |
| list commands - List registered commands
 | |
| 
 | |
| Usage: list commands [MODULE] [COMMAND]
 | |
| 
 | |
| Parameters:
 | |
| MODULE  Regular expressions for filtering module names
 | |
| COMMAND Regular expressions for filtering module command names
 | |
| 
 | |
| Example: list commands my-module my-command
 | |
| ```
 | |
| 
 | |
| If no module commands are registered, no output will be generated. Refer to the
 | |
| module specific documentation for more details about module commands.
 | |
| 
 | |
| To call a module commands, execute `call command <module> <command>` in
 | |
| maxadmin. The _<module>_ is the name of the module and _<command>_ is the
 | |
| command that should be called. The commands take a variable amount of arguments
 | |
| which are explained in the output of `list commands`.
 | |
| 
 | |
| ```
 | |
| call command - Call module command
 | |
| 
 | |
| Usage: call command MODULE COMMAND ARGS...
 | |
| 
 | |
| Parameters:
 | |
| MODULE  The module name
 | |
| COMMAND The command to call
 | |
| ARGS... Arguments for the command
 | |
| 
 | |
| To list all registered commands, run 'list commands'.
 | |
| 
 | |
| Example: call command my-module my-command hello world!
 | |
| ```
 | |
| 
 | |
| An example of this is the `dbfwfilter` module that implements a rule reloading
 | |
| mechanism as a module command. This command takes a filter name as a parameter.
 | |
| 
 | |
| ```
 | |
| maxadmin call command dbfwfilter rules/reload my-firewall-filter /home/user/rules.txt
 | |
| ```
 | |
| 
 | |
| Here the name of the filter is _my-firewall-filter_ and the optional rule file
 | |
| path is `/home/user/rules.txt`.
 | |
| 
 | |
| # MaxScale Internals
 | |
| 
 | |
| The _show epoll_ command can be used to see what kind of events have been
 | |
| processed and also how many events on average have been returned by each
 | |
| call to `epoll_wait`.
 | |
| 
 | |
| ```
 | |
| MaxScale> show epoll
 | |
| 
 | |
| Poll Statistics.
 | |
| 
 | |
| No. of epoll cycles:                           343
 | |
| No. of epoll calls returning events:           19
 | |
| No. of read events:                            2
 | |
| No. of write events:                           15
 | |
| No. of error events:                           0
 | |
| No. of hangup events:                          0
 | |
| No. of accept events:                          4
 | |
| Average event queue length:                    1
 | |
| Maximum event queue length:                    1
 | |
| No of poll completions with descriptors
 | |
| 	No. of descriptors	No. of poll completions.
 | |
| 	 1			19
 | |
| 	 2			0
 | |
| 	 3			0
 | |
| 	 4			0
 | |
| 	 5			0
 | |
| 	 6			0
 | |
| 	 7			0
 | |
| 	 8			0
 | |
| 	 9			0
 | |
| 	>= 10			0
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| The _show eventstats_ command can be used to see statistics about how
 | |
| long it has taken for events having been returned from `epoll_wait`
 | |
| until they processed, and how long it has taken for events to be
 | |
| processed once the processing has started.
 | |
| 
 | |
| ```
 | |
| MaxScale> show eventstats
 | |
| 
 | |
| Event statistics.
 | |
| Maximum queue time:             000ms
 | |
| Maximum execution time:         000ms
 | |
| Maximum event queue length:     1
 | |
| Average event queue length:     1
 | |
| 
 | |
|                |    Number of events
 | |
| Duration       | Queued     | Executed
 | |
| ---------------+------------+-----------
 | |
|  < 100ms       | 27         | 26
 | |
|   100 -  200ms | 0          | 0
 | |
|   200 -  300ms | 0          | 0
 | |
|   300 -  400ms | 0          | 0
 | |
|   400 -  500ms | 0          | 0
 | |
|   500 -  600ms | 0          | 0
 | |
|   600 -  700ms | 0          | 0
 | |
|   700 -  800ms | 0          | 0
 | |
|   800 -  900ms | 0          | 0
 | |
|   900 - 1000ms | 0          | 0
 | |
|  1000 - 1100ms | 0          | 0
 | |
|  1100 - 1200ms | 0          | 0
 | |
|  1200 - 1300ms | 0          | 0
 | |
|  1300 - 1400ms | 0          | 0
 | |
|  1400 - 1500ms | 0          | 0
 | |
|  1500 - 1600ms | 0          | 0
 | |
|  1600 - 1700ms | 0          | 0
 | |
|  1700 - 1800ms | 0          | 0
 | |
|  1800 - 1900ms | 0          | 0
 | |
|  1900 - 2000ms | 0          | 0
 | |
|  2000 - 2100ms | 0          | 0
 | |
|  2100 - 2200ms | 0          | 0
 | |
|  2200 - 2300ms | 0          | 0
 | |
|  2300 - 2400ms | 0          | 0
 | |
|  2400 - 2500ms | 0          | 0
 | |
|  2500 - 2600ms | 0          | 0
 | |
|  2600 - 2700ms | 0          | 0
 | |
|  2700 - 2800ms | 0          | 0
 | |
|  2800 - 2900ms | 0          | 0
 | |
|  2900 - 3000ms | 0          | 0
 | |
|  > 3000ms      | 0          | 0
 | |
| MaxScale>
 | |
| ```
 | |
| 
 | |
| The statics are defined in 100ms buckets, with the count of the events that fell
 | |
| into that bucket being recorded.
 | 
