Added documentation for mariadb10_slave_gtid

Added documentation for mariadb10_slave_gtid
This commit is contained in:
MassimilianoPinto
2017-07-26 11:25:01 +02:00
parent 26bf342e6b
commit 7048bef533
2 changed files with 134 additions and 19 deletions

View File

@ -278,6 +278,25 @@ The minimum set of router options that must be given in the configuration are
`server_id` and `master_id` (unless the real master id should be used); default `server_id` and `master_id` (unless the real master id should be used); default
values may be used for all other options. values may be used for all other options.
### `mariadb10_slave_gtid`
If enabled this option allows MariaDB 10.x slave servers to connect to binlog
server using GTID value instead of binlog_file name and position.
MaxScale saves all the incoming MariaDB GTIDs (DDLs and DMLs)
in a sqlite3 database located in _$binlogdir_ (`gtid_maps.db`).
When a slave server connects with a GTID request a lookup is made for
the value match and following binlog events will be sent.
Default option value is _off_.
Example of a MariaDB 10.x slave connection:
```
MariaDB> SET @@global.gtid_slave_pos='0-10122-230';
MariaDB> CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_PORT=10122,
MASTER_USE_GTID=Slave_pos
```
## Examples ## Examples
The [Replication Proxy](../Tutorials/Replication-Proxy-Binlog-Router-Tutorial.md) tutorial will The [Replication Proxy](../Tutorials/Replication-Proxy-Binlog-Router-Tutorial.md) tutorial will

View File

