Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions maxscale/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,7 @@
* [MaxScale Binlogrouter](reference/maxscale-routers/maxscale-binlogrouter.md)
* [MaxScale Cat](reference/maxscale-routers/maxscale-cat.md)
* [MaxScale Diff](reference/maxscale-routers/maxscale-diff.md)
* [MaxScale Exasolrouter](reference/maxscale-routers/maxscale-exasolrouter.md)
* [MaxScale KafkaCDC](reference/maxscale-routers/maxscale-kafkacdc.md)
* [MaxScale KafkaImporter](reference/maxscale-routers/maxscale-kafkaimporter.md)
* [MaxScale Mirror](reference/maxscale-routers/maxscale-mirror.md)
Expand Down
14 changes: 14 additions & 0 deletions maxscale/reference/maxscale-monitors/mariadb-monitor.md
Original file line number Diff line number Diff line change
Expand Up @@ -1004,6 +1004,20 @@

Events running at high frequency may cause replication to break in a failover scenario. If an old primary which was failed over restarts, its event scheduler will be on if set in the server configuration file. Its events will also remember their "ENABLED"-status and run when scheduled. This may happen before the monitor rejoins the server and disables the events. This should only be an issue for events running more often than the monitor interval or events that run immediately after the server has restarted.

#### `check_repl_on_stop_slave_timeout`

