var settings = new MySqlSettings("localhost", "mydb", username: "root", password: "pass");
var comm = new MySqlCommunicator(settings.BuildConnectionString());
await comm.Open();
var orders = await comm.DbConnection.QueryAsync<Order>(
"SELECT * FROM orders WHERE status = @status",
new { status = "pending" });
await comm.Close();
var options = new MySqlBackupOptions { DbSettings = settings };
// Backup
IMemoryFile backup = await new MySqlBackupService(options).Backup();
await fileService.Save("backups/mysql-latest.sql.gz", backup.GetBytes()!);
// Restore to a different database
var restoreOptions = new MySqlBackupOptions
{
DbSettings = new MySqlSettings("localhost", "mydb-staging", username: "root", password: "pass")
};
IMemoryFile snapshot = (await fileService.GetBytes("backups/mysql-latest.sql.gz"))!
.ToBinaryFile("snapshot.sql.gz");
await new MySqlRestoreService(restoreOptions).Restore(snapshot);