Version End of Life. 15 Aug 2024
Release 6.1.5 is a small interim bug fix with a number of issues resolved within the Core Replicator, sepcifically for heterogeneous environments.
The following changes have been made to Tungsten Replicator and may affect existing scripts and integration tools. Any scripts or environment which make use of these tools should check and update for the new configuration:
There may be occasions when you intentionally want DDL to pass through, such as if you have a custom filter that injects custom DDL statements into the pipeline, however the batch applier would always remove them.
A new property is now available to control this behaviour. Set
property=replicator.applier.dbms.applyStatements=trueto allow the batch applier to retain DDL statements. The default value of
falseretains the original behaviour of removing DDL.
The following issues are known within this release but not considered critical, nor impact the operation of Tungsten Replicator. They will be addressed in a subsequent patch release.
In MySQL release 8.0.21 the behavior of
CREATE TABLE ... AS SELECT ...has changed, resulting in the transactions being logged differenly in the binary log. This change in behavior will cause the replicators to fail.
Until a fix is implemented within the replicator, the workaround for this will be to split the action into separate
CREATE TABLE ...followed by
INSERT INTO ... SELECT FROM...statements.
If this is not possible, then you will need to manually create the table on all nodes, and then skip the resulting error in the replicator, allowing the subsequent loading of the data to continue.
When replicating data that included timestamps, the replicator
would update the timestamp value to the time within the commit
from the incoming THL. When using statement based replication
times would be correctly replicated, but if using a mixture of
statement and row based replication, the timestamp value would
not be set back to the default time when switching between
statement and row based events. This would not cause problems in
the applied host, except when
was enabled. In this case, all row-based events after a
statement based event would have the same timestamp value
This was most commonly seen when using the standalone replicator to replicate into a Cluster, either from a standlone source, or a cluster source.
This is due to the relay client getting an incomplete packet from the remote database and going into a WAITING state.
To handle these situations, a new property has been included that will set a timeout and if the replicator
does not process an event in the given timeout period, we assume we have lost the link to the remote database and
will place the replicator into an
Providing auto-recovery has been enabled using the
the replicator will then restart and proceed successfully.
The new property to include is
The default value (0) will disable the timeout. Values provided are in seconds, so 300 would be 5 minutes.
Setting the timeout too low in quieter systems may result in unnecessary replicator restarts. The value should be set according to the activity levels of your database. If the source is very active with constant updates, then a low value would be appropriate. On quieter systems that may have long periods of inactivty, should have a timeout value set no less than the longest, normal, period of inactivity within your system.
For example, all of the examples below are valid SQL but would cause a failure in the replicator:
sql> CREATE TABLE myschema. mytable (.... sql> CREATE TABLE myschema .mytable (.... sql> CREATE TABLE myschema . mytable (....