567 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			567 lines
		
	
	
		
			24 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# MariaDB MaxScale as a Binlog Server
 | 
						|
 | 
						|
# Table of Contents
 | 
						|
 | 
						|
* [Introduction](#introduction)
 | 
						|
  * [MariaDB as a Binlog Server](#mariadb-as-a-binlog-server)
 | 
						|
  * [MariaDB MaxScale's approach](#mariadb-maxscales-approach)
 | 
						|
* [Configuring MariaDB MaxScale as a Binlog Server](#configuring-mariadb-maxscale-as-a-binlog-server)
 | 
						|
  * [Service Configuration](#service-configuration)
 | 
						|
  * [Listener Configuration](#listener-configuration)
 | 
						|
  * [Configuring Replication](#configuring-replication)
 | 
						|
* [Binlog Router Compatibility](#binlog-router-compatibility)
 | 
						|
* [MariaDB MaxScale Replication Diagnostics](#mariadb-maxscale-replication-diagnostics)
 | 
						|
 | 
						|
# Introduction
 | 
						|
 | 
						|
MariaDB MaxScale is a dynamic data routing platform that sits between a database
 | 
						|
layer and the clients of that database. However, the binlog router described
 | 
						|
here is somewhat different to that original concept, moving MariaDB MaxScale
 | 
						|
down to play a role within the database layer itself.
 | 
						|
 | 
						|
In a traditional MariaDB replication setup a single master server is created and
 | 
						|
a set of slaves MariaDB instances are configured to pull the binlog files from
 | 
						|
that master to the slaves. There are some problems, however, in this setup; when
 | 
						|
the number of slaves grows, an increasing load caused by the serving of binlogs
 | 
						|
to each slave, is placed on the master. When the master server fails, some
 | 
						|
action must be performed on every slave server before a new server can become
 | 
						|
the master server.
 | 
						|
 | 
						|
Introducing a proxy layer between the master server and the slave servers can
 | 
						|
improve the situation, by reducing the load on the master to simply serving the
 | 
						|
proxy layer rather than all of the slaves. The slaves only need to be aware of
 | 
						|
the proxy layer and not of the real master server. Removing the need for the
 | 
						|
slaves to have knowledge of the actual master, greatly simplifies the process of
 | 
						|
replacing a failed master within a replication environment.
 | 
						|
 | 
						|
## MariaDB as a Binlog Server
 | 
						|
 | 
						|
The most obvious solution to the requirement for a proxy layer within a
 | 
						|
replication environment is to use a MariaDB or MySQL database instance. The
 | 
						|
database server is designed to allow this, since a slave server is able to be
 | 
						|
configured such that it will produce binary logs for updates it has itself
 | 
						|
received via replication from the master server. This is done with the
 | 
						|
*log_slave_updates* configuration option of the server. In this case the server
 | 
						|
is known as an intermediate master, it is simultaneously a slave to the real
 | 
						|
master and a master to the other slaves in the configuration.
 | 
						|
 | 
						|
Using an intermediate master does not, however, solve all the problems and
 | 
						|
introduces some new ones, due to the way replication is implemented. A slave
 | 
						|
server reads the binary log data and creates a relay log from that binary
 | 
						|
log. This log provides a source of SQL statements, which are executed within the
 | 
						|
slave in order to make the same changes to the databases on the slaves as were
 | 
						|
made on the master. If the *log_slave_updates* option has been enabled, new
 | 
						|
binary log entries are created for the statements executed from the relay log.
 | 
						|
 | 
						|
The above means that the data in the binary log of the intermediate master is
 | 
						|
not a direct copy of the data that was received from the binary log of the real
 | 
						|
master. The resultant changes to the database will be the same, provided no
 | 
						|
updates have been performed on the intermediate master that did not originate on
 | 
						|
the real master, but the steps to achieve those changes may be different. In
 | 
						|
particular, if group commit functionality is used, to allow multiple
 | 
						|
transactions to commit in parallel, these may well be different on the
 | 
						|
intermediate master. This can cause a reduction in the parallelism of the
 | 
						|
commits and a subsequent reduction in the performance of the slave servers.
 | 
						|
 | 
						|
This re-execution of the SQL statements also adds latency to the intermediate
 | 
						|
master solution, since the full process of parsing, optimization and execution
 | 
						|
must occur for every statement that is replicated from the master to the slaves
 | 
						|
must be performed in the intermediate master. This latency introduces lag in the
 | 
						|
replication chain, with a greater delay being introduced from the time a
 | 
						|
transaction is committed on the master until the data is available on the
 | 
						|
slaves.
 | 
						|
 | 
						|
Use of an intermediate master does improve the process of failover of the master
 | 
						|
server, since the slaves are only aware of the intermediate master the process
 | 
						|
of promoting one of the existing slaves to become the new master only involves
 | 
						|
that slave and the intermediate master. A slave can become the new master as
 | 
						|
soon as all the changes from the intermediate master have been processed. The
 | 
						|
intermediate master then needs to be reset to the correct point in the binary
 | 
						|
log of the new master and replication can continue.
 | 
						|
 | 
						|
An added complexity that needs to be dealt with is the failure of the
 | 
						|
intermediate master itself. If this occurs then the same problem as described
 | 
						|
earlier exists, all slaves must be updated when a new intermediate master is
 | 
						|
created. If multiple intermediate masters are used, there is also a restriction
 | 
						|
that slaves can not be moved from the failed intermediate master to another
 | 
						|
intermediate master due to the fact that the binlog on the different
 | 
						|
intermediate nodes are not guaranteed to be the same.
 | 
						|
 | 
						|
## MariaDB MaxScale's approach
 | 
						|
 | 
						|
MariaDB MaxScale takes a much simpler approach to the process of being a Binlog
 | 
						|
Server. It acts as a slave to the real master and as a master to the slaves, in
 | 
						|
the same way as an intermediate master does. However, it does not implement any
 | 
						|
re-execution of the statements within the binary log. MariaDB MaxScale creates a
 | 
						|
local cache of the binary logs it receives from the master and will serve binary
 | 
						|
log events to the slaves from this cache of the master's binary log. This means
 | 
						|
that the slaves will always get binary log events that have a one-to-one
 | 
						|
correlation to those written by the master. Parallelism in the binary log events
 | 
						|
of the master is maintained in the events that are observed by the slaves.
 | 
						|
 | 
						|
In the MariaDB MaxScale approach, the latency that is introduced is mostly the
 | 
						|
added network latency associated with adding the extra network hop. There is no
 | 
						|
appreciable processing performed at the MariaDB MaxScale level, other than for
 | 
						|
managing the local cache of the binlog files.
 | 
						|
 | 
						|
In addition, every MariaDB MaxScale that is acting as a proxy of the master will
 | 
						|
have exactly the same binlog events as the master itself. This means that a
 | 
						|
slave can be moved between any of the MariaDB MaxScale server or to the real
 | 
						|
master without a need to perform any special processing. The result is much
 | 
						|
simpler behavior for failure recovery and the ability to have a very simple,
 | 
						|
redundant proxy layer with slaves free to both between the proxies.
 | 
						|
 | 
						|
# Configuring MariaDB MaxScale as a Binlog Server
 | 
						|
 | 
						|
Using MariaDB MaxScale as a Binlog Server is much the same as using MariaDB
 | 
						|
MaxScale as a proxy between the clients and the database servers. In this case
 | 
						|
the master server should be considered as the database backend and the slave
 | 
						|
servers as the clients of MariaDB MaxScale.
 | 
						|
 | 
						|
## Service Configuration
 | 
						|
 | 
						|
As with any MariaDB MaxScale configuration a good starting point is with the
 | 
						|
service definition with the *maxscale.cnf* file. The service requires a name
 | 
						|
which is the section name in the ini file, a type parameter with a value of
 | 
						|
service and the name of the router plugin that should be loaded. In the case of
 | 
						|
replication proxies this router name is *binlogrouter*.
 | 
						|
 | 
						|
The minimum set of router options that must be given in the configuration are
 | 
						|
are `server_id` and `binlogdir`, default values may be used for all other
 | 
						|
options.
 | 
						|
 | 
						|
All configuration prameters can be found in the [Binlog Router
 | 
						|
Documentation](../Routers/Binlogrouter.md).
 | 
						|
 | 
						|
A minimal example of a service entry for a binlog router service that is used
 | 
						|
with MariaDB 10 would be as follows.
 | 
						|
 | 
						|
```
 | 
						|
[Replication]
 | 
						|
type=service
 | 
						|
router=binlogrouter
 | 
						|
user=maxscale
 | 
						|
passwd=maxpwd
 | 
						|
server_id=1
 | 
						|
mariadb10-compatibility=1
 | 
						|
binlogdir=/var/lib/maxscale/
 | 
						|
```
 | 
						|
 | 
						|
## Listener Configuration
 | 
						|
 | 
						|
As per any service in MariaDB MaxScale, a listener section is required to define
 | 
						|
the address, port and protocol that is used to listen for incoming
 | 
						|
connections. Those incoming connections will originate from either slave servers
 | 
						|
or from a MySQL client. The binlogrouter is administered and configured via SQL
 | 
						|
commands on the listener.
 | 
						|
 | 
						|
```
 | 
						|
[Replication Listener]
 | 
						|
type=listener
 | 
						|
service=Replication
 | 
						|
protocol=MySQLClient
 | 
						|
port=3306
 | 
						|
```
 | 
						|
 | 
						|
The protocol used by slaves for connection to MariaDB MaxScale is the same
 | 
						|
*MySQLClient* protocol that is used for client applications to connect to
 | 
						|
databases, therefore the same MariaDB MaxScale protocol module can be used.
 | 
						|
 | 
						|
It's also possible to enable client side SSL by adding the required SSL options
 | 
						|
in the listener:
 | 
						|
 | 
						|
```
 | 
						|
[Replication SSL Listener]
 | 
						|
type=listener
 | 
						|
service=Replication
 | 
						|
protocol=MySQLClient
 | 
						|
port=3306
 | 
						|
ssl=required
 | 
						|
ssl_key=/path/to/key.pem
 | 
						|
ssl_cert=/path/to/cert.pem
 | 
						|
ssl_ca_cert=/path/to/ca-cert.pem
 | 
						|
```
 | 
						|
 | 
						|
Refer to the [Configuration-Guide](../Getting-Started/Configuration-Guide.md)
 | 
						|
for more details about the SSL configuration in MaxScale.
 | 
						|
 | 
						|
## Configuring Replication
 | 
						|
 | 
						|
When the binlogrouter is started for the first time, it needs to be configured
 | 
						|
to replicate from a master. To do this, connect to the binlogrouter listener
 | 
						|
that was defined before and execute a normal `CHANGE MASTER TO` command. Use the
 | 
						|
credentials defined in `maxscale.cnf` when you connect to MaxScale. Finally,
 | 
						|
execute a `START SLAVE` command to start the replication.
 | 
						|
 | 
						|
Here is an example SQL command that configures the binlogrouter to replicate
 | 
						|
from a MariaDB server and starts replication:
 | 
						|
 | 
						|
```
 | 
						|
CHANGE MASTER TO MASTER_HOST='master.example.com',
 | 
						|
                 MASTER_PORT=3306,
 | 
						|
                 MASTER_USER='maxuser',
 | 
						|
                 MASTER_PASSWORD='maxpwd',
 | 
						|
                 MASTER_LOG_FILE='mysql-bin.000001',
 | 
						|
                 MASTER_LOG_POS=4;
 | 
						|
 | 
						|
START SLAVE;
 | 
						|
```
 | 
						|
 | 
						|
Both the _MASTER_LOG_FILE_ and _MASTER_LOG_POS_ must be defined and the value of
 | 
						|
_MASTER_LOG_POS_ must be 4.
 | 
						|
 | 
						|
**Note:** Legacy versions defined the server by configuring a separate server
 | 
						|
object in `maxscale.cnf`.
 | 
						|
 | 
						|
### Stopping and Starting the Replication
 | 
						|
 | 
						|
When router is configured and it is properly working it is possible to stop the
 | 
						|
replication with `STOP SLAVE` and to resume it with `START SLAVE`. In addition
 | 
						|
to this, the `SHOW SLAVE STATUS` command can be used to display information
 | 
						|
about the replication configuration.
 | 
						|
 | 
						|
Slave connections are not affected by the `STOP SLAVE` and `START SLAVE`
 | 
						|
commands. They only control the connection to the master server.
 | 
						|
 | 
						|
### Change the Master server configuration
 | 
						|
 | 
						|
When router is configured and it is properly working it is possible to change the master parameters.
 | 
						|
First step is stop the replication from the master.
 | 
						|
 | 
						|
```
 | 
						|
STOP SLAVE;
 | 
						|
```
 | 
						|
 | 
						|
Next step is the master configuration
 | 
						|
 | 
						|
```
 | 
						|
CHANGE MASTER TO ...
 | 
						|
```
 | 
						|
 | 
						|
A successful configuration change results in *master.ini* being updated. Any
 | 
						|
error is reported in the MySQL and in log files.
 | 
						|
 | 
						|
The supported `CHAGE MASTER TO` options are:
 | 
						|
 | 
						|
- `MASTER_HOST`
 | 
						|
- `MASTER_PORT`
 | 
						|
- `MASTER_USER`
 | 
						|
- `MASTER_PASSWORD`
 | 
						|
- `MASTER_LOG_FILE`
 | 
						|
- `MASTER_LOG_POS`
 | 
						|
- `MASTER_SSL`
 | 
						|
- `MASTER_SSL_CERT` (path to certificate file)
 | 
						|
- `MASTER_SSL_KEY` (path to key file)
 | 
						|
- `MASTER_SSL_CA` (path to CA cerificate file)
 | 
						|
- `MASTER_TLS_VERSION` (TLS/SSL version)
 | 
						|
 | 
						|
Further details about level of encryption or certificates could be found in the
 | 
						|
[Configuration Guide](../Getting-Started/Configuration-Guide.md)
 | 
						|
 | 
						|
### Slave servers setup
 | 
						|
 | 
						|
Examples of *CHANGE MASTER TO* command issued on a slave server that wants to
 | 
						|
gets replication events from MariaDB MaxScale binlog router:
 | 
						|
 | 
						|
```
 | 
						|
CHANGE MASTER TO MASTER_HOST=‘$maxscale_IP’, MASTER_PORT=5308, MASTER_USER='repl', MASTER_PASSWORD=‘somepasswd’,
 | 
						|
MASTER_LOG_FILE=‘mysql-bin.000001'
 | 
						|
 | 
						|
CHANGE MASTER TO MASTER_HOST=‘$maxscale_IP’, MASTER_PORT=5308, MASTER_USER='repl', MASTER_PASSWORD=‘somepasswd’,
 | 
						|
MASTER_LOG_FILE=‘mysql-bin.000159', MASTER_LOG_POS=245
 | 
						|
```
 | 
						|
 | 
						|
The latter example specifies a *MASTER_LOG_POS* for the selected
 | 
						|
*MASTER_LOG_FILE*
 | 
						|
 | 
						|
**Note:**
 | 
						|
 | 
						|
 - *MASTER_LOG_FILE* must be set to one of existing binlog files in MariaDB
 | 
						|
    MaxScale binlogdir
 | 
						|
 | 
						|
 - If *MASTER_LOG_POS* is not set with *CHANGE MASTER TO* it defaults to 4
 | 
						|
 | 
						|
 - Latest binlog file name and pos in MariaDB MaxScale can be found by executing
 | 
						|
   `SHOW MASTER STATUS` on MaxScale.
 | 
						|
 | 
						|
### Controlling the Binlogrouter
 | 
						|
 | 
						|
There are some constraints related to *MASTER_LOG_FILE* and *MASTER_LOG_POS*.
 | 
						|
*MASTER_LOG_FILE* can be changed to next binlog in sequence with
 | 
						|
*MASTER_LOG_POS=4* or to current one at current position.
 | 
						|
 | 
						|
Examples:
 | 
						|
 | 
						|
1) Current binlog file is ‘mysql-bin.000003', position 88888
 | 
						|
 | 
						|
    MariaDB> CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000003',MASTER_LOG_POS=8888
 | 
						|
 | 
						|
This could be applied to current master_host/port or a new one.  If there is a
 | 
						|
master server maintenance and a slave is being promoted as master it should be
 | 
						|
checked that binlog file and position are valid: in case of any error
 | 
						|
replication stops and errors are reported via *SHOW SLAVE STATUS* and in error
 | 
						|
logs.
 | 
						|
 | 
						|
2) Current binlog file is ‘mysql-bin.000099', position 1234
 | 
						|
 | 
						|
    MariaDB> CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000100',MASTER_LOG_POS=4
 | 
						|
 | 
						|
This could be applied with current master_host/port or a new one If transaction
 | 
						|
safety option is on and the current binlog file contains an incomplete
 | 
						|
transaction it will be truncated to the position where transaction started. In
 | 
						|
such situation a proper message is reported in MySQL connection and with next
 | 
						|
START SLAVE binlog file truncation will occur and MariaDB MaxScale will request
 | 
						|
events from the master using the next binlog file at position 4.
 | 
						|
 | 
						|
The above scenario might refer to a master crash/failure: the new server that
 | 
						|
has just been promoted as master doesn't have last transaction events but it
 | 
						|
should have the new binlog file (the next in sequence). Truncating the previous
 | 
						|
MariaDB MaxScale binlog is safe as that incomplete transaction is lost. It
 | 
						|
should be checked that current master or new one has the new binlog file, in
 | 
						|
case of any error replication stops and errors are reported via *SHOW SLAVE
 | 
						|
STATUS* and in error logs.
 | 
						|
 | 
						|
    MariaDB> START SLAVE;
 | 
						|
 | 
						|
Check for any error in log files with:
 | 
						|
 | 
						|
    MariaDB> SHOW SLAVE STATUS;
 | 
						|
 | 
						|
In some situations replication state could be *STOPPED* and proper messages are
 | 
						|
displayed in error logs and in *SHOW SLAVE STATUS*. In order to resolve any
 | 
						|
mistake done with *CHANGE MASTER TO MASTER_LOG_FILE / MASTER_LOG_POS*, another
 | 
						|
administrative command can be helpful.
 | 
						|
 | 
						|
    MariaDB> RESET SLAVE;
 | 
						|
 | 
						|
This command removes *master.ini* file, blanks all master configuration in
 | 
						|
memory and sets binlog router in unconfigured state: a *CHANGE MASTER TO*
 | 
						|
command should be issued for the new configuration.
 | 
						|
 | 
						|
**Note:** existing binlog files are not touched by this command.
 | 
						|
 | 
						|
Examples with SSL options:
 | 
						|
 | 
						|
    MySQL [(none)]> CHANGE MASTER TO MASTER_SSL = 1, MASTER_SSL_CERT='/home/maxscale/packages/certificates/client/client-cert.pem', MASTER_SSL_CA='/home/maxscale/packages/certificates/client/ca.pem', MASTER_SSL_KEY='/home/maxscale/packages/certificates/client/client-key.pem', MASTER_TLS_VERSION='TLSv12';
 | 
						|
 | 
						|
    MySQL [(none)]> CHANGE MASTER TO MASTER_TLS_VERSION='TLSv12';
 | 
						|
 | 
						|
    MySQL [(none)]> CHANGE MASTER TO MASTER_SSL = 0;
 | 
						|
 | 
						|
 | 
						|
#### SSL Limitations
 | 
						|
 | 
						|
 - In order to enable/re-enable Master SSL comunication the MASTER_SSL=1 option
 | 
						|
   is required and all certificate options must be explicitey set in the same
 | 
						|
   CHANGE MASTER TO command.
 | 
						|
 | 
						|
 - New certificate options changes take effect after maxScale restart or after
 | 
						|
   MASTER_SSL=1 with the new options.
 | 
						|
 | 
						|
 - SHOW SLAVE STATUS displays all the options but MASTER_TLS_VERSION value.
 | 
						|
 | 
						|
 - Maxadmin, 'show services' or 'show service $binlog_service' displays all the
 | 
						|
   options when SSL is on.
 | 
						|
 | 
						|
 - STOP SLAVE is required for CHANGE MASTER TO command (any option)
 | 
						|
 | 
						|
 - START SLAVE will use new SSL options for Master SSL communication setup.
 | 
						|
 | 
						|
# Binlog Router Compatibility
 | 
						|
 | 
						|
Binlog Router Plugin is compatible with MariaDB 5.5, 10.0, 10.1 and 10.2 as well
 | 
						|
as MySQL 5.6 and 5.7.
 | 
						|
 | 
						|
Note: When using MariaDB 10.2 or MySQL 5.7 the `send_slave_heartbeat` option
 | 
						|
must be set to On as the slave servers request the hearbeat to MaxScale.
 | 
						|
As an alternative use `CHANGE MASTER TO MASTER_HEARTBEAT_PERIOD=0` in
 | 
						|
the slave server in order to disable the heartbeat request.
 | 
						|
 | 
						|
## Enabling MariaDB 10 compatibility
 | 
						|
 | 
						|
MariaDB 10 has different slave registration phase so an extra option is required:
 | 
						|
 | 
						|
```
 | 
						|
mariadb10-compatibility=1
 | 
						|
```
 | 
						|
 | 
						|
`version_string` can be modified in order to present MariaDB 10 version when
 | 
						|
MariaDB MaxScale sends server handshake packet.
 | 
						|
 | 
						|
```
 | 
						|
version_string=10.0.17-log
 | 
						|
```
 | 
						|
 | 
						|
## MySQL Limitations
 | 
						|
 | 
						|
In order to use it with MySQL 5.6/5.7, the *GTID_MODE* setting must be OFF and
 | 
						|
connecting slaves must not use *MASTER_AUTO_POSITION = 1* option. Additionally
 | 
						|
with MySQL 5.7 slaves the `send_slave_heartbeat` option must be set to on.
 | 
						|
 | 
						|
Binlog Router currently does not work for MySQL 5.5 due to missing
 | 
						|
*@@global.binlog_checksum* variable.
 | 
						|
 | 
						|
## MariaDB Limitations
 | 
						|
Starting from version 10.2 there are new replication events related
 | 
						|
to binlog event compression: these new events are not supported yet.
 | 
						|
Be sure that `log_bin_compress` is not set in any MariaDB 10.2 server.
 | 
						|
 | 
						|
#  MariaDB MaxScale Replication Diagnostics
 | 
						|
 | 
						|
The binlog router module of MariaDB MaxScale produces diagnostic output that can
 | 
						|
be viewed via the `maxadmin` client application. Running the maxadmin command
 | 
						|
and issuing a show service command will produce output that will show both the
 | 
						|
master connection status and statistics and also a block for each of the slaves
 | 
						|
currently connected.
 | 
						|
 | 
						|
```
 | 
						|
-bash-4.1$ maxadmin show service Replication
 | 
						|
    Service 0x1567ef0
 | 
						|
        Service:                Replication
 | 
						|
        Router:                 binlogrouter (0x7f4ceb96a820)
 | 
						|
        State:                  Started
 | 
						|
        Master connection DCB:                      0x15693c0
 | 
						|
        Master connection state:                    Binlog Dump
 | 
						|
        Binlog directory:                           /var/maxscale/binlogs
 | 
						|
        Heartbeat period (seconds):                 200
 | 
						|
        Number of master connects:                  1
 | 
						|
        Number of delayed reconnects:               0
 | 
						|
        Current binlog file:                        mybin.000061
 | 
						|
        Current binlog position:                    120
 | 
						|
        Number of slave servers:                    0
 | 
						|
        No. of binlog events received this session: 1002705
 | 
						|
        Total no. of binlog events received:        2005410
 | 
						|
        No. of bad CRC received from master:        0
 | 
						|
        Number of binlog events per minute
 | 
						|
        Current        5        10       15       30 Min Avg
 | 
						|
              4       4.0      4.0      4.0      4.0
 | 
						|
        Number of fake binlog events:           0
 | 
						|
        Number of artificial binlog events:     61
 | 
						|
        Number of binlog events in error:       0
 | 
						|
        Number of binlog rotate events:         60
 | 
						|
        Number of heartbeat events:             69
 | 
						|
        Number of packets received:             599
 | 
						|
        Number of residual data packets:        379
 | 
						|
        Average events per packet               3347.9
 | 
						|
        Last event from master at:              Thu Jan 29 16:41:53 2015 (10 seconds ago)
 | 
						|
        Last event from master:                 0x1b (Heartbeat Event)
 | 
						|
        Events received:
 | 
						|
            Invalid                                  0
 | 
						|
            Start Event V3                           0
 | 
						|
            Query Event                              703307
 | 
						|
            Stop Event                               55
 | 
						|
            Rotate Event                             65
 | 
						|
            Integer Session Variable                 0
 | 
						|
            Load Event                               0
 | 
						|
            Slave Event                              0
 | 
						|
            Create File Event                        0
 | 
						|
            Append Block Event                       0
 | 
						|
            Exec Load Event                          0
 | 
						|
            Delete File Event                        0
 | 
						|
            New Load Event                           0
 | 
						|
            Rand Event                               0
 | 
						|
            User Variable Event                      0
 | 
						|
            Format Description Event                 61
 | 
						|
            Transaction ID Event (2 Phase Commit)    299148
 | 
						|
            Begin Load Query Event                   0
 | 
						|
            Execute Load Query Event                 0
 | 
						|
            Table Map Event                          0
 | 
						|
            Write Rows Event (v0)                    0
 | 
						|
            Update Rows Event (v0)                   0
 | 
						|
            Delete Rows Event (v0)                   0
 | 
						|
            Write Rows Event (v1)                    0
 | 
						|
            Update Rows Event (v1)                   0
 | 
						|
            Delete Rows Event (v1)                   0
 | 
						|
            Incident Event                           0
 | 
						|
            Heartbeat Event                          69
 | 
						|
            Ignorable Event                          0
 | 
						|
            Rows Query Event                         0
 | 
						|
            Write Rows Event (v2)                    0
 | 
						|
            Update Rows Event (v2)                   0
 | 
						|
            Delete Rows Event (v2)                   0
 | 
						|
            GTID Event                               0
 | 
						|
            Anonymous GTID Event                     0
 | 
						|
            Previous GTIDS Event                     0
 | 
						|
        Started:                Thu Jan 29 16:06:11 2015
 | 
						|
        Root user access:           Disabled
 | 
						|
        Backend databases
 | 
						|
            178.62.50.70:3306  Protocol: MySQLBackend
 | 
						|
        Users data:                     0x156c030
 | 
						|
        Total connections:              2
 | 
						|
        Currently connected:            2
 | 
						|
```
 | 
						|
 | 
						|
If a slave is connected to MaxScale with SSL, an entry will be present in the
 | 
						|
Slave report:
 | 
						|
 | 
						|
```
 | 
						|
    Slaves:
 | 
						|
        Server-id:                               106
 | 
						|
        Hostname:                                SBslave6
 | 
						|
        Slave UUID:                              00019686-7777-7777-7777-777777777777
 | 
						|
        Slave_host_port:                         188.165.213.5:40365
 | 
						|
        Username:                                massi
 | 
						|
        Slave DCB:                               0x7fc01be3ba88
 | 
						|
        Slave connected with SSL:                Established
 | 
						|
 | 
						|
```
 | 
						|
 | 
						|
The `SHOW SLAVE STATUS` command provides diagnostic information about the
 | 
						|
replication state.
 | 
						|
 | 
						|
```
 | 
						|
MySQL [(none)]> show slave status\G
 | 
						|
*************************** 1. row ***************************
 | 
						|
               Slave_IO_State: Binlog Dump
 | 
						|
                  Master_Host: 88.26.197.94
 | 
						|
                  Master_User: repl
 | 
						|
                  Master_Port: 3306
 | 
						|
                Connect_Retry: 60
 | 
						|
              Master_Log_File: mysql-bin.003140
 | 
						|
          Read_Master_Log_Pos: 16682679
 | 
						|
               Relay_Log_File: mysql-bin.003140
 | 
						|
                Relay_Log_Pos: 16682679
 | 
						|
        Relay_Master_Log_File: mysql-bin.003140
 | 
						|
             Slave_IO_Running: Yes
 | 
						|
            Slave_SQL_Running: Yes
 | 
						|
              Replicate_Do_DB:
 | 
						|
          Replicate_Ignore_DB:
 | 
						|
           Replicate_Do_Table:
 | 
						|
       Replicate_Ignore_Table:
 | 
						|
      Replicate_Wild_Do_Table:
 | 
						|
  Replicate_Wild_Ignore_Table:
 | 
						|
                   Last_Errno: 0
 | 
						|
                   Last_Error:
 | 
						|
                 Skip_Counter: 0
 | 
						|
          Exec_Master_Log_Pos: 16682679
 | 
						|
              Relay_Log_Space: 16682679
 | 
						|
              Until_Condition: None
 | 
						|
               Until_Log_File:
 | 
						|
                Until_Log_Pos: 0
 | 
						|
           Master_SSL_Allowed: Yes
 | 
						|
           Master_SSL_CA_File: /home/maxscale/packages/certificates/client/ca.pem
 | 
						|
           Master_SSL_CA_Path:
 | 
						|
              Master_SSL_Cert: /home/maxscale/packages/certificates/client/client-cert.pem
 | 
						|
            Master_SSL_Cipher:
 | 
						|
               Master_SSL_Key: /home/maxscale/packages/certificates/client/client-key.pem
 | 
						|
        Seconds_Behind_Master: 0
 | 
						|
Master_SSL_Verify_Server_Cert: No
 | 
						|
                Last_IO_Errno: 0
 | 
						|
                Last_IO_Error:
 | 
						|
               Last_SQL_Errno: 0
 | 
						|
               Last_SQL_Error:
 | 
						|
  Replicate_Ignore_Server_Ids:
 | 
						|
             Master_Server_Id: 1111
 | 
						|
                  Master_UUID: 6aae714e-b975-11e3-bc33-0401152c3d01
 | 
						|
             Master_Info_File: /home/maxscale/binlog/first/binlogs/master.ini
 | 
						|
```
 | 
						|
 | 
						|
MariaDB 10 masters display some extra events.
 | 
						|
 | 
						|
```
 | 
						|
MariaDB 10 Annotate Rows Event 0
 | 
						|
MariaDB 10 Binlog Checkpoint Event 0
 | 
						|
MariaDB 10 GTID Event 0
 | 
						|
MariaDB 10 GTID List Event 0
 | 
						|
```
 |