MXS-1485: MariaDB 10 GTID is always on for slave connections

MariaDB 10 GTID is always on for slave connections.
Remove mariadb10_slave_gtid option
This commit is contained in:
MassimilianoPinto
2017-10-23 16:02:57 +02:00
parent 0bfe89b86b
commit d6812b91a0
3 changed files with 38 additions and 47 deletions

View File

@ -159,15 +159,39 @@ the router options.
### `mariadb10-compatibility` ### `mariadb10-compatibility`
This parameter allows binlogrouter to replicate from a MariaDB 10.0 master This parameter allows binlogrouter to replicate from a MariaDB 10.0 master
server. If `mariadb10_slave_gtid` is not enabled GTID will not be used in the server: this parameter is enabled by default since MaxScale 2.2.0.
replication. This parameter is enabled by default since MaxScale 2.2.0. In In earlier versions the parameter was disabled by default.
earlier versions the parameter was disabled by default.
``` ```
# Example # Example
router_options=mariadb10-compatibility=1 router_options=mariadb10-compatibility=1
``` ```
Additionally, since MaxScale 2.2.1, MariaDB 10.x slave servers
can connect to binlog server using GTID value instead of binlog name and position.
Example of a MariaDB 10.x slave connection to MaxScale
```
MariaDB> SET @@global.gtid_slave_pos='0-10122-230';
MariaDB> CHANGE MASTER TO
MASTER_HOST='192.168.10.8',
MASTER_PORT=5306,
MASTER_USE_GTID=Slave_pos;
MariaDB> START SLAVE;
```
**Note:**
- Slave servers can connect either with _file_ and _pos_ or GTID.
- 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.
### `transaction_safety` ### `transaction_safety`
This parameter is used to enable/disable incomplete transactions detection in This parameter is used to enable/disable incomplete transactions detection in
@ -271,29 +295,6 @@ Example:
3;bbbbbbbbbaaaaaaabbbbbccccceeeddddd3333333ddddaaaaffffffeeeeecccd 3;bbbbbbbbbaaaaaaabbbbbccccceeeddddd3333333ddddaaaaffffffeeeeecccd
``` ```
### `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 to MaxScale
```
MariaDB> SET @@global.gtid_slave_pos='0-10122-230';
MariaDB> CHANGE MASTER TO
MASTER_HOST='192.168.10.8',
MASTER_PORT=5306,
MASTER_USE_GTID=Slave_pos;
MariaDB> START SLAVE;
```
**Note:** Slave servers can connect either with _file_ and _pos_ or GTID.
### `mariadb10_master_gtid` ### `mariadb10_master_gtid`
This option allows MaxScale binlog router to register This option allows MaxScale binlog router to register
with MariaDB 10.X master using GTID instead of _binlog_file_ name with MariaDB 10.X master using GTID instead of _binlog_file_ name
@ -374,7 +375,6 @@ follows.
encrypt_binlog=1, encrypt_binlog=1,
encryption_algorithm=aes_ctr, encryption_algorithm=aes_ctr,
encryption_key_file=/var/binlogs/enc_key.txt, encryption_key_file=/var/binlogs/enc_key.txt,
mariadb10_slave_gtid=On,
mariadb10_master_gtid=Off, mariadb10_master_gtid=Off,
slave_hostname=maxscale-blr-1, slave_hostname=maxscale-blr-1,
master_retry_count=1000, master_retry_count=1000,

View File