- **Type**: [boolean](../../maxscale-management/deployment/maxscale-configuration-guide.md#booleans)
- **Mandatory**: No
- **Dynamic**: Yes
- **Default**: `false`

Enables additional checks when a `STOP SLAVE` command times out during a cluster manipulation
operation such as failover or switchover. Normally, if `STOP SLAVE` times out, the monitor just
tries again until time runs out. With this setting enabled, the monitor additionally checks
replication connection status with `SHOW ALL SLAVES STATUS`. If replication has properly ended, the
monitor assumes `STOP SLAVE` completed successfully and continues with the operation. If replication
is still ongoing, the monitor prints the slave thread running states and retries `STOP SLAVE`.

## Cooperative monitoring

As of MaxScale 2.5, MariaDB-Monitor supports cooperative monitoring. This means that multiple monitors (typically in different MaxScale instances) can monitor the same backend server cluster and only one will be the primary monitor. Only the primary monitor may perform _switchover_, _failover_ or _rejoin_ operations. The primary also decides which server is the primary. Cooperative monitoring is enabled with the [cooperative\_monitoring\_locks](mariadb-monitor.md#cooperative_monitoring_locks)-setting. Even with this setting, only one monitor per server per MaxScale is allowed. This limitation can be circumvented by defining multiple copies of a server in the configuration file.
Expand Down Expand Up @@ -1223,7 +1237,7 @@
| -------- | ------- | ---------------- | --------------------------------- |
| monitor | monitor | none (mandatory) | Monitor name |
| source | server | none (mandatory) | Which server to copy data from |
| bu\_name | string | none (mandatory) | Backup name |

Check failure on line 1240 in maxscale/reference/maxscale-monitors/mariadb-monitor.md

View workflow job for this annotation

GitHub Actions / codespell-check

bu ==> by, be, but, bug, bun, bud, buy, bum
| dry\_run | boolean | false | If true, only check preconditions |

The _dry\_run_-argument causes the monitor to only check if preconditions for backup creation are met on the source server and backup storage. It checks that SSH-connections can be established and that required tools are present. The backup storage must also not yet have a backup with the given name. No permanent changes are done.
Expand Down Expand Up @@ -1283,7 +1297,7 @@
| -------- | ------- | ------------------ | --------------------------------- |
| monitor | monitor | none (mandatory) | Monitor name |
| target | server | none (mandatory) | Which server to rebuild |
| bu\_name | string | none (mandatory) | Backup name |

Check failure on line 1300 in maxscale/reference/maxscale-monitors/mariadb-monitor.md

View workflow job for this annotation

GitHub Actions / codespell-check

bu ==> by, be, but, bug, bun, bud, buy, bum
| datadir | string | empty (autodetect) | Data directory on target server |
| dry\_run | boolean | false | If true, only check preconditions |

Expand All @@ -1298,7 +1312,7 @@
"restore-from-backup completed successfully."
```

call command mariadbmon async-create-backup monitor=MariaDB-Monitor source=server1 dry\_run=true bu\_name=bu1

Check failure on line 1315 in maxscale/reference/maxscale-monitors/mariadb-monitor.md

View workflow job for this annotation

GitHub Actions / codespell-check

bu ==> by, be, but, bug, bun, bud, buy, bum

### List backups

Expand Down
217 changes: 217 additions & 0 deletions maxscale/reference/maxscale-routers/maxscale-exasolrouter.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
# MaxScale ExasolRouter

{% hint style="info" %}
This functionality is available from MaxScale 25.10.1.
{% endhint %}

## Overview

_ExasolRouter_ is a router that in itself is capable of using an Exasol
cluster. It is primarily intended to be used together with
[SmartRouter](maxscale-smartrouter.md), with _writes_ being directed
to a regular MariaDB cluster and _reads_ to Exasol.

Unlike the other routers of MaxScale, the targets _ExasolRouter_ routes to
are not specified using `servers`, `targets`, or `cluster` entries in
the configuration file. Instead, Exasol database nodes are specified using
the [connection\_string](#connection_string) setting.

If _ExasolRouter_ is used standalone, a MariaDB server or a service should
be specified using `targets`. _ExasolRouter_ will not route to it, but it
will use it for authenticating clients. However, Exasol will be accessed
on behalf of all clients using the credentials specified in the
[connection\_string](#connection_string).

## Users

A `user` and `password` must _always_ be specified, but will only be used
if a MariaDB server/service has been specified as a target, and only for
authenticating a client.

The user and password to be used when accessing Exasol must be specified
using `UID` and `PWD` in the [connection\_string](#connection_string).

## Settings

### `connection_string`

* Type: string
* Mandatory: Yes
* Dynamic: No

Specifies the Exasol connection string.

For example:
```
connection_string=DSN=ExasolDSN;UID=sys;PWD=exasol;FINGERPRINT=NOCERTCHECK
```
Here it is assumed there is an `odbc.ini` ODBC configuration file containing
an `ExasolDSN` entry.

### `appearance`

* Type: [enum](../../maxscale-management/deployment/maxscale-configuration-guide.md#enumerations)
* Mandatory: No
* Dynamic: No
* Values: `read_only`, `read_write`
* Default: `read_only`

Specifies how the Exasol router appears to other components of MaxScale.

**Note** Irrespective of the value, the router does not in any way restrict
what kind of queries can be run through the router.

### `install_preprocessor_script`

* Type: [boolean](../../maxscale-management/deployment/maxscale-configuration-guide.md#booleans)
* Mandatory: No
* Dynamic: No
* Default `true`

Specifies whether the MariaDB preprocessor script should be installed.
With the script installed, some MariaDB SQL constructs will be transparently
translated to equivalent Exasol SQL.

At the time of this writing, the script looks like
```
CREATE OR REPLACE PYTHON3 SCALAR SCRIPT UTIL.maria_preprocessor(request VARCHAR(2000000))
EMITS (translated_sql VARCHAR(2000000)) AS
def adapter_call(request):
import sqlglot
try:
result = sqlglot.transpile(
request,
read='mysql',
write='exasol',
identify=True,
unsupported='ignore'
)
return str(result[0])
except Exception:
return request
/
```

See [preprocessor\_script](#preprocessor_script)

### `preprocessor_script`

* Type: Path
* Mandatory: No
* Dynamic: No
* Default: ""

Specifies the location of a file from which the preprocessor script should
be read. With this setting, the built-in default script can be overridden.

If the path is not _absolute_ it will be interpreted relative to the MaxScale
data directory.

### `use_preprocessor_script`

* Type: [boolean](../../maxscale-management/deployment/maxscale-configuration-guide.md#booleans)
* Mandatory: No
* Dynamic: No
* Default: `true`

Specifies whether the preprocessor script should be used. If `true`, the
session creation will fail unless the script is present.

## Transformations

The Exasol Router transparently translates some MariaDB constructs to
equivalent Exasol constructs.

### `COM_INIT_DB`

The MariaDB COM_INIT_DB packet, using which the default database is changed,
is transformed into the statement `OPEN SCHEMA <db>`.

### SQL

Currently a transformation will be made _only_ if there is an **exact**
match (apart from case and differences in whitespace) with the MariaDb SQL.

| MariaDb | Exasol |
| ------- | ------- |
| SELECT @@VERSION_COMMENT LIMIT 1 | SELECT 'Exasol' AS '@@version_comment' LIMIT 1 |
| SELECT DATABASE() | SELECT TABLE_NAME AS 'Database()' FROM EXA_ALL_TABLES WHERE TABLE_SCHEMA = CURRENT_SCHEMA |
| SHOW DATABASES | SELECT SCHEMA_NAME AS 'Database' FROM EXA_SCHEMAS ORDER BY SCHEMA_NAME |
| SHOW TABLES | SELECT TABLE_NAME AS 'Tables' FROM SYS.EXA_ALL_TABLES WHERE TABLE_SCHEMA = CURRENT_SCHEMA ORDER BY TABLE_NAME |

## SmartRouter

The primary purpose of the Exasol router is to be used together with
[SmartRouter](maxscale-smartrouter.md). A minimal configuration looks
as follows:
```
[Server1]
type=server
address=127.0.0.1
port=3306
protocol=mariadbbackend

[ExasolService]
type=service
router=exasolrouter
connection_string=DSN=ExasolDSN;UID=sys;PWD=exasol
user=
password=

[SmartService]
type=service
router=smartrouter
user=MyServiceUser
password=MyServicePassword
targets=Server1, ExasolService
master=Server1

[SmartListener]
type=listener
service=SmartService
port=4007

```
Here it is assumed there is an `odbc.ini` ODBC configuration file containing
and `ExasolDSN` entry.

Note that `user` and `password` must be specified, even if they in this
context are not used.

With this setup, all writes will always be sent to `Server1`. Reads will initially
be sent to both `Server1` and `ExasolService` and once SmartRouter has learnt what
kind of reads are best sent to which target, it will exclusively send reads to
either `Server1` or `ExasolService` depending on which one is likely to provide
the response faster.

Here, a single server was used as `master`. It could just as well be a
[ReadWriteSplit](maxscale-readwritesplit.md) service in front of a MariaDB
cluster, which would provide HA.

## Stand-Alone
A minimal stand-alone configuration looks as follows.

```
[Server1]
type=server
address=127.0.0.1
port=3306
protocol=mariadbbackend

[ExasolService]
type=service
router=exasolrouter
connection_string=DSN=ExasolDSN;UID=sys;PWD=exasol;FINGERPRINT=NOCERTCHECK
targets=Server1
user=MyServiceUser
password=MyServicePassword

[ExasolListener]
type=listener
service=ExasolService
port=4008
```

With this setup, it is possible to connect using the regular `mariadb`
command line utility to the port 4008 and all queries will be sent to
Exasol.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ InnoDB engine.
The ReadWriteSplit [documentation](maxscale-readwritesplit.md)
has more on primary-replica setup.

**Example**
#### Example

Suppose we have a Transactional service like

Expand Down
5 changes: 5 additions & 0 deletions release-notes/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -1386,12 +1386,14 @@
* [MariaDB MaxScale 25.10 Release Notes](maxscale/25.10/25.10-changelog.md)
* [MaxScale 25.10.0 Release Notes](maxscale/25.10/25.10.0.md)
* [MariaDB MaxScale 25.01 Release Notes](maxscale/25.01/README.md)
* [MaxScale 25.01.5 Release Notes](maxscale/25.01/25.01.5.md)
* [MaxScale 25.01.4 Release Notes](maxscale/25.01/25.01.4.md)
* [MaxScale 25.01.3 Release Notes](maxscale/25.01/25.01.3.md)
* [MaxScale 25.01.2 Release Notes](maxscale/25.01/25.01.2.md)
* [MaxScale 25.01.1 Release Notes](maxscale/25.01/25.01.1.md)
* [MaxScale 25.01 Changelog](maxscale/25.01/25.01-changelog.md)
* [MariaDB MaxScale 24.02 Release Notes](maxscale/24.02/README.md)
* [MaxScale 24.02.8 Release Notes](maxscale/24.02/24.02.8.md)
* [MaxScale 24.02.7 Release Notes](maxscale/24.02/24.02.7.md)
* [MaxScale 24.02.6 Release Notes](maxscale/24.02/24.02.6.md)
* [MaxScale 24.02.5 Release Notes](maxscale/24.02/24.02.5.md)
Expand All @@ -1402,6 +1404,7 @@
* [MaxScale 24.02.0 Release Notes](maxscale/24.02/24.02.0.md)
* [MaxScale 24.02 Changelog](maxscale/24.02/24.02-changelog.md)
* [MariaDB MaxScale 23.08 Release Notes](maxscale/23.08/README.md)
* [MaxScale 23.08.12 Release Notes](maxscale/23.08/23.08.12.md)
* [MaxScale 23.08.11 Release Notes](maxscale/23.08/23.08.11.md)
* [MaxScale 23.08.10 Release Notes](maxscale/23.08/23.08.10.md)
* [MaxScale 23.08.9 Release Notes](maxscale/23.08/23.08.9.md)
Expand All @@ -1416,6 +1419,7 @@
* [MaxScale 23.08.0 Release Notes](maxscale/23.08/23.08.0.md)
* [MaxScale 23.08 Changelog](maxscale/23.08/23.08-changelog.md)
* [MariaDB MaxScale 23.02 Release Notes](maxscale/23.02/README.md)
* [MaxScale 23.02.16 Release Notes](maxscale/23.02/23.02.16.md)
* [MaxScale 23.02.15 Release Notes](maxscale/23.02/23.02.15.md)
* [MaxScale 23.02.14 Release Notes](maxscale/23.02/23.02.14.md)
* [MaxScale 23.02.13 Release Notes](maxscale/23.02/23.02.13.md)
Expand All @@ -1434,6 +1438,7 @@
* [MaxScale 23.02.0 Release Notes](maxscale/23.02/23.02.0.md)
* [MaxScale 23.02 Changelog](maxscale/23.02/23.02-changelog.md)
* [MariaDB MaxScale 22.08 Release Notes](maxscale/22.08/README.md)
* [MaxScale 22.08.19 Release Notes](maxscale/22.08/22.08.19.md)
* [MaxScale 22.08.18 Release Notes](maxscale/22.08/22.08.18.md)
* [MaxScale 22.08.17 Release Notes](maxscale/22.08/22.08.17.md)
* [MaxScale 22.08.16 Release Notes](maxscale/22.08/22.08.16.md)
Expand Down
1 change: 1 addition & 0 deletions release-notes/maxscale/22.08/22.08-changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

For more details, please refer to:

* [MariaDB MaxScale 22.08.19 Release Notes](22.08.19.md)
* [MariaDB MaxScale 22.08.18 Release Notes](22.08.18.md)
* [MariaDB MaxScale 22.08.17 Release Notes](22.08.17.md)
* [MariaDB MaxScale 22.08.16 Release Notes](22.08.16.md)
Expand Down
50 changes: 50 additions & 0 deletions release-notes/maxscale/22.08/22.08.19.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
hidden: true
---

# MariaDB MaxScale 22.08.19 Release Notes

Release 22.08.19 is a GA release.

This document describes the changes in release 22.08.19, when compared to the
previous release in the same series.

If you are upgrading from an older major version of MaxScale, please read the
[upgrading document](https://app.gitbook.com/s/0pSbu5DcMSW4KwAkUcmX/maxscale-management/deployment/upgrading-maxscale)
for this MaxScale version.

For any problems you encounter, please consider submitting a bug
report on [our Jira](https://jira.mariadb.org/projects/MXS).

## Bug fixes

* [MXS-6013](https://jira.mariadb.org/browse/MXS-6013) SHOW CREATE TABLE doesn't detect if a temporary table is used
* [MXS-5983](https://jira.mariadb.org/browse/MXS-5983) Default users_refresh_interval causes repeated user account loading
* [MXS-5963](https://jira.mariadb.org/browse/MXS-5963) maxctrl create report --archive error reporting produces errors
* [MXS-5954](https://jira.mariadb.org/browse/MXS-5954) kafkacdc doesn't escape db name identifiers resulting in errors
* [MXS-5948](https://jira.mariadb.org/browse/MXS-5948) Database names with dashes are not properly escaped when disabling events
* [MXS-5947](https://jira.mariadb.org/browse/MXS-5947) Fix for MXS-5196 can break "maxctrl create report"
* [MXS-5946](https://jira.mariadb.org/browse/MXS-5946) MaxKeys usage message is obsolete
* [MXS-5717](https://jira.mariadb.org/browse/MXS-5717) Rebuild Replica fails when using MaxScale encrypted password for monitor user

## Known Issues and Limitations

There are some limitations and known issues within this version of MaxScale.
For more information, please refer to the
[Limitations](https://app.gitbook.com/s/0pSbu5DcMSW4KwAkUcmX/maxscale-management/mariadb-maxscale-limitations-guide)
document.

## Packaging

RPM and Debian packages are provided for the supported Linux distributions.

Packages can be downloaded [here](https://mariadb.com/downloads).

## Source Code

The source code of MaxScale is tagged at GitHub with a tag, which is identical
with the version of MaxScale. For instance, the tag of version X.Y.Z of MaxScale
is `maxscale-X.Y.Z`. Further, the default branch is always the latest GA version
of MaxScale.

The source code is available [here](https://github.com/mariadb-corporation/MaxScale).
1 change: 1 addition & 0 deletions release-notes/maxscale/23.02/23.02-changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@

For more details, please refer to:

* [MariaDB MaxScale 23.02.16 Release Notes](23.02.16.md)
* [MariaDB MaxScale 23.02.15 Release Notes](23.02.15.md)
* [MariaDB MaxScale 23.02.14 Release Notes](23.02.14.md)
* [MariaDB MaxScale 23.02.13 Release Notes](23.02.13.md)
Expand Down
Loading