This filter was introduced in MariaDB MaxScale 2.3.0.
The binlogfilter
can be combined with a binlogrouter
service to selectively
replicate the binary log events to slave servers.
The filter uses two parameters, match
and exclude
, to decide which events
are replicated. If a binlog event does not match or is excluded, the event is
replaced with an empty data event. The empty event is always 35 bytes which
translates to a space reduction in most cases.
The filter works with both row based and statement based replication but we recommend using row based replication with the binlogfilter. This guarantees that there are no ambiguities in the event filtering.
Both the match
and exclude
parameters are optional. If neither of them is
defined, the filter does nothing and all events are replicated.
The two parameters are matched against the database and table name concatenated
with a period. For example, the string the patterns are matched against for the
database test
and table t1
is test.t1
.
For statement based replication, the pattern is matched against all the tables
in the statements. If any of the tables matches the match
pattern, the event
is replicated. If any of the tables matches the exclude
pattern, the event is
not replicated.
A PCRE2 regular expression
that is matched against the database and table name. If the pattern matches, the
event is replicated to the slave. If no match
parameter is defined, all events
are considered to match.
A PCRE2 regular expression
that is matched against the database and table name. If the pattern matches, the
event is excluded and is not replicated to the slave. If no exclude
pattern is
defined, the event filtering is controlled completely by the match
parameter.
With the following configuration, only events belonging to database customers
are replicated. In addition to this, events for the table orders
are excluded
and thus are not replicated.
[BinlogFilter]
type=filter
module=binlogfilter
match=/customers[.]/
exclude=/[.]orders/
[BinlogServer]
type=service
router=binlogrouter
server_id=33
filters=BinlogFilter
[BinlogListener]
type=listener
service=BinlogServer
protocol=MySQLClient
port=4000
For more information about the binlogrouter and how to use it, refer to the binlogrouter documentation and the binlogrouter tutorial.