Interfaces and endpoints¶
Charmed MySQL VM supports modern mysql_client
and legacy mysql
, mysql-shared
, mysql-router
interfaces (in a backward compatible mode).
Caution
Do NOT integrate (relate) both modern and legacy interfaces simultaneously.
Modern relations¶
This charm provides the modern mysql_client
interface. Applications can easily connect MySQL using data_interfaces
library from data-platform-libs
.
Modern mysql_client
interface (database
endpoint)¶
Adding a Juju relation is accomplished with juju integrate
via endpoint database
.
Example:
# Deploy Charmed MySQL cluster with 3 nodes
juju deploy mysql -n 3 --channel 8.0
# Deploy the relevant charms, e.g. mysql-test-app
juju deploy mysql-test-app
# Integrate (relate) MySQL with your application
juju integrate mysql:database mysql-test-app:database
# Check established relation (using mysql_client interface):
juju status --relations
# Example of the properly established relation:
# > Relation provider Requirer Interface Type
# > mysql:database mysql-test-app:database mysql_client regular
See details about database user roles in Users.
Note
In order to integrate with this charm, every table created by the integrated application must have a primary key. This is required by the group replication plugin enabled in this charm.
Legacy relations¶
Legacy relations are deprecated and will be discontinued in future releases. Usage should be avoided.
Check the legacy interface implementation limitations in Legacy charm.
This charm supports several legacy interfaces, e.g. mysql
, mysql-shared
, mysql-router
. They were used in some legacy charms in cross-model relations.
mysql
interface (mysql
endpoint)¶
It was a popular interface used by some legacy charms (e.g. “MariaDB”, “OSM MariaDB”, “Percona Cluster” and “Mysql Innodb Cluster”), often in cross-model relations:
juju deploy mysql --channel 8.0
juju config mysql mysql-interface-database=mediawiki mysql-interface-user=mediawiki
juju deploy mediawiki
juju integrate mysql:mysql mediawiki:db
mysql-router
interface (db-router
endpoint)¶
It is a relation that one uses with the mysql router charm. The following commands can be executed to deploy and integrate to the keystone charm:
juju deploy mysql --channel 8.0
juju deploy mysql-router --series focal
juju deploy keystone --series focal
juju integrate mysql-router keystone
juju integrate mysql:db-router mysql-router:db-router
Note
Make sure to deploy identical series/base for keystone
and mysql-router
applications.
This is necessary due to the subordinate charm nature of mysql-router
.