Applications should not need to know anything about your database infrastructure or handle failover, but that level of transparency is not trivial to achieve. Databases can be distributed across multiple servers, sometimes across multiple datacenters using various replication technologies in active-active or active-standby configurations. Applications should not stop to handle requests because of a failed or overloaded database server, while others might have plenty of resources to handle requests - do you really want to handle database failover and load balancing in your applications? Master-slave replication topologies often require applications to only write to masters, and read from slaves. In dynamic environments, master failover can happen automatically, at any time. Read only servers might need to be added or removed without notice - Do you really want to handle these dynamic infrastructure changes in your applications?
Database load balancers are an essential component in the database high availability stack. They are the endpoints that your applications talk to, in order to access their data while hiding the complexity of the underlying database infrastructure. Because of ProxySQL’s ability to understand the MySQL protocol, it is uniquely suited to manage the database traffic between applications and backend database servers. It has an advanced multi-core architecture to handle large number of connections, multiplexed to potentially hundreds of backend servers.
Packaged in ClusterControl, ProxySQL enables MySQL, MariaDB and Percona XtraDB database systems to easily manage intense, high-traffic database applications without losing availability or requiring applications to understand the database infrastructure.