MySQL Limits

MySQL is an open source, object-relational database built with speed and reliability in mind. Its large and active developer community has created many third-party applications, tools, and libraries that expand MySQL’s functionality.

Managed Database Cluster Limits

  • By default, you are limited to 10 clusters per account or team. If you reach this limit but need to create more database clusters, you can submit a request for a higher limit by clicking “Request Increase” on the window that shows when you attempt to create another cluster.

  • You cannot resize cluster nodes to smaller sizes. To move from a bigger node to a smaller node, create a new cluster with the desired node size and import your data.

  • You cannot delete the default database and user.

  • Point-in-time-recovery (PITR) is limited to the last 7 days.

  • VPC networks are only available to resources, accounts, and teams in the same region as the VPC network.

  • You cannot currently add DigitalOcean Cloud Firewalls to a database cluster’s trusted sources.

  • By default, database clusters only support up to 100 IP addresses as trusted sources. Different types of resources add varying numbers of IP addresses to your cluster. For example, Droplets typically have two IP addresses, one public and one private, both of which count towards the 100-address maximum. To add more than 100 IP addresses, contact support.

  • You cannot migrate databases from clusters inside of DigitalOcean to other clusters inside of DigitalOcean using the online migration feature.

  • When you restore from a backup, you must restore to a new node and re-add any read-only or standby nodes. See How to Restore from Backups for details.

MySQL Limits

  • Each cluster is limited to 3 nodes.

  • We support only MySQL v8.

  • We do not support query statistics.

  • Connection pooling is not supported for MySQL.

  • You cannot change the storage engine for MySQL from InnoDB to MyISAM.

  • To maintain cluster stability, users cannot use the root user.

  • The MySQL system variables are set depending upon the size of the cluster’s Droplets. You can’t edit them, but you can see what they are with SHOW VARIABLES;.

  • MySQL nodes can have up to 75 simultaneous connections per gigabyte of usable memory, rounded down to the nearest gigabyte. Usable memory is the total memory on the node minus approximately 350 MB of overhead for the operating system and management.

    Plan Size Available Backend Connections
    1 GB RAM 75
    2 GB RAM 150
    4 GB RAM 225
    8 GB RAM 700
    16 GB RAM 1,500
    32 GB RAM 3,100
    64 GB RAM 6,200

    max_connections is set to one connection higher to accommodate a system process that does not count against the node’s connection limit. For example, a 4 GB node has roughly 3.6 GB of usable memory. It can have up to 3 * 75 = 225 connections and its max_connections is set to 226.

  • Each MySQL cluster allows 75 backend connections per 1 GB of usable memory. Usable memory is the total memory on the node minus the estimated 350 MiB used by the operating system. Usable memory is rounded to the nearest gigabyte.

Known Issues

Managed Database Cluster Known Issues

  • You must use a third-party client to manage access control lists (ACLs). You can add users and databases from the DigitalOcean Control Panel.

  • You can’t use DigitalOcean’s Cloud Firewalls with managed databases. Until support is available, you can restrict access to nodes by their incoming IPv4 addresses.

  • Point-in-time-recovery (PITR) operations are limited to the last 7 days. The date picker doesn’t restrict you from choosing an earlier date; you will receive an error if you try to recover from a date outside of the 7-day window.

  • MySQL databases containing tables without a primary key and which contain more than 5000 rows may experience replication issues. To prevent this, by default, DigitalOcean now requires you to add a primary key for each new table you create in any managed MySQL database created after 8 April 2020. We strongly recommend that you also add primary keys in existing databases to avoid replication issues. You can override this requirement by making a configuration request via our API.