|Linux||RedHat/CentOS||Primary platform||RHEL 4, 5, and 6 as well as CentOS 5.x and 6.x versions are fully supported. CentOS 7 is supported in 5.3.0 and higher.|
|Linux||Ubuntu||Primary platform||Ubuntu 9.x-17.x versions are fully supported.|
|Linux||Debian/Suse/Other||Secondary Platform||Other Linux platforms are supported but are not regularly tested. We will fix any bugs reported by customers.|
|Linux||Docker||Unsupported||Unsupported - Use at your own risk. Docker containers are not well-suited for Tungsten deployments.|
|Solaris||Secondary Platform||Solaris 10 is fully supported. OpenSolaris is not supported at this time.|
|Mac OS X||Secondary platform||Mac OS/X is used for development at Continuent and could also be used as a Staging Host for Staging Deployments only, but it is not certified for us as a cluster or replicator node within a topology.|
|Windows||Limited Support||Windows platforms supported for connectivity (Tungsten Connector) but may require manual configuration. Tungsten Cluster and Tungsten Replicator do not run on Windows.|
|Database||MySQL Version||Tungsten Version||Notes|
|MySQL||5.0, 5.1||All Versions up to 6.1.3||Full Support. Newer releases may function with these older MySQL releases at users own risk, any incompatibilities found won't be fixed.|
|MySQL||5.5, 5.6||All Versions||Full Support|
|MySQL||5.7||5.3.0, 6.0.0||Supported but excludes Geometry, JSON and VIRTUAL Column Types|
|MySQL||5.7||5.3.1-5.4.1, 6.0.1 onwards||Full Support|
Supported, but does not support Partitioned Tables or the use of
Fully Supported, but does not support the use of
|MariaDB||5.5, 10.0, 10.1||All Versions||Full Support|
Known Issue affecting use of MySQL 8.0.21
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.
RAM requirements are dependent on the workload being used and applied, but the following provide some guidance on the basic RAM requirements:
Tungsten Replicator requires 2GB of VM space for the Java execution, including the shared libraries, with approximate 1GB of Java VM heapspace. This can be adjusted as required, for example, to handle larger transactions or bigger commit blocks and large packets.
Performance can be improved within the Tungsten Replicator if there is a 2-3GB available in the OS Page Cache. Replicators work best when pages written to replicator log files remain memory-resident for a period of time, so that there is no file system I/O required to read that data back within the replicator. This is the biggest potential point of contention between replicators and DBMS servers.
Disk space usage is based on the space used by the core application, the staging directory used for installation, and the space used for the THL files:
The staging directory containing the core installation is
approximately 150MB. When performing a staging-directory based
installation, this space requirement will be used once. When using a
INI-file based deployment, this space will be required on each server.
For more information on the different methods, see
Section 8.1, “Comparing Staging and
Deployment of a live installation also requires approximately 150MB.
The THL files required for installation are based on the size of the
binary logs generated by MySQL. THL size is typically twice the size
of the binary log. This space will be required on each machine in the
cluster. The retention times and rotation of THL data can be
controlled, see Section D.1.5, “The
thl Directory” for more
information, including how to change the retention time and move files
A dedicated partition for THL or Tungsten Cluster is recommended to ensure that a full disk does not impact your OS or DBMS. Local disk, SAN, iSCSI and AWS EBS are suitable for storing THL. NFS is NOT recommended.
Because the replicator reads and writes information using buffered I/O in a serial fashion, there is no random-access or seeking.
Tungsten Replicator is known to work with with the following Java versions and JVMs:
Oracle JVM/JDK 7
Oracle JVM/JDK 8
Cloud deployments require a different set of considerations over and above the general requirements. The following is a guide only, and where specific cloud environment requirements are known, they are explicitly included:
|Instance Type||Instance sizes and types are dependent on the workload, but larger instances are recommended for transactional databases.||
|Instance Boot Volume||Use block, not ephemeral storage.||EBS|
|Instance Deployment||Use standard Linux distributions and bases. For ease of deployment and configuration, the use of Ansible, Puppet or other script based solutions could be used.||Amazon Linux AMIs|
Development/QA nodes should always match the expected production environment.
Use Virtual Private Cloud (VPC) deployments, as these provide consistent IP address support.
Multiple EBS-optimized volumes for data, using Provisioned IOPS for the EBS volumes depending on workload:
|Parameter||tpm Option||tpm Value||
MySQL ||MySQL Value|
|MySQL Binary Logs||
|Transaction History Logs (THL)||
Recommended Replication Formats
MIXED is recommended for MySQL
Primary/Replica topologies (e.g., either single clusters or
ROW is strongly recommended
for Composite Active/Active setups. Without
data drift is a possible problem
STATEMENT. Even with
ROW there are still cases
where drift is possible but the window is far smaller.
ROW is required for
Continuent has traditionally had a relaxed policy about Linux platform support for customers using our products.
While it is possible to install and run Continuent Tungsten products (i.e. Clustering/Replicator/etc.) inside Docker containers, there are many reasons why this is not a good idea.
As background, every database node in a Tungsten Cluster runs at least three (3) layers or services:
MySQL Server (i.e. MySQL Community or Enterprise, MariaDB or Percona Server)
Tungsten Manager, which handles health-checking, signaling and failover decisions (Java-based)
Tungsten Replicator, which handles the movement of events from the MySQL Primary server binary logs to the Replica databases nodes (Java-based)
Optionally, a fourth service, the Tungsten Connector (Java-based), may be installed as well, and often is.
As such, this means that the Docker container would also need to support these 3 or 4 layers and all the resources needed to run them.
This is not what containers were designed to do. In a proper containerized architecture, each container would contain one single layer of the operation, so there would be 3-4 containers per “node”. This sort of architecture is best managed by some underlying technology like Swarm, Kubernetes, or Mesos.
More reasons to avoid using Docker containers with Continuent Tungsten solutions:
Our product is designed to run on a full Linux OS. By design Docker does not have a full init system like SystemD, SysV init, Upstart, etc… This means that if we have a process (Replicator, Manager, Connector, etc…) that process will run as PID 1. If this process dies the container will die. There are some solutions that let a Docker container to have a ‘full init’ system so the container can start more processes like ssh, replicator, manager, … all at once. However this is almost a heavyweight VM kind of behavior, and Docker wasn’t designed this way.
Requires a mutable container – to use Tungsten Clustering inside a Docker container, the Docker container must be launched as a mutable Linux instance, which is not the classic, nor proper way to use containers.
Our services are not designed as “serverless”. Serverless containers are totally stateless. Tungsten Cluster and Tungsten Replicator do not support this type of operation.
Until we make the necessary changes to our software, using Docker as a cluster node results in a minimum 1.2GB docker image.
Once Tungsten Cluster and Tungsten Replicator have been refactored using a microservices-based architecture, it will be much easier to scale our solution using containers.
A Docker container would need to allow for updates in order for the Tungsten Cluster and Tungsten Replicator software to be re-configured as needed. Otherwise, a new Docker container would need to be launched every time a config change was required.
There are known i/o and resource constraints for Docker containers, and therefore must be carefully deployed to avoid those pitfalls.
We test on CentOS-derived Linux platforms.
Continuent does NOT have Docker containerization on the product roadmap at this time. That being said, we do intend to provide containerization support at some point in the future. Customer demand will contribute to the timing of the effort.