@ -161,9 +161,13 @@ The default is 'aes_cbc'
The specified key file must have this format: The specified key file must have this format:
a line with `1;HEX(KEY)` a line with `1;HEX(KEY)`
Additional informatons about Binlog files encryption can be found here: Additional information about the encryption of the Binlog files can be found here:
[Binlogrouter - The replication protocol proxy module for MariaDB MaxScale](../Routers/Binlogrouter.md). [Binlogrouter - The replication protocol proxy module for MariaDB MaxScale](../Routers/Binlogrouter.md).
### `mariadb10_slave_gtid`
If enabled this option allows MariaDB 10.x slave servers to connect to binlog
server using GTID value instead of binlog_file name and position. Default option value is _off_.
A complete example of a service entry for a binlog router service would be as follows. A complete example of a service entry for a binlog router service would be as follows.
``` ```
@ -173,7 +177,8 @@ A complete example of a service entry for a binlog router service would be as fo
version_string=5.6.17-log version_string=5.6.17-log
user=maxscale user=maxscale
passwd=Mhu87p2D passwd=Mhu87p2D
router_options=uuid=f12fcb7f-b97b-11e3-bc5e-0401152c4c22,server-id=3,user=repl,password=slavepass,master-id=1,heartbeat=30,binlogdir=/var/binlogs,transaction_safety=1,master_version=5.6.19-common,master_hostname=common_server,master_uuid=xxx-fff-cccc-common,master-id=999,mariadb10-compatibility=1,ssl_cert_verification_depth=9,semisync=1,encrypt_binlog=1,encryption_algorithm=aes_ctr,encryption_key_file=/var/binlogs/enc_key.txt router_options=uuid=f12fcb7f-b97b-11e3-bc5e-0401152c4c22,server-id=3,user=repl,password=slavepass,master-id=1,heartbeat=30,binlogdir=/var/binlogs,transaction_safety=1,master_version=5.6.19-common,master_hostname=common_server,master_uuid=xxx-fff-cccc-common,master-id=999,mariadb10-compatibility=On,ssl_cert_verification_depth=9,semisync=On,encrypt_binlog=On,encryption_algorithm=aes_ctr,encryption_key_file=/var/binlogs/enc_key.txt,
mariadb10_slave_gtid=On
``` ```
The minimum set of router options that must be given in the configuration are are *server-id* and *master-id*, default values may be used for all other options. The minimum set of router options that must be given in the configuration are are *server-id* and *master-id*, default values may be used for all other options.
@ -208,6 +213,8 @@ Check the [Configuration-Guide](../Getting-Started/Configuration-Guide.md) for S
# MariaDB MaxScale replication diagnostics # 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 a considerable amount of output that will show both the master connection status and statistics and also a block for each of the slaves currently connected. 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 a considerable amount of 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 -bash-4.1$ maxadmin show service Replication
Service 0x1567ef0 Service 0x1567ef0
@ -284,7 +291,9 @@ The binlog router module of MariaDB MaxScale produces diagnostic output that can
Total connections: 2 Total connections: 2
Currently connected: 2 Currently connected: 2
``` ```
If a slave is connected to MaxScale with SSL, an entry will be present in the Slave report: If a slave is connected to MaxScale with SSL, an entry will be present in the Slave report:
``` ```
Slaves: Slaves:
Server-id: 106 Server-id: 106
@ -294,7 +303,12 @@ If a slave is connected to MaxScale with SSL, an entry will be present in the Sl
Username: massi Username: massi
Slave DCB: 0x7fc01be3ba88 Slave DCB: 0x7fc01be3ba88
Slave connected with SSL: Established Slave connected with SSL: Established
```
If option `mariadb10_slave_gtid=On` last seen GTID is showed:
```
Last seen MariaDB GTID: 0-10124-282
``` ```
Another Binlog Server diagnostic output comes from SHOW SLAVE STATUS MySQL command Another Binlog Server diagnostic output comes from SHOW SLAVE STATUS MySQL command
@ -352,9 +366,13 @@ Binlog Router Plugin is compatible with MariaDB 5.5 and MySQL 5.6, the current d
In order to use it with MySQL 5.6, the *GTID_MODE* setting must be OFF and connecting slaves must not use *MASTER_AUTO_POSITION = 1* option. In order to use it with MySQL 5.6, the *GTID_MODE* setting must be OFF and connecting slaves must not use *MASTER_AUTO_POSITION = 1* option.
It’s also works with a MariaDB 10.0 setup (master and slaves) but slave connection must not include any GTID feature. It also works with a MariaDB 10.X setup (master and slaves).
Binlog Router currently does not work for MySQL 5.5 due to missing *@@global.binlog_checksum* variable. Starting from MaxScale 2.2 the slave connections could include GTID feature `MASTER_USE_GTID=Slave_pos` if option *mariadb10_slave_gtid* has been set.
The default is that a slave connection must not include any GTID feature: `MASTER_USE_GTID=no`
**Note:** Binlog Router currently does not work for MySQL 5.5 due to missing *@@global.binlog_checksum* variable.
# Master server setup/change # Master server setup/change
@ -381,11 +399,16 @@ Please note that is such condition the only user for MySQL protocol connection t
Enabling replication from a master server requires: Enabling replication from a master server requires:
CHANGE MASTER TO MASTER_HOST=‘$master_server’, MASTER_PORT=$master_port, MASTER_USER='repl', MASTER_PASSWORD=‘somepasswd’, MASTER_LOG_FILE=‘repl-bin.000159', MASTER_LOG_POS=4 CHANGE MASTER TO MASTER_HOST=‘$master_server’,
MASTER_PORT=$master_port,
MASTER_USER='repl',
MASTER_PASSWORD=‘somepasswd’,
MASTER_LOG_FILE=‘repl-bin.000159',
MASTER_LOG_POS=4
It's possible to specify the desired *MASTER_LOG_FILE* but position must be 4 It's possible to specify the desired *MASTER_LOG_FILE* but position must be 4
The initfile option is no longer available, filestem option too it's no longer available as the stem is automatically set by parsing *MASTER_LOG_FILE*. **Note:** Since MaxScale 1.3.0, the _initfile_ and _filestem_ options are no longer required, as the needed values are automatically set by parsing *MASTER_LOG_FILE* in CHANGE MASTER TO command.
### Stop/start the replication ### Stop/start the replication
@ -397,7 +420,8 @@ When router is configured and it is properly working it is possible to stop/star
... ...
MariaDB> START SLAVE; MariaDB> START SLAVE;
Connected or new slave connections are not affected: this *STOP/START* only controls the the connection to the master and the binlog events receiving. **Note:**: Already connected slaves or new ones are not affected by *STOP/START SLAVE*.
These commands only control the MaxScale connection to the master server.
### Change the Master server configuration ### Change the Master server configuration
@ -423,7 +447,8 @@ The supported options are:
MASTER_LOG_FILE MASTER_LOG_FILE
MASTER_LOG_POS MASTER_LOG_POS
and SSL options as well: and SSL options as well:
MASTER_SSL (0|1) MASTER_SSL (0|1)
MASTER_SSL_CERT (path to certificate file) MASTER_SSL_CERT (path to certificate file)
MASTER_SSL_KEY (path to key file) MASTER_SSL_KEY (path to key file)
@ -440,14 +465,20 @@ Examples:
1) Current binlog file is ‘mysql-bin.000003', position 88888 1) Current binlog file is ‘mysql-bin.000003', position 88888
MariaDB> CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000003',MASTER_LOG_POS=8888 ```
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. 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. 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 2) Current binlog file is ‘mysql-bin.000099', position 1234
MariaDB> CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000100',MASTER_LOG_POS=4 ```
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 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. 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.
@ -523,14 +554,24 @@ Examples:
### Slave servers setup ### 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: Examples of *CHANGE MASTER TO* command issued on a slave server that wants
to get replication events from MariaDB MaxScale binlog router:
``` ```
CHANGE MASTER TO MASTER_HOST=‘$maxscale_IP’, MASTER_PORT=5308, MASTER_USER='repl', MASTER_PASSWORD=‘somepasswd’, CHANGE MASTER TO MASTER_HOST=‘$maxscale_IP’,
MASTER_PORT=5308,
MASTER_USER='repl',
MASTER_PASSWORD=‘somepasswd’,
MASTER_LOG_FILE=‘mysql-bin.000001' MASTER_LOG_FILE=‘mysql-bin.000001'
CHANGE MASTER TO MASTER_HOST=‘$maxscale_IP’, MASTER_PORT=5308, MASTER_USER='repl', MASTER_PASSWORD=‘somepasswd’, CHANGE MASTER TO MASTER_HOST=‘$maxscale_IP’,
MASTER_LOG_FILE=‘mysql-bin.000159', MASTER_LOG_POS=245 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* The latter example specifies a *MASTER_LOG_POS* for the selected *MASTER_LOG_FILE*
Note: Note:
@ -539,9 +580,11 @@ Note:
- If *MASTER_LOG_POS* is not set with *CHANGE MASTER TO* it defaults to 4 - If *MASTER_LOG_POS* is not set with *CHANGE MASTER TO* it defaults to 4
- Latest binlog file name and pos in MariaDB MaxScale could be find via maxadmin output or from mysql client connected to MariaDB MaxScale: - Latest binlog file name and pos in MariaDB MaxScale could be found via maxadmin
output or from mysql client connected to MariaDB MaxScale:
Example: Example:
``` ```
-bash-4.1$ mysql -h 127.0.0.1 -P 5308 -u$user -p$pass -bash-4.1$ mysql -h 127.0.0.1 -P 5308 -u$user -p$pass
@ -550,23 +593,76 @@ Example:
File: mysql-bin.000181 File: mysql-bin.000181
Position: 2569 Position: 2569
``` ```
##### MariaDB 10 GTID
If connecting slaves are MariaDB 10.x it's also possible to connect with GTID,
*mariadb10_slave_gtid=On* has to be set in configuration before starting MaxScale.
```
SET @@global.gtid_slave_pos='';
```
or using a know value:
```
SET @@global.gtid_slave_pos='0-10122-230';
```
**Note:** If empty GTID, MaxScale will send binlog events from the beginning of its current binlog file.
In order to get the latest GTID from MaxScale *@@global.gtid_current_pos* variable is available:
```
MariaDB> SELECT @@global.gtid_current_pos;
+---------------------------+
| @@global.gtid_current_pos |
+---------------------------+
| 0-10124-282 |
+---------------------------+
```
Complete example of MariaDB 10 Slave connection to MaxScale with GTID:
```
MariaDB> SET @@global.gtid_slave_pos='0-10122-230';
MariaDB> CHANGE MASTER TO
MASTER_HOST='127.0.0.1',
MASTER_PORT=10122,
MASTER_USE_GTID=Slave_pos, ...
MariaDB> START SLAVE;
```
Additionally, if *mariadb10_slave_gtid=On*, it's also possible to retrieve the list of binlog files downloaded from the master with the new admin command _SHOW BINARY LOGS_:
```
MariaDB> SHOW BINARY LOGS;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000063 | 1543 |
| mysql-bin.000064 | 621 |
| mysql-bin.000065 | 1622 |
| mysql-bin.000066 | 582 |
| mysql-bin.000067 | 465 |
+------------------+-----------+
```
# Enabling MariaDB 10 compatibility # Enabling MariaDB 10 compatibility
MariaDB 10 has different slave registration phase so an option is required: MariaDB 10 has different slave registration phase so an option is required:
``` ```
router_options=...., mariadb10-compatibility=1 router_options=...., mariadb10-compatibility=On
``` ```
version_string should be modified in order to present MariaDB 10 version when MariaDB MaxScale sends server handshake packet. *version_string* should be modified in order to present MariaDB 10 version when
MariaDB MaxScale sends server handshake packet.
``` ```
version_string=10.0.17-log version_string=10.1.21-log
``` ```
# New MariaDB events in Diagnostics # New MariaDB events in Diagnostics
With a MariaDB 10 setups new events are displayed when master server is MariaDB 10. With a MariaDB 10 setup new events are displayed when master server is MariaDB 10.
``` ```
MariaDB 10 Annotate Rows Event 0 MariaDB 10 Annotate Rows Event 0