

# 将数据从 MySQL 数据库快照迁移到 MariaDB 数据库实例
将数据从 MySQL 数据库快照迁移到 MariaDB 数据库实例

您可使用 Amazon Web Services 管理控制台、Amazon CLI 或 Amazon RDS API 将 RDS for MySQL 数据库快照迁移到运行 MariaDB 的新数据库实例。您必须使用从运行 MySQL 5.6 或 5.7 的 Amazon RDS 数据库实例创建的数据库快照。要了解如何创建 RDS for MySQL 数据库快照，请参阅 [为 Amazon RDS 的单可用区数据库实例创建数据库快照](USER_CreateSnapshot.md)。

迁移快照不会影响从中拍摄快照的原始数据库实例。您可以先测试和验证新数据库实例，然后再将流量转移到该数据库实例以替代原始数据库实例。

在从 MySQL 迁移到 MariaDB 后，MariaDB 数据库实例将与默认数据库参数组和选项组关联。在还原数据库快照后，可以关联新数据库实例的自定义数据库参数组。不过，MariaDB 参数组具有一组不同的可配置系统变量。有关 MySQL 和 MariaDB 系统变量之间差异的信息，请参阅 [MariaDB 和 MySQL 之间的系统变量差异](https://mariadb.com/kb/en/system-variable-differences-between-mariadb-and-mysql/)。要了解数据库参数组，请参阅 [Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。要了解选项组，请参阅[使用选项组](USER_WorkingWithOptionGroups.md)。

## 执行迁移


您可以使用 Amazon Web Services 管理控制台、Amazon CLI 或 RDS API 将 RDS for MySQL 数据库快照迁移到新的 MariaDB 数据库实例。

### 控制台


**将 MySQL 数据库快照迁移到 MariaDB 数据库实例**

1. 登录 Amazon Web Services 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.amazonaws.cn/rds/)。

1. 在导航窗格中，选择**快照**，然后选择您希望迁移的 MySQL 数据库快照。

1. 对于 **Actions**（操作），请选择 **Migrate snapshot**（迁移快照）。随后将显示 **Migrate database**（迁移数据库）页。

1. 对于**迁移到数据库引擎**，选择 **mariadb**。

   Amazon RDS 将自动选择 **DB engine version**（数据库引擎版本）。您不能更改数据库引擎版本。  
![\[Amazon RDS 控制台中用于从 MySQL 迁移到 MariaDB 的迁移数据库页面。\]](http://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/images/MigrateMariaDB.png)

1. 对于其余部分，请指定数据库实例设置。有关每项设置的信息，请参阅 [数据库实例的设置](USER_CreateDBInstance.Settings.md)。

1. 选择 **Migrate**。

### Amazon CLI


要将数据从 MySQL 数据库快照迁移到 MariaDB 数据库实例，请结合以下选项运行 Amazon CLI [https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html](https://docs.amazonaws.cn/cli/latest/reference/rds/restore-db-instance-from-db-snapshot.html) 命令：
+ --db-instance-identifier – 要从数据库快照创建的数据库实例的名称。
+ --db-snapshot-identifier – 要从中还原的数据库快照的标识符。
+ --engine – 要用于新实例的数据库引擎。

**Example**  
对于 Linux、macOS 或 Unix：  

```
1. aws rds restore-db-instance-from-db-snapshot \
2.     --db-instance-identifier newmariadbinstance \
3.     --db-snapshot-identifier mysqlsnapshot \
4.     --engine mariadb
```
对于 Windows：  

```
1. aws rds restore-db-instance-from-db-snapshot ^
2.     --db-instance-identifier newmariadbinstance ^
3.     --db-snapshot-identifier mysqlsnapshot ^
4.     --engine mariadb
```

### API


要将数据从 MySQL 数据库快照迁移到 MariaDB 数据库实例，请调用 Amazon RDS API 操作 [https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_RestoreDBInstanceFromDBSnapshot.html)。

## MariaDB 和 MySQL 之间的不兼容性


MySQL 和 MariaDB 之间的不兼容性包括：
+ 您无法将使用 MySQL 8.0 创建的数据库快照迁移到 MariaDB。
+ 如果源 MySQL 数据库使用 SHA256 密码哈希，请确保先重置经过 SHA256 哈希处理的用户密码，然后再连接到 MariaDB 数据库。以下代码说明如何重置经过 SHA256 哈希处理的密码。

  ```
  SET old_passwords = 0;
  UPDATE mysql.user SET plugin = 'mysql_native_password',
  Password = PASSWORD('new_password')
  WHERE (User, Host) = ('master_user_name', %);
  FLUSH PRIVILEGES;
  ```
+ 如果您的 RDS 主用户账户使用 SHA-256 密码哈希，请确保使用 Amazon Web Services 管理控制台、[https://docs.amazonaws.cn/cli/latest/reference/rds/modify-db-instance.html](https://docs.amazonaws.cn/cli/latest/reference/rds/modify-db-instance.html) Amazon CLI 命令或 [ModifyDBInstance](https://docs.amazonaws.cn/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) RDS API 操作重置密码。有关修改数据库实例的信息，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。
+ MariaDB 不支持 Memcached 插件。不过，Memcached 插件使用的数据将存储为 InnoDB 表。在迁移 MySQL 数据库快照后，您可以使用 SQL 访问由 Memcached 插件使用的数据。有关 innodb\$1memcache 数据库的更多信息，请参阅 [InnoDB 内存缓存插件内部信息](https://dev.mysql.com/doc/refman/8.0/en/innodb-memcached-internals.html)。