MySQL / MariaDB
The MySQL integration allows Plakar Control Plane to back up and restore MySQL and MariaDB databases. The integration supports multiple protocols.
Inventory Management
Managed inventories can discover MySQL databases automatically on AWS (RDS instances and clusters), Scaleway (managed Database instances), etc. For self-hosted MySQL servers not covered by managed discovery, you can instead set up a self-managed inventory and add the resource manually.
Adding MySQL as a resource
When using a self-managed inventory, register the resource with Database as
the class. For the endpoint, use the hostname or IP address of the MySQL server.
See resources documentation for more information on how to
set up resources on a self-managed inventory.
1. mysql protocol
The mysql protocol connects directly to a running MySQL server over the
network and produces a logical, SQL-level dump using mysqldump. Restoring
applies the dump to a running MySQL server using the mysql client, so a
reachable server is required for both backup and restore.
Every snapshot contains a single <dbname>.sql file when one database is
selected, or a combined all.sql file covering every database when none is
specified.
On Debian and Ubuntu, apt install default-mysql-client installs MariaDB’s
mysqldump by default, which is not compatible with MySQL 8 for all-databases
backups and produces dumps that fail to restore. Verify the installed binary
is MySQL’s own mysqldump before relying on this protocol.
The backup user requires SELECT, SHOW VIEW, TRIGGER, and EVENT
privileges on the databases being backed up, plus PROCESS on *.*. Backing
up all databases also requires LOCK TABLES and RELOAD on *.*.
Backup flow
flowchart TD
subgraph MySQL["MySQL Server"]
DB["Databases"]
end
subgraph Plakar["Plakar Control Plane"]
Source["MySQL
Source app"]
Backup["Backup process
Encrypt & deduplicate"]
end
Store["Kloset Store"]
Source -->|"mysqldump"| DB
DB --> Source
Source --> Backup
Backup --> Store
Restore flow
flowchart TD
Store["Kloset Store"]
subgraph Plakar["Plakar Control Plane"]
Destination["MySQL
Destination app"]
Restore["Restore process"]
end
subgraph MySQL["MySQL Server"]
DB["Databases"]
end
Store --> Restore
Destination --> Restore
Restore -->|"mysql"| DB
Shared configuration
The following settings are available when configuring both source and
destination apps using the mysql protocol.
- Password: MySQL password. Overrides the password in the location URI.
Never appears on the command line; passed via
MYSQL_PWD. - Ssl Mode: SSL/TLS mode for the connection, passed via
--ssl-mode. Not set by default, letting the server decide. - Username: MySQL username. Overrides the username in the location URI.
Source configuration
The following extra settings are available when configuring a source app using
the mysql protocol.
- Column Statistics: Query
information_schema.COLUMN_STATISTICSfor histogram data. Enabled by default, matchingmysqldump8.0 behavior. Disable to pass--column-statistics=0, required when themysqldumpbinary is 8.0 but the source server is MySQL 5.7 or MariaDB. - Database: Name of the database to back up. If omitted, all non-system
databases are backed up using
--all-databases. Overrides the database in the location URI. - Events: Include event scheduler events, passing
--events. Enabled by default. - Hex Blob: Dump
BINARY,VARBINARY,BLOB, andBITcolumns using hexadecimal notation, passing--hex-blob. Useful when the dump may be loaded on a system with different character set settings. - No Create Info: Dump only
INSERTstatements, no DDL, passing--no-create-info. Mutually exclusive with No Data. - No Data: Dump only DDL statements, no
INSERTrows, passing--no-data. Mutually exclusive with No Create Info. - No Tablespaces: Suppress
CREATE LOGFILE GROUPandCREATE TABLESPACEstatements, passing--no-tablespaces. Enabled by default; recommended for restoring to managed or cloud MySQL instances that do not support custom tablespaces. - Routines: Include stored procedures and functions, passing
--routines. Enabled by default. - Set Gtid Purged: Controls the
SET @@GLOBAL.GTID_PURGEDstatement in the dump, passed via--set-gtid-purged.AUTO(default) includes it only when GTIDs are enabled on the server. UseOFFwhen restoring to a server that already has GTID history. - Single Transaction: Use
--single-transactionfor a consistent InnoDB snapshot without locking tables. Enabled by default and strongly recommended for production InnoDB databases. MyISAM tables still require table locks even with this option. - Triggers: Include triggers. Enabled by default; disable to pass
--skip-triggers.
Destination configuration
The following extra settings are available when configuring a destination app
using the mysql protocol.
- Create Db: Issue
CREATE DATABASE IF NOT EXISTSbefore restoring a single-database dump. Disabled by default. - Database: Target database for restore. If omitted, the database name is
inferred from the dump filename (e.g.
mydb.sql->mydb). Not used when restoring anall.sqldump. - Force: Continue the restore after SQL errors, passing
--forcetomysql. Disabled by default.
2. mysql+gcsql protocol
The mysql+gcsql protocol targets MySQL databases hosted on Google Cloud SQL.
Plakar Control Plane connects through the Cloud SQL Auth Proxy, which
establishes an encrypted tunnel to the Cloud SQL instance and makes the
connection behave like a normal MySQL server. Backup and restore otherwise work
exactly like the mysql protocol, using mysqldump and mysql.
The Cloud SQL Auth Proxy must already be running and reachable at the configured host and port before Plakar Control Plane connects. Since the proxy handles encryption, there is no separate SSL mode setting for this protocol.
Backup flow
flowchart TD
subgraph GCP["Google Cloud SQL"]
DB["Databases"]
end
subgraph CloudSQLProxy["Cloud SQL Auth Proxy"]
Proxy["Auth Proxy"]
end
subgraph Plakar["Plakar Control Plane"]
Source["MySQL
Source app"]
Backup["Backup process
Encrypt & deduplicate"]
end
Store["Kloset Store"]
Source -->|"mysqldump"| Proxy
Proxy -->|"encrypted tunnel"| DB
Source --> Backup
Backup --> Store
Restore flow
flowchart TD
Store["Kloset Store"]
subgraph Plakar["Plakar Control Plane"]
Destination["MySQL
Destination app"]
Restore["Restore process"]
end
subgraph CloudSQLProxy["Cloud SQL Auth Proxy"]
Proxy["Auth Proxy"]
end
subgraph GCP["Google Cloud SQL"]
DB["Databases"]
end
Store --> Restore
Destination --> Restore
Restore -->|"mysql"| Proxy
Proxy -->|"encrypted tunnel"| DB
Shared configuration
The following settings are available when configuring both source and
destination apps using the mysql+gcsql protocol.
- Password: MySQL password. Overrides the password in the location URI.
Never appears on the command line; passed via
MYSQL_PWD. - Username: MySQL username. Overrides the username in the location URI.
Source configuration
The following extra settings are available when configuring a source app using
the mysql+gcsql protocol.
- Column Statistics: Query
information_schema.COLUMN_STATISTICSfor histogram data. Enabled by default, matchingmysqldump8.0 behavior. Disable to pass--column-statistics=0, required when themysqldumpbinary is 8.0 but the source server is MySQL 5.7 or MariaDB. - Database: Name of the database to back up. If omitted, all non-system
databases are backed up using
--all-databases. Overrides the database in the location URI. - Events: Include event scheduler events, passing
--events. Enabled by default. - Hex Blob: Dump
BINARY,VARBINARY,BLOB, andBITcolumns using hexadecimal notation, passing--hex-blob. Useful when the dump may be loaded on a system with different character set settings. - No Create Info: Dump only
INSERTstatements, no DDL, passing--no-create-info. Mutually exclusive with No Data. - No Data: Dump only DDL statements, no
INSERTrows, passing--no-data. Mutually exclusive with No Create Info. - No Tablespaces: Suppress
CREATE LOGFILE GROUPandCREATE TABLESPACEstatements, passing--no-tablespaces. Enabled by default; recommended for restoring to managed or cloud MySQL instances that do not support custom tablespaces. - Routines: Include stored procedures and functions, passing
--routines. Enabled by default. - Set Gtid Purged: Controls the
SET @@GLOBAL.GTID_PURGEDstatement in the dump, passed via--set-gtid-purged.AUTO(default) includes it only when GTIDs are enabled on the server. UseOFFwhen restoring to a server that already has GTID history. - Single Transaction: Use
--single-transactionfor a consistent InnoDB snapshot without locking tables. Enabled by default and strongly recommended for production InnoDB databases. MyISAM tables still require table locks even with this option. - Triggers: Include triggers. Enabled by default; disable to pass
--skip-triggers.
Destination configuration
The following extra settings are available when configuring a destination app
using the mysql+gcsql protocol.
- Create Db: Issue
CREATE DATABASE IF NOT EXISTSbefore restoring a single-database dump. Disabled by default. - Database: Target database for restore. If omitted, the database name is
inferred from the dump filename (e.g.
mydb.sql->mydb). Not used when restoring anall.sqldump. - Force: Continue the restore after SQL errors, passing
--forcetomysql. Disabled by default.
3. mysql+mariadb protocol
The mysql+mariadb protocol works identically to mysql, but invokes
mariadb-dump for backup and mariadb for restore instead of mysqldump and
mysql. Use this protocol when targeting a MariaDB server, to avoid the
binary-compatibility issues that can occur when a MySQL-built mysqldump
connects to a MariaDB server or vice versa.
Backup flow
flowchart TD
subgraph MariaDB["MariaDB Server"]
DB["Databases"]
end
subgraph Plakar["Plakar Control Plane"]
Source["MySQL
Source app"]
Backup["Backup process
Encrypt & deduplicate"]
end
Store["Kloset Store"]
Source -->|"mariadb-dump"| DB
DB --> Source
Source --> Backup
Backup --> Store
Restore flow
flowchart TD
Store["Kloset Store"]
subgraph Plakar["Plakar Control Plane"]
Destination["MySQL
Destination app"]
Restore["Restore process"]
end
subgraph MariaDB["MariaDB Server"]
DB["Databases"]
end
Store --> Restore
Destination --> Restore
Restore -->|"mariadb"| DB
Shared configuration
The following settings are available when configuring both source and
destination apps using the mysql+mariadb protocol.
- Password: MariaDB password. Overrides the password in the location URI.
Never appears on the command line; passed via
MYSQL_PWD. - Ssl Mode: SSL/TLS mode for the connection, passed via
--ssl-mode. Not set by default, letting the server decide. - Username: MariaDB username. Overrides the username in the location URI.
Source configuration
The following extra settings are available when configuring a source app using
the mysql+mariadb protocol.
- Database: Name of the database to back up. If omitted, all non-system
databases are backed up using
--all-databases. Overrides the database in the location URI. - Events: Include event scheduler events, passing
--events. Enabled by default. - Hex Blob: Dump
BINARY,VARBINARY,BLOB, andBITcolumns using hexadecimal notation, passing--hex-blob. Useful when the dump may be loaded on a system with different character set settings. - No Create Info: Dump only
INSERTstatements, no DDL, passing--no-create-info. Mutually exclusive with No Data. - No Data: Dump only DDL statements, no
INSERTrows, passing--no-data. Mutually exclusive with No Create Info. - No Tablespaces: Suppress
CREATE LOGFILE GROUPandCREATE TABLESPACEstatements, passing--no-tablespaces. Enabled by default; recommended for restoring to managed MariaDB instances. - Routines: Include stored procedures and functions, passing
--routines. Enabled by default. - Single Transaction: Use
--single-transactionfor a consistent InnoDB snapshot without locking tables. Enabled by default and strongly recommended for production InnoDB databases. - Triggers: Include triggers. Enabled by default; disable to pass
--skip-triggers.
Destination configuration
The following extra settings are available when configuring a destination app
using the mysql+mariadb protocol.
- Create Db: Issue
CREATE DATABASE IF NOT EXISTSbefore restoring a single-database dump. Disabled by default. - Database: Target database for restore. If omitted, the database name is
inferred from the dump filename (e.g.
mydb.sql->mydb). Not used when restoring anall.sqldump. - Force: Continue the restore after SQL errors, passing
--forcetomariadb. Disabled by default. - Ssl Mode: SSL/TLS mode for the connection, passed via
--ssl-mode. Not set by default, letting the server decide.