Platform
ScaiWave ScaiGrid ScaiCore ScaiBot ScaiDrive ScaiKey Modellen Tools & Services
Oplossingen
Organisaties Ontwikkelaars Internet Service Providers Managed Service Providers AI-in-a-Box
Kenniscentrum
Ondersteuning Documentation Blog Downloads
Bedrijf
Over ons Onderzoek Vacatures Investeren Contact
Inloggen

Limitations

Scuttle std is a shared, synchronously replicated cluster. A few MariaDB features do not work under replication or would break isolation between tenants. Check this list before migrating an application.

InnoDB only#

Only InnoDB tables replicate. CREATE TABLE ... ENGINE=MyISAM, Aria or MEMORY is rejected with an error instead of silently creating a table that exists on one node only. Temporary tables are unaffected. Convert existing tables with ALTER TABLE t ENGINE=InnoDB before importing a dump.

Tables should have a primary key#

Give every table a primary key. DELETE on a table without one does not replicate correctly, and such tables slow replication down for everyone.

Commit-time deadlocks#

Two transactions that change the same rows can both run to completion and one of them then fails at commit with a deadlock error (1213). This is how optimistic replication resolves a conflict, not a bug. Retry the transaction — see Retrying transactions.

Locks and large transactions#

LOCK TABLES and GET_LOCK() have no effect across nodes, and XA transactions are not supported. A single transaction may not produce more than 2 GB of changes; load large imports in batches.

No server-level features#

There is no SUPER, FILE, PROCESS, no plugins, no global variables and no user-defined functions written in C. The event scheduler is not available; schedule recurring work from your application or a job runner. SHOW DATABASES, information_schema and SHOW PROCESSLIST show only your own objects and sessions.

New connections are rate-limited per source address#

Each source IP address may open at most 300 new connections in any 10 seconds to a cluster endpoint. This is a guard against password guessing. Connections that are already open aren't affected, and neither is the number of connections you keep open.

Past the limit, new connections are closed as soon as they're opened. Your client reports 2013 Lost connection … at 'reading initial communication packet'. It doesn't report an access error, because the refusal happens before the server has said anything.

Refused attempts count too, so a client retrying in a tight loop keeps itself blocked. See Lost connection while connecting.

Connections can be reset#

A failover or maintenance resets open connections. Use a connection pool that reconnects, and keep transactions short.

Restores go to a new name#

A point-in-time restore creates a new database next to the original; it never overwrites in place. Views and routines that mention the old database name explicitly are yours to adjust.

Updated 2026-09-27 12:40:17 View source (.md) rev 4