@ -66,7 +66,6 @@ A **complete example** of a service entry for a binlog router service would be a
encrypt_binlog=On, encrypt_binlog=On,
encryption_algorithm=aes_ctr, encryption_algorithm=aes_ctr,
encryption_key_file=/var/binlogs/enc_key.txt, encryption_key_file=/var/binlogs/enc_key.txt,
mariadb10_slave_gtid=On,
mariadb10_master_gtid=Off, mariadb10_master_gtid=Off,
slave_hostname=maxscale-blr-1, slave_hostname=maxscale-blr-1,
master_retry_count=1000, master_retry_count=1000,
@ -198,7 +197,7 @@ If a slave is connected to MaxScale with SSL, an entry will be present in the Sl
Slave connected with SSL: Established Slave connected with SSL: Established
``` ```
If option `mariadb10_slave_gtid=On` last seen GTID is shown: If option `mariadb10-compatibility=On` last seen GTID is shown:
``` ```
Last seen MariaDB GTID: 0-10124-282 Last seen MariaDB GTID: 0-10124-282
@ -253,7 +252,7 @@ Master_SSL_Verify_Server_Cert: No
Master_Info_File: /home/maxscale/binlog/first/binlogs/master.ini Master_Info_File: /home/maxscale/binlog/first/binlogs/master.ini
``` ```
If the option `mariadb10_slave_gtid` is set to On, the last seen GTID is shown: If the option `mariadb10-compatibility` is set to On, the last seen GTID is shown:
``` ```
Using_Gtid: No Using_Gtid: No
@ -277,11 +276,8 @@ slaves must not use *MASTER_AUTO_POSITION = 1* option.
It also works with a MariaDB 10.X setup (master and slaves). It also works with a MariaDB 10.X setup (master and slaves).
Starting from MaxScale 2.2 the slave connections may include **GTID** feature Starting from MaxScale 2.2.1 the slave connections might optionally include
`MASTER_USE_GTID=Slave_pos` if option *mariadb10_slave_gtid* has been set. **GTID** feature `MASTER_USE_GTID=Slave_pos`: only option *mariadb10-compatibility* is required.
The default is that a slave connection must not include any GTID
feature: `MASTER_USE_GTID=no`
Starting from MaxScale 2.2 it's also possible to register to MariaDB 10.X master using Starting from MaxScale 2.2 it's also possible to register to MariaDB 10.X master using
**GTID** using the new option *mariadb10_master_gtid*. **GTID** using the new option *mariadb10_master_gtid*.
@ -545,8 +541,8 @@ be issued for the new configuration.
### Removing binary logs from binlogdir ### Removing binary logs from binlogdir
Since version 2.2, if `mariadb10_slave_gtid` or `mariadb10_master_gtid` Since version 2.2.1, if `mariadb10-compatibility`is set to On,
are set to On, it's possible to remove the binlog files from _binlogdir_ it's possible to remove the binlog files from _binlogdir_
and delete related entries in GTID repository using the admin and delete related entries in GTID repository using the admin
command `PURGE BINARY LOGS TO 'file'` command `PURGE BINARY LOGS TO 'file'`
@ -653,8 +649,8 @@ Example:
``` ```
##### MariaDB 10 GTID ##### MariaDB 10 GTID
If connecting slaves are MariaDB 10.x it's also possible to connect with GTID, Since MaxScale 2.2.1 the MariaDB 10.x connecting slaves can optionally connect with GTID,
*mariadb10_slave_gtid=On* has to be set in configuration before starting MaxScale. *mariadb10-compatibility=On* has to be set in configuration before starting MaxScale.
``` ```
SET @@global.gtid_slave_pos=''; SET @@global.gtid_slave_pos='';
@ -688,7 +684,7 @@ MariaDB> CHANGE MASTER TO
MariaDB> START SLAVE; 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_: Additionally 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; MariaDB> SHOW BINARY LOGS;

View File

@ -190,7 +190,6 @@ MXS_MODULE* MXS_CREATE_MODULE()
MXS_MODULE_OPT_NONE, enc_algo_values MXS_MODULE_OPT_NONE, enc_algo_values
}, },
{"encryption_key_file", MXS_MODULE_PARAM_PATH, NULL, MXS_MODULE_OPT_PATH_R_OK}, {"encryption_key_file", MXS_MODULE_PARAM_PATH, NULL, MXS_MODULE_OPT_PATH_R_OK},
{"mariadb10_slave_gtid", MXS_MODULE_PARAM_BOOL, "false"},
{"mariadb10_master_gtid", MXS_MODULE_PARAM_BOOL, "false"}, {"mariadb10_master_gtid", MXS_MODULE_PARAM_BOOL, "false"},
{ {
"binlog_structure", MXS_MODULE_PARAM_ENUM, "flat", "binlog_structure", MXS_MODULE_PARAM_ENUM, "flat",
@ -359,8 +358,8 @@ createInstance(SERVICE *service, char **options)
inst->request_semi_sync = config_get_bool(params, "semisync"); inst->request_semi_sync = config_get_bool(params, "semisync");
inst->master_semi_sync = 0; inst->master_semi_sync = 0;
/* Enable MariaDB GTID tracking for slaves */ /* Enable MariaDB GTID tracking for slaves if MariaDB 10 compat is set */
inst->mariadb10_gtid = config_get_bool(params, "mariadb10_slave_gtid"); inst->mariadb10_gtid = inst->mariadb10_compat;
/* Enable MariaDB GTID registration to master */ /* Enable MariaDB GTID registration to master */
inst->mariadb10_master_gtid = config_get_bool(params, "mariadb10_master_gtid"); inst->mariadb10_master_gtid = config_get_bool(params, "mariadb10_master_gtid");
@ -539,10 +538,6 @@ createInstance(SERVICE *service, char **options)
{ {
inst->encryption.enabled = config_truth_value(value); inst->encryption.enabled = config_truth_value(value);
} }
else if (strcmp(options[i], "mariadb10_slave_gtid") == 0)
{
inst->mariadb10_gtid = config_truth_value(value);
}
else if (strcmp(options[i], "mariadb10_master_gtid") == 0) else if (strcmp(options[i], "mariadb10_master_gtid") == 0)
{ {
inst->mariadb10_master_gtid = config_truth_value(value); inst->mariadb10_master_gtid = config_truth_value(value);