diff --git a/.github/vale/styles/config/vocabularies/Aiven/accept.txt b/.github/vale/styles/config/vocabularies/Aiven/accept.txt
index 3e855f1e7..b65da661f 100644
--- a/.github/vale/styles/config/vocabularies/Aiven/accept.txt
+++ b/.github/vale/styles/config/vocabularies/Aiven/accept.txt
@@ -217,8 +217,9 @@ Mezmo
MirrorMaker
MongoDB
multicast
+mydumper
myhoard
-myhoard
+myloader
MySQL
mysqldump
mysqlsh
@@ -376,6 +377,8 @@ upsert
URIs?
UUIDs?
Valkey
+vCPU
+vCPUs
vectorizing
virtualized
VMs?
diff --git a/docs/platform/concepts/service_backups.md b/docs/platform/concepts/service_backups.md
index 564194c30..97feb4e5e 100644
--- a/docs/platform/concepts/service_backups.md
+++ b/docs/platform/concepts/service_backups.md
@@ -5,6 +5,7 @@ title: Service backups
import ConsoleLabel from "@site/src/components/ConsoleIcons";
import AutoDelete from "@site/static/includes/auto-delete-poweredoff.md";
import EditBackUpSchedule from "@site/static/includes/edit-backup-schedule.md";
+import EarlyBadge from "@site/src/components/Badges/EarlyBadge";
import Variables from "@site/static/variables.json";
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
@@ -30,8 +31,11 @@ backups with the appropriate tooling:
- [PostgreSQL®](https://www.postgresql.org/docs/current/app-pgdump.html):
`pgdump`
-- [MySQL®](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html):
- `mysqldump`
+- [MySQL®](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)
+
+ - `mysqldump` for small or medium-sized databases
+ - [`mydumper`](https://github.com/mydumper/mydumper) for large databases
+
- [Caching](https://redis.io/docs/connect/cli/#remote-backups-of-rdb-files):
`redis-cli`
- [Cassandra®](https://docs.datastax.com/en/cql-oss/3.1/cql/cql_reference/copy_r.html)
@@ -246,6 +250,12 @@ with the open source [myhoard](https://github.com/aiven/myhoard)
software. Myhoard uses [Percona XtraBackup](https://www.percona.com/)
internally for taking full (or incremental) snapshots for MySQL.
+For manual backups and migrations, you can use:
+
+- [`mysqldump`](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) for small or
+ medium-sized databases
+- [`mydumper`](https://github.com/mydumper/mydumper) for large databases
+
#### Edit the backup schedule
diff --git a/docs/products/mysql/howto/do-check-service-migration.md b/docs/products/mysql/howto/do-check-service-migration.md
index 3ca5edc0a..abc148526 100644
--- a/docs/products/mysql/howto/do-check-service-migration.md
+++ b/docs/products/mysql/howto/do-check-service-migration.md
@@ -1,5 +1,6 @@
---
-title: Perform pre-migration check
+title: Perform pre-migration checks
+sidebar_label: Pre-migration check
---
Learn how to find potential errors before starting your database migration process. This can be done by using either the [Aiven CLI](https://github.com/aiven/aiven-client) or the [Aiven REST API](https://api.aiven.io/doc/#section/Introduction).
diff --git a/docs/products/mysql/howto/migrate-database-mysqldump.md b/docs/products/mysql/howto/migrate-database-mysqldump.md
index 5ab8ea92d..e9f03467f 100644
--- a/docs/products/mysql/howto/migrate-database-mysqldump.md
+++ b/docs/products/mysql/howto/migrate-database-mysqldump.md
@@ -1,57 +1,85 @@
---
-title: Backup and restore Aiven for MySQL® data using mysqldump
+title: Backup and restore Aiven for MySQL® with mysqldump or mydumper
sidebar_label: Backup and restore
---
import MysqlMigrationFreeze from "@site/static/includes/mysql-migration-freeze.md";
+import MydumperNote from "@site/static/includes/mydumper-ea.md";
+import RelatedPages from "@site/src/components/RelatedPages";
+import ConsoleLabel from "@site/src/components/ConsoleIcons";
+import EarlyBadge from "@site/src/components/Badges/EarlyBadge";
+import Tabs from '@theme/Tabs';
+import TabItem from '@theme/TabItem';
-Backing up your Aiven for MySQ® data to another storage service is a good way to ensure access to your data in case a failure occurs.
-Learn how to copy your Aiven for MySQL data to a file, back it up to another Aiven
-for MySQL database, and restore it using [`mysqldump`](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html).
+Copy your Aiven for MySQL® data to a file, back it up to another Aiven for MySQL database, and restore it using [`mysqldump/restore`](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) or [`mydumper/myloader`](https://github.com/mydumper/mydumper).
+
+
## Prerequisites
-- The `mysqldump`
- [tool](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)
- installed. See the [official
- MySQL](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html)
- documentation on how to install it.
-- A source MySQL® database to copy your data from, referred to as `source-db`.
+Make sure your service has the required computational power (vCPUs) and
+memory capacity to process data migration without resource exhaustion or downtime.
+
+
+
+
+- [`mysqldump` tool](https://dev.mysql.com/doc/refman/8.4/en/mysqldump.html):
+ [install](https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-install.html) if
+ missing
+- Source database to copy your data from: `source-db`
+- Target database to dump your `source-db` data to: `target-db`
+
+
+
+
+
+
+
+
- You can use Aiven for MySQL databases for both the `source-db` and `target-db`.
- [Create additional Aiven for MySQL® databases](/docs/products/mysql/howto/create-database)
- as/if needed.
+- [`mydumper`](https://github.com/mydumper/mydumper) tool
+ ([install](https://mydumper.github.io/mydumper/docs/html/installing.html) if missing)
+- Source database to copy your data from: `source-db`
+- Target database to dump your `source-db` data to: `target-db`
-- A target MySQL database to dump your `source-db` data to, referred to as `target-db`.
-- Recommended: Pick a plan size that is large enough to store your data, so you can
- limit the downtime if you're performing a migration.
+
+
+
+You can use Aiven for MySQL databases both as `source-db` and as `target-db`.
+[Create additional Aiven for MySQL® databases](/docs/products/mysql/howto/create-database)
+as needed.
## Back up the data
-### Variables
+
+
+
+### Collect connection details
+
+To back up the `source-db` data to the `mydb_backup.sql` file, collect
+connection details on your Aiven for MySQL `source-db` service:
-To backup the `source-db` data to a file called `mydb_backup.sql` you
-need to collect some information about your Aiven for MySQL `source-db`
-database. Go to [Aiven Console](https://console.aiven.io/) > your Aiven
-for MySQL `source-db` service > **Overview** > the **Connection
-information** section and find the following information:
+1. Log in to the [Aiven Console](https://console.aiven.io/) and go to your `source-db`
+ service page.
+1. On the page, find **Connection information** and note
+ the following:
- | Variable | Description |
- | -------------------- | ------------------------------------------- |
- | `SOURCE_DB_HOST` | **Host** name for the connection |
- | `SOURCE_DB_USER` | **User** name for the connection |
- | `SOURCE_DB_PORT` | Connection **Port** number |
- | `SOURCE_DB_PASSWORD` | Connection **Password** |
- | `DEFAULTDB` | Database that contains the `source-db` data |
+ | Variable | Description |
+ | -------------------- | ------------------------------------------- |
+ | `SOURCE_DB_HOST` | **Host** name for the connection |
+ | `SOURCE_DB_USER` | **User** name for the connection |
+ | `SOURCE_DB_PORT` | Connection **Port** number |
+ | `SOURCE_DB_PASSWORD` | Connection **Password** |
+ | `DEFAULTDB` | Database that contains the `source-db` data |
-### Commands
+### Back up to a file
-Use the following command to back up your Aiven for MySQL data to a file
-named `mydb_backup.sql`:
+Use the following command to back up your Aiven for MySQL data to the `mydb_backup.sql`
+file:
-```shell
+```bash
mysqldump \
-p DEFAULTDB -P SOURCE_DB_PORT \
-h SOURCE_DB_HOST --single-transaction \
@@ -79,15 +107,65 @@ Identifiers](https://dev.mysql.com/doc/refman/5.7/en/replication-gtids-concepts.
The reason is that GTID's are not available with MyISAM.
:::
+
+
+
+
+
+
+
+
+### Collect connection details
+
+To backup the `source-db` data to the `mydb_backup_dir` directory, collect
+connection details on your Aiven for MySQL `source-db` service:
+
+1. Log in to the [Aiven Console](https://console.aiven.io/) and go to your `source-db`
+ service page.
+1. On the page, find **Connection information** and note
+ the following:
+
+ | Variable | Description |
+ | -------------------- | ------------------------------------------- |
+ | `SOURCE_DB_HOST` | **Host** name for the connection |
+ | `SOURCE_DB_USER` | **User** name for the connection |
+ | `SOURCE_DB_PORT` | Connection **Port** number |
+ | `SOURCE_DB_PASSWORD` | Connection **Password** |
+ | `DEFAULTDB` | Database that contains the `source-db` data |
+
+### Back up to a directory
+
+To back up your data with `mydumper`, run:
+
+```bash
+mydumper \
+--host SOURCE_DB_HOST \
+--user SOURCE_DB_USER \
+--password SOURCE_DB_PASSWORD \
+--port SOURCE_DB_PORT \
+--database DEFAULTDB \
+--outputdir ./mydb_backup_dir
+```
+
+This creates the `mydb_backup_dir` directory containing the backup files.
+
+
+
+
## Restore the data
-### Variables
+
+
-To restore data saved in a file to an Aiven for MySQL database, you need
-to include the connection information for the service in the `mysqldump`
-command. Go to [Aiven Console](https://console.aiven.io/) > your Aiven
-for MySQL `target-db` service > **Overview** > the **Connection
-information** section and find the following information:
+### Collect connection details
+
+To restore the saved data from the file to your `target-db`, collect
+connection details on your Aiven for MySQL `target-db` service:
+
+1. Log in to the [Aiven Console](https://console.aiven.io/) and go to your `target-db`
+ service page.
+1. On the page, find **Connection information** and note
+ the following:
| Variable | Description |
| -------------------- | ------------------------------------------- |
@@ -97,12 +175,11 @@ information** section and find the following information:
| `TARGET_DB_PASSWORD` | Connection **Password** |
| `DEFAULTDB` | Database that contains the `target-db` data |
-### Commands
+### Restore from the file
-Run the following command to load your saved data into your Aiven for
-MySQL database:
+Run the following command to load the saved data into your `target-db` service:
-```shell
+```bash
mysql \
-p DEFAULTDB -P TARGET_DB_PORT \
-h TARGET_DB_HOST \
@@ -110,13 +187,58 @@ mysql \
--password < mydb_backup.sql
```
-The password will be requested at the prompt. You can paste
-`TARGET_DB_PASSWORD` into the terminal. Your data should be stored in
-your Aiven for MySQL `target-db`. See the `mysqlcheck`
-[command](https://dev.mysql.com/doc/refman/8.0/en/mysqlcheck.html) to
-perform further analysis of your current MySQL data.
+
+
+
+
+
+
+
+
+### Collect connection details
+
+To restore the saved data from the directory to your `target-db`, collect
+connection details on your Aiven for MySQL `target-db` service:
+
+1. Log in to the [Aiven Console](https://console.aiven.io/) and go to your `target-db`
+ service page.
+1. On the page, find **Connection information** and note
+ the following:
+
+ | Variable | Description |
+ | -------------------- | ------------------------------------------- |
+ | `TARGET_DB_HOST` | **Host** name for the connection |
+ | `TARGET_DB_USER` | **User** name for the connection |
+ | `TARGET_DB_PORT` | Connection **Port** number |
+ | `TARGET_DB_PASSWORD` | Connection **Password** |
+ | `DEFAULTDB` | Database that contains the `target-db` data |
+
+### Restore from the directory
+
+Use `myloader` to restore the data from the `mydumper` backup:
+
+```bash
+myloader \
+--host TARGET_DB_HOST \
+--user TARGET_DB_USER \
+--password TARGET_DB_PASSWORD \
+--port TARGET_DB_PORT \
+--database DEFAULTDB \
+--directory ./mydb_backup_dir
+```
+
+
+
+
+When the password is requested at the prompt, paste `TARGET_DB_PASSWORD` into the terminal.
+When the restore or load process is complete and the data is stored in your `target-db`,
+you can use the
+[`mysqlcheck` command](https://dev.mysql.com/doc/refman/8.0/en/mysqlcheck.html) to
+perform data analysis.
-## Read more about migrations
+
-- [How to migrate to Aiven for MySQL from an external MySQL](/docs/products/mysql/howto/migrate-from-external-mysql)
-- [How to perform migration check on your Aiven for MySQL database](/docs/products/mysql/howto/migrate-from-external-mysql)
+- [Service backups](/docs/platform/concepts/service_backups#aiven-for-mysql)
+- [Migrate to Aiven via CLI](/docs/products/mysql/howto/migrate-from-external-mysql)
+- [Migrate to Aiven via console](/docs/products/mysql/howto/migrate-db-to-aiven-via-console)
+- [Perform pre-migration checks on your Aiven for MySQL® database](/docs/products/mysql/howto/do-check-service-migration)
diff --git a/docs/products/mysql/howto/migrate-db-to-aiven-via-console.md b/docs/products/mysql/howto/migrate-db-to-aiven-via-console.md
index df9b8c66d..e596ccd8f 100644
--- a/docs/products/mysql/howto/migrate-db-to-aiven-via-console.md
+++ b/docs/products/mysql/howto/migrate-db-to-aiven-via-console.md
@@ -1,16 +1,16 @@
---
-title: Migrate to Aiven for MySQL® using via Aiven Console
+title: Migrate to Aiven for MySQL® via console
sidebar_label: Migrate to Aiven via console
---
import RelatedPages from "@site/src/components/RelatedPages";
import MysqlMigrationFreeze from "@site/static/includes/mysql-migration-freeze.md";
-Use the Console to migrate MySQL® databases to managed MySQL clusters in your Aiven organization.
+Use the Aiven Console to migrate MySQL® databases to managed MySQL clusters in your Aiven organization.
:::note
To use the [Aiven CLI](/docs/tools/cli) to migrate your database, see
-[Migrate to Aiven for MySQL from an external MySQL](/docs/products/mysql/howto/migrate-from-external-mysql).
+[Migrate to Aiven via CLI](/docs/products/mysql/howto/migrate-from-external-mysql).
:::
You can migrate the following:
@@ -19,25 +19,22 @@ You can migrate the following:
- Cloud-hosted MySQL databases
- Managed MySQL database clusters on Aiven
-The Console migration tool provides 2 migration methods:
+The console migration tool provides two migration methods:
-- **(Recommended) Continuous migration:** Used by default in the tool
- and taken as the reference method. This method uses
- logical replication so that data transfer is possible not only for
- existing data in the source database when triggering the migration
- but also for any data written to the source database during the
- migration.
+- **(Recommended) Continuous migration:** Used by default in the tool and taken as the
+ reference method. This method uses logical replication so that data transfer is
+ possible not only for existing data in the source database when triggering the
+ migration but also for any data written to the source database during the migration.
-- **mysqldump**: Exports the current contents of the source database
- into a text file and imports it to the target database. Any changes
- written to the source database during the migration are **not
+- **mysqldump/restore:** Exports the current contents of the source
+ database into a text file or backup directory and imports it to the target database.
+ Any changes written to the source database during the migration are **not
transferred**.
-When you trigger the migration setup in the Console and initial
-checks detect that your source database does not support the logical
-replication, you are notified about it via the migration wizard. To
-continue with the migration, you can select the alternative
-`mysqldump` migration method in the wizard.
+When you trigger the migration setup in the console and initial checks detect that your
+source database does not support logical replication, you are notified about it via the
+migration wizard. To continue with the migration, the wizard allows you to select
+`mysqldump/restore` as an alternative migration method.
## Prerequisites
diff --git a/docs/products/mysql/howto/migrate-from-external-mysql.md b/docs/products/mysql/howto/migrate-from-external-mysql.md
index c3de938dd..ec424b510 100644
--- a/docs/products/mysql/howto/migrate-from-external-mysql.md
+++ b/docs/products/mysql/howto/migrate-from-external-mysql.md
@@ -1,70 +1,91 @@
---
-title: Migrate to Aiven for MySQL® via Aiven CLI
+title: Migrate to Aiven for MySQL® via CLI
sidebar_label: Migrate to Aiven via CLI
---
import RelatedPages from "@site/src/components/RelatedPages";
import MysqlMigrationFreeze from "@site/static/includes/mysql-migration-freeze.md";
+import EarlyBadge from "@site/src/components/Badges/EarlyBadge";
+import MydumperNote from "@site/static/includes/mydumper-ea.md";
-Aiven for MySQL® offers a managed process for migrating from an external MySQL into the Aiven-hosted database. It supports both a one-off dump-and-restore process and using the ongoing replication functionality built-in to MySQL.
+Migrate your external MySQL database to an Aiven-hosted one using either a one-time dump-and-restore or continuous data synchronization through MySQL's built-in replication.
:::note
-To use the Aiven Console to migrate your database, see
-[Migrate MySQL® databases to Aiven using the Console](/docs/products/mysql/howto/migrate-db-to-aiven-via-console).
+To migrate your database using the Aiven Console, see
+[Migrate MySQL® databases to Aiven via console](/docs/products/mysql/howto/migrate-db-to-aiven-via-console).
:::
-The process will first do a `mysqldump` to seed the schema and bulk-copy the
-data, if the preconditions are met for ongoing replication then it will
-configure MySQL as a replica of the external database.
+## How it works
-## Requirements
+The Aiven for MySQL migration process begins with an **initial data transfer** and can be
+followed by **continuous data synchronization** if your setup supports it.
-To perform a migration from an external MySQL to Aiven for MySQL the
-following requirements need to be satisfied:
+### Initial data transfer
-- The source server needs to be publicly available or accessible via a
- virtual private cloud (VPC) peering connection between the private
- networks, and any firewalls need to be open to allow traffic between
- the source and target servers.
-- You have a user account on the source server with sufficient
- privileges to create a user for the replication process.
-- [GTID](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html)
- is enabled on the source database. To review the current GTID
- setting, run the following command hon the source cluster:
+A bulk copy of your data is first created. This is done using one of the following tools:
- ```bash
- show global variables like 'gtid_mode';
- ```
+- `mysqldump` for small and medium-sized databases
+- `mydumper/myloader` for large databases
+
+
+
+### Continuous data synchronization
+
+After the initial data copy, the Aiven for MySQL service can be configured as a replica of
+your external database, enabling ongoing data synchronization through MySQL's built-in
+replication feature.
+
+## Prerequisites
+
+- The source server is publicly available or accessible via a virtual private cloud (VPC)
+ peering connection between the private networks, and firewalls are open to allow traffic
+ between the source and target servers.
+- You have a user account on the source server with sufficient privileges to create a user
+ for the replication process.
+- [GTID](https://dev.mysql.com/doc/refman/8.0/en/replication-gtids.html) is enabled on the
+ source database. Review the current GTID setting by running the following command on the
+ source cluster:
+
+ ```bash
+ show global variables like 'gtid_mode';
+ ```
+
+- You have a running Aiven for MySQL service with a destination database. If missing,
+ create it in the [Aiven Console](/docs/products/mysql/get-started) or the
+ [Aiven CLI](/docs/tools/cli/service-cli#avn-cli-service-create).
+
+- If you use `mydumper/myloader` for the
+ [initial data transfer](/docs/products/mysql/howto/migrate-from-external-mysql#initial-data-transfer),
+ make sure your service has sufficient computational power (multiple vCPUs) and high
+ memory capacity to avoid the resource exhaustion during migration.
:::note
-If you are migrating from MySQL in GCP, enable backups with
+If you are migrating from MySQL in Google Cloud, enable backups with
[PITR](https://cloud.google.com/sql/docs/mysql/backup-recovery/pitr) for
-GTID to be set to `on`
+GTID to be set to `on`.
:::
-### Variables
+## Collect source and destination details
-You can use the following variables in the code samples provided:
+| Variable | Description |
+|------------------|--------------------------------------------------------------------------------------------------------|
+| `SRC_HOSTNAME` | Hostname for source MySQL connection |
+| `SRC_PORT` | Port for source MySQL connection |
+| `SRC_USERNAME` | Username for source MySQL connection |
+| `SRC_PASSWORD` | Password for source MySQL connection |
+| `SRC_IGNORE_DBS` | Comma-separated list of databases to ignore in migration |
+| `SRC_SSL` | SSL setting for source MySQL connection |
+| `DEST_NAME` | Name of the destination Aiven for MySQL service |
+| `DEST_PLAN` | Aiven plan for the destination Aiven for MySQL service (for example, `startup-4` or `business-32`) |
- | Variable | Description |
- |------------------|--------------------------------------------------------------------------------------------------------|
- | `SRC_HOSTNAME` | Hostname for source MySQL connection |
- | `SRC_PORT` | Port for source MySQL connection |
- | `SRC_USERNAME` | Username for source MySQL connection |
- | `SRC_PASSWORD` | Password for source MySQL connection |
- | `SRC_IGNORE_DBS` | Comma-separated list of databases to ignore in migration |
- | `SRC_SSL` | SSL setting for source MySQL connection |
- | `DEST_NAME` | Name of the destination Aiven for MySQL service |
- | `DEST_PLAN` | Aiven plan for the destination Aiven for MySQL service (for example, `startup-4`, `business-32`, etc) |
-
-## Perform the migration
+## Migrate your database
-1. Create a user in the source database with sufficient privileges for
- the pre-flight checks, the `mysqldump`, and the ongoing replication
- (you can substitute `%` in the below command with the IP address of
- the Aiven for MySQL database, if already existing):
+1. Create a user in the source database with sufficient privileges for the pre-flight
+ checks, the bulk copy (using `mysqldump` or `mydumper` in ), and the ongoing
+ replication. Replace `%` with the IP address of the Aiven for MySQL database, if already
+ existing.
```sql
create user 'SRC_USERNAME'@'%' identified by 'SRC_PASSWORD';
@@ -72,15 +93,19 @@ You can use the following variables in the code samples provided:
grant select, process, event on *.* to 'SRC_USERNAME'@'%'
```
-1. If you don't have an Aiven for MySQL database yet, create it via
- [Aiven Console](/docs/products/mysql/get-started) or the dedicated
- [Aiven CLI command](/docs/tools/cli/service-cli#avn-cli-service-create)
+1. Set the migration details using the `avn service update`
+ [Aiven CLI command](/docs/tools/cli/service-cli#avn-cli-service-update).
-1. Set the migration details via the `avn service update`
- [Aiven CLI command](/docs/tools/cli/service-cli#avn-cli-service-update) substituting
- the parameters accordingly:
+ - Use your preferred migration tool:
- ```bash
+ - For `mysqldump`, include option `-c migration.dump_tool=mysqldump` in the command.
+ - For `mydumper`, include option `-c migration.dump_tool=mydumper` in the command.
+
+ - Replace the
+ [placeholders](/docs/products/mysql/howto/migrate-from-external-mysql#collect-source-and-destination-details)
+ with meaningful values.
+
+ ```bash {8}
avn service update --project PROJECT_NAME \
-c migration.host=SRC_HOSTNAME \
-c migration.port=SRC_PORT \
@@ -88,46 +113,44 @@ You can use the following variables in the code samples provided:
-c migration.password=SRC_PASSWORD \
-c migration.ignore_dbs=SRC_IGNORE_DBS \
-c migration.ssl=SRC_SSL \
+ -c migration.dump_tool=mysqldump \
DEST_NAME
```
-1. Check the migration status via the dedicated
- `avn service migration-status`
+1. Check the migration status using the `avn service migration-status`
[Aiven CLI command](/docs/tools/cli/service-cli#avn-cli-service-migration-status):
```bash
avn service migration-status --project PROJECT_NAME DEST_SERVICE_NAME
```
-While the migration process is ongoing, the `migration_detail.status`
-will be `syncing`:
-
-```json
-{
- "migration": {
- "error": null,
- "method": "replication",
- "seconds_behind_master": 0,
- "source_active": true,
- "status": "done"
- },
- "migration_detail": [
- {
- "dbname": "migration",
- "error": null,
- "method": "replication",
- "status": "syncing"
- }
- ]
-}
-```
+ When the migration process is ongoing, `migration_detail.status` is `syncing`:
+
+ ```json
+ {
+ "migration": {
+ "error": null,
+ "method": "replication",
+ "seconds_behind_master": 0,
+ "source_active": true,
+ "status": "done"
+ },
+ "migration_detail": [
+ {
+ "dbname": "migration",
+ "error": null,
+ "method": "replication",
+ "status": "syncing"
+ }
+ ]
+ }
+ ```
-:::note
-The migration will initially do a bulk-copy of your data, and
-several minutes after that has finished it will use the built-in
-replication feature of MySQL to commence ongoing data copying. You can
-see MySQL's internal status by running `show replica status` on the
-destination database.
+Ongoing replication starts a few minutes after the initial data copy.
+
+:::tip
+Monitor the ongoing replication status by running `show replica status` on the destination
+database.
:::
## Stop the replication
@@ -136,16 +159,12 @@ After confirming that the migration is complete, stop the ongoing replication by
the configuration from the destination service via the `avn service update`
[Aiven CLI command](/docs/tools/cli/service-cli#avn-cli-service-update):
-```shell
+```bash
avn service update --project PROJECT_NAME --remove-option migration DEST_NAME
```
:::warning
If you don't stop the ongoing replication, you might lose data. For example, if you remove
-the data on the migration source, the data is also removed on the migration target as a
-result of the active replication.
+the data on the migration source when the replication is active, the data is also removed
+on the migration target.
:::
-
-
-
-- [Migrate MySQL® databases to Aiven using the Console](/docs/products/mysql/howto/migrate-db-to-aiven-via-console)
diff --git a/static/includes/mydumper-ea.md b/static/includes/mydumper-ea.md
new file mode 100644
index 000000000..08b95589d
--- /dev/null
+++ b/static/includes/mydumper-ea.md
@@ -0,0 +1,7 @@
+:::note[mydumper/myloader]
+`mydumper/myloader` is an
+[early availability feature](/docs/platform/concepts/service-and-feature-releases)
+designed for large database migrations. It offers faster performance and reduced downtime
+compared to `mysqldump`, which can consume significant resources and time when processing
+large datasets.
+